code: def test_values_dtypes(self) -> None:
      acqf = MockAcquisitionFunction()
  
      for input, d, expected_dtype in [
          (torch.tensor([0.0], dtype=torch.float32), 1, torch.float32),
          (torch.tensor([0.0], dtype=torch.float64), 1, torch.float64),
          (
              [
                  torch.tensor([0.0], dtype=torch.float32),
                  torch.tensor([0.0], dtype=torch.float64),
              ],
              2,
              torch.float64,
          ),
          ([0.0], 1, torch.float64),
          (
              [torch.tensor(0.0, dtype=torch.float32), 0.0],
              2,
              torch.float64,
          ),
      ]:
          with self.subTest(
              input=input, d=d, expected_dtype=expected_dtype
          ):
              self.assertEqual(
                  get_dtype_of_sequence(input), expected_dtype
              )
              ff = FixedFeatureAcquisitionFunction(
                  acqf, d=d, columns=[2], values=input
              )
              self.assertEqual(ff.values.dtype, expected_dtype)
  
file_path: botorch/test/acquisition/test_fixed_feature.py
imports: import torch
  from botorch.acquisition.analytic import ExpectedImprovement
  from botorch.acquisition.fixed_feature import FixedFeatureAcquisitionFunction, get_device_of_sequence, get_dtype_of_sequence
  from botorch.acquisition.monte_carlo import qExpectedImprovement
  from botorch.models import SingleTaskGP
  from botorch.utils.testing import BotorchTestCase, MockAcquisitionFunction
label_desc: Use image node_id 2 for calling the TestFixedFeatureAcquisitionFunction obj's underlying member method code with example usage: obj.test_values_dtypes() without return types