code: def test_char_set(self):
      ignorecase = os.path.normcase("ABC") == os.path.normcase("abc")
      check = self.check_match
      tescases = (
          string.ascii_lowercase + string.digits + string.punctuation
      )
      for c in tescases:
          check(c, "[az]", c in "az")
          check(c, "[!az]", c not in "az")
      # Case insensitive.
      for c in tescases:
          check(c, "[AZ]", (c in "az") and ignorecase)
          check(c, "[!AZ]", (c not in "az") or not ignorecase)
      for c in string.ascii_uppercase:
          check(c, "[az]", (c in "AZ") and ignorecase)
          check(c, "[!az]", (c not in "AZ") or not ignorecase)
      # Repeated same character.
      for c in tescases:
          check(c, "[aa]", c == "a")
      # Special cases.
      for c in tescases:
          check(c, "[^az]", c in "^az")
          check(c, "[[az]", c in "[az")
          check(c, r"[!]]", c != "]")
      check("[", "[")
      check("[]", "[]")
      check("[!", "[!")
      check("[!]", "[!]")
  
imports: import unittest
  import os
  import string
  import warnings
  from fnmatch import fnmatch, fnmatchcase, translate, filter
label_desc: Use image node_id 9 for calling the FnmatchTestCase obj's underlying member method code with example usage: obj.test_char_set() without return types