code: def test_GenerateSobolPoints(self) -> None:
      bounds = [(0.0, 1.0) for _ in range(3)]
      linear_constraints = (
          torch.tensor([[1, -1, 0]], dtype=torch.double),
          torch.tensor([[0]], dtype=torch.double),
      )
  
      def test_rounding_func(x: Tensor) -> Tensor:
          return x
  
      gen_sobol = _generate_sobol_points(
          n_sobol=100,
          bounds=bounds,
          device=torch.device("cpu"),
          linear_constraints=linear_constraints,
          rounding_func=test_rounding_func,
      )
      self.assertEqual(len(gen_sobol), 100)
      self.assertIsInstance(gen_sobol, Tensor)
  
file_path: Ax/ax/models/tests/test_torch_model_utils.py
imports: import numpy
  import torch
  from ax.exceptions.model import ModelError
  from ax.models.torch.utils import _generate_sobol_points, is_noiseless, normalize_indices, subset_model, tensor_callable_to_array_callable
  from ax.utils.common.testutils import TestCase
  from botorch.models import HeteroskedasticSingleTaskGP, ModelListGP, SingleTaskGP
  from torch import Tensor
label_desc: Use image node_id 4 for calling the TorchUtilsTest obj's underlying member method code with example usage: obj.test_GenerateSobolPoints() and returns: x