code: def test_run_attack_trained_calculates_correct_epsilon(
      self,
      epsilon_methods,
      expected_max_method,
      attack_type,
  ):
      logits_train = np.ones((1000, 5))
      logits_test = np.zeros((100, 5))
      # The prediction would be all 1 for training and all 0 for test.
      expected_bounds = {
          elb.BoundMethod.KATZ_LOG: [
              5.27530977,
              2.97796578,
              -0.00720554,
              -0.01623037,
          ],
          elb.BoundMethod.ADJUSTED_LOG: [
              5.27580935,
              2.98292432,
              -0.00717236,
              -0.01614769,
              -7.62368550,
          ],
          elb.BoundMethod.BAILEY: [
              5.87410287,
              3.57903543,
              -0.00718316,
              -0.01625286,
          ],
          elb.BoundMethod.INV_SINH: [
              4.95123977,
              2.65964282,
              -0.00720547,
              -0.01623030,
          ],
          elb.BoundMethod.CLOPPER_PEARSON: [
              5.56738762,
              3.31454626,
          ],
      }
      with mock.patch.object(mia, "EPSILON_METHODS", epsilon_methods):
          result = mia._run_attack(
              AttackInputData(logits_train, logits_test),
              attack_type,
          )
          self.assertCountEqual(
              result.epsilon_lower_bound_value.bounds.keys(),
              epsilon_methods,
          )
          for key in epsilon_methods:
              np.testing.assert_almost_equal(
                  result.epsilon_lower_bound_value.bounds[key],
                  expected_bounds[key],
              )
          np.testing.assert_almost_equal(
              result.epsilon_lower_bound_value.get_max_epsilon_bounds(),
              expected_bounds[expected_max_method],
          )
  
imports: from unittest import mock
  from absl.testing import absltest
  from absl.testing import parameterized
  import numpy
  from tensorflow_privacy.privacy.privacy_tests import epsilon_lower_bound
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack import membership_inference_attack
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack import models
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import AttackInputData
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import AttackType
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import DataSize
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import SingleSliceSpec
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import SlicingFeature
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import SlicingSpec
label_desc: Use image node_id 18 for calling the RunAttacksTest obj's underlying member method code with example usage: obj.test_run_attack_trained_calculates_correct_epsilon(epsilon_methods, expected_max_method, attack_type) without return types