code: def test_normalize_linear_constraints_wrong_dtype(self):
      for dtype in (torch.float, torch.double):
          with self.subTest(dtype=dtype):
              tkwargs = {"device": self.device, "dtype": dtype}
              constraints = [
                  (
                      torch.ones(
                          3, dtype=torch.float, device=self.device
                      ),
                      torch.ones(3, **tkwargs),
                      1.0,
                  )
              ]
              bounds = torch.zeros(2, 4, **tkwargs)
              msg = "tensors used as indices must be long, byte or bool tensors"
              with self.assertRaises(IndexError, msg=msg):
                  normalize_linear_constraints(bounds, constraints)
  
imports: from __future__ import annotations
  import itertools
  import warnings
  from typing import Any, Dict, Type
  from unittest import mock
  import numpy
  import torch
  from botorch.exceptions.errors import BotorchError
  from botorch.models.gp_regression import SingleTaskGP
  from botorch.sampling.pathwise import draw_matheron_paths
  from botorch.utils.sampling import _convert_bounds_to_inequality_constraints, batched_multinomial, DelaunayPolytopeSampler, draw_sobol_samples, find_interior_point, get_polytope_samples, HitAndRunPolytopeSampler, manual_seed, normalize_linear_constraints, optimize_posterior_samples, PolytopeSampler, sample_hypersphere, sample_simplex, sparse_to_dense_constraints
  from botorch.utils.testing import BotorchTestCase
label_desc: Use image node_id 8 for calling the TestSampleUtils obj's underlying member method code with example usage: obj.test_normalize_linear_constraints_wrong_dtype() without return types