code: def test_three_channels(self):
      clip_values = (0, 1)
      x = np.random.rand(2, 32, 32, 3)
      x_original = x.copy()
      preprocess = TotalVarMin(clip_values=clip_values)
      x_preprocessed, _ = preprocess(x)
      self.assertEqual(x_preprocessed.shape, x.shape)
      self.assertTrue((x_preprocessed >= clip_values[0]).all())
      self.assertTrue((x_preprocessed <= clip_values[1]).all())
      self.assertFalse((x_preprocessed == x).all())
      # Check that x has not been modified by attack and classifier
      self.assertAlmostEqual(
          float(np.max(np.abs(x_original - x))), 0.0, delta=0.00001
      )
  
file_path: adversarial-robustness-toolbox/tests/defences/test_variance_minimization.py
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import unittest
  import numpy
  from art.defences.preprocessor import TotalVarMin
  from tests.utils import master_seed
label_desc: Use image node_id 3 for calling the TestTotalVarMin obj's underlying member method code with example usage: obj.test_three_channels() without return types