code: def test_run_attack_data_size(self):
      result = mia.run_attacks(
          get_test_input(100, 80),
          SlicingSpec(by_class=True),
          (AttackType.THRESHOLD_ATTACK,),
      )
      self.assertEqual(
          result.single_attack_results[0].data_size,
          DataSize(ntrain=100, ntest=80),
      )
      self.assertEqual(
          result.single_attack_results[3].data_size,
          DataSize(ntrain=20, ntest=16),
      )
  
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 22 for calling the RunAttacksTest obj's underlying member method code with example usage: obj.test_run_attack_data_size() without return types