code: def test_underscores(self):
      for lit in VALID_UNDERSCORE_LITERALS:
          if any(ch in lit for ch in ".eEjJ"):
              continue
          self.assertEqual(int(lit, 0), eval(lit))
          self.assertEqual(int(lit, 0), int(lit.replace("_", ""), 0))
      for lit in INVALID_UNDERSCORE_LITERALS:
          if any(ch in lit for ch in ".eEjJ"):
              continue
          self.assertRaises(ValueError, int, lit, 0)
      # Additional test cases with bases != 0, only for the constructor:
      self.assertEqual(int("1_00", 3), 9)
      self.assertEqual(int("0_100"), 100)  # not valid as a literal!
      self.assertEqual(int(b"1_00"), 100)  # byte underscore
      self.assertRaises(ValueError, int, "_100")
      self.assertRaises(ValueError, int, "+_100")
      self.assertRaises(ValueError, int, "1__00")
      self.assertRaises(ValueError, int, "100_")
  
imports: import sys
  import time
  import unittest
  from unittest import mock
  from test import support
  from test.test_grammar import VALID_UNDERSCORE_LITERALS, INVALID_UNDERSCORE_LITERALS
label_desc: Use image node_id 4 for calling the IntTestCases obj's underlying member method code with example usage: obj.test_underscores() without return types