code: def test_FullFactorialValidation(self) -> None:
      # Raise error because cardinality exceeds max cardinality
      generator = FullFactorialGenerator(
          max_cardinality=5, check_cardinality=True
      )
      parameter_values = [[1, 2], ["foo", "bar"], [True, False]]
      with self.assertRaises(ValueError):
          generated_points, weights, _ = generator.gen(
              n=-1,
              # pyre-fixme[6]: For 2nd param expected `List[List[Union[None, bool,
              #  float, int, str]]]` but got `List[Union[List[bool], List[int],
              #  List[str]]]`.
              parameter_values=parameter_values,
              objective_weights=np.ones(1),
          )
  
      # Raise error because n != -1
      generator = FullFactorialGenerator()
      parameter_values = [[1, 2], ["foo", "bar"]]
      with self.assertRaises(ValueError):
          generated_points, weights, _ = generator.gen(
              n=5,
              # pyre-fixme[6]: For 2nd param expected `List[List[Union[None, bool,
              #  float, int, str]]]` but got `List[Union[List[int], List[str]]]`.
              parameter_values=parameter_values,
              objective_weights=np.ones(1),
          )
  
imports: import numpy
  from ax.models.discrete.full_factorial import FullFactorialGenerator
  from ax.utils.common.testutils import TestCase
label_desc: Use image node_id 2 for calling the FullFactorialGeneratorTest obj's underlying member method code with example usage: obj.test_FullFactorialValidation() without return types