code: def test_constant_and_empty_validation():
      df = pd.DataFrame(
          [
              {
                  "phone": random.randint(1, 99999999999),
                  "a": 1,
                  "b": None,
                  "c": 0,
              }
          ]
          * 995
          + [
              {
                  "phone": random.randint(1, 99999999999),
                  "a": 2,
                  "b": 3,
                  "c": 1,
              }
          ]
          * 5
      )
      dataset = Dataset("test4", df=df)  # type: ignore
      dataset.meaning_types = {
          "phone": FileColumnMeaningType.MSISDN,
          "a": FileColumnMeaningType.FEATURE,
          "b": FileColumnMeaningType.FEATURE,
      }
      warnings_counter = WarningCounter()
      features_to_drop = FeaturesValidator().validate(
          df, ["a", "b", "c"], warnings_counter
      )
      assert features_to_drop == ["a", "b", "c"]
  
imports: import ipaddress
  import random
  from datetime import date, datetime
  import numpy
  import pandas
  import pytest
  from pandas.testing import assert_frame_equal
  from upgini import Dataset, FileColumnMeaningType
  from upgini.errors import ValidationError
  from upgini.metadata import ModelTaskType, SearchKey
  from upgini.resource_bundle import bundle
  from upgini.utils.datetime_utils import DateTimeSearchKeyConverter
  from upgini.utils.email_utils import EmailSearchKeyConverter
  from upgini.utils.features_validator import FeaturesValidator
  from upgini.utils.warning_counter import WarningCounter
label_desc: Use image node_id 12 for calling a global function with example usage: test_constant_and_empty_validation() without return types