code: def test_project_to_sample_points(self):
      for batch_shape, dtype in itertools.product(
          ([], [2]), (torch.float, torch.double)
      ):
          q, d, p, d_prime = 1, 12, 7, 4
          X = torch.rand(
              *batch_shape, q, d, device=self.device, dtype=dtype
          )
          sample_points = torch.rand(
              p, d_prime, device=self.device, dtype=dtype
          )
          X_augmented = project_to_sample_points(
              X=X, sample_points=sample_points
          )
          self.assertEqual(
              X_augmented.shape, torch.Size(batch_shape + [p, d])
          )
          if batch_shape == [2]:
              self.assertAllClose(
                  X_augmented[0, :, -d_prime:], sample_points
              )
          else:
              self.assertAllClose(
                  X_augmented[:, -d_prime:], sample_points
              )
  
imports: import itertools
  from unittest import mock
  from unittest.mock import patch
  import torch
  from botorch.acquisition.objective import GenericMCObjective, LearnedObjective
  from botorch.acquisition.utils import compute_best_feasible_objective, expand_trace_observations, get_acquisition_function, get_infeasible_cost, get_optimal_samples, project_to_sample_points, project_to_target_fidelity, prune_inferior_points, repeat_to_match_aug_dim
  from botorch.exceptions.errors import BotorchTensorDimensionError, DeprecationError, UnsupportedError
  from botorch.models import SingleTaskGP
  from botorch.utils.testing import BotorchTestCase, MockModel, MockPosterior
  from gpytorch.distributions import MultivariateNormal
label_desc: Use image node_id 3 for calling the TestFidelityUtils obj's underlying member method code with example usage: obj.test_project_to_sample_points() without return types