docstr: target: test table apis
  method:
  1. create tables
      - 'my_table'        √
          - c1 int primary key
          - c2 float
      - 'my_table!@#'     ❌
          - c1 int primary key
          - c2 float
      - 'my-table-dash'   ❌
          - c1 float primary key
          - c2 int
      - '123_table'       ❌
          - c1 int primary key
          - c2 float
      - 'bad_column'      ❌
          - 123 int primary key
          - c2 float
      - ''                ❌
          - c1 int primary key
          - c2 float
  2. list tables
      - 'my_table'
  3. drop tables
      - 'my_table'
  4. list tables: empty
  expect: all operations successfully
docstr_tok: ["target",":","test","table","apis","method",":","1.","create","tables","-","'my_table","'","\u221a","-","c1","int","primary","key","-","c2","float","-","'my_table","!","@","#","'","\u274c","-","c1","int","primary","key","-","c2","float","-","'my-table-dash","'","\u274c","-","c1","float","primary","key","-","c2","int","-","'123_table","'","\u274c","-","c1","int","primary","key","-","c2","float","-","'bad_column","'","\u274c","-","123","int","primary","key","-","c2","float","-","``","\u274c","-","c1","int","primary","key","-","c2","float","2.","list","tables","-","'my_table'","3.","drop","tables","-","'my_table'","4.","list","tables",":","empty","expect",":","all","operations","successfully"]
code: def test_table(self):
      """
      target: test table apis
      method:
      1. create tables
          - 'my_table'        √
              - c1 int primary key
              - c2 float
          - 'my_table!@#'     ❌
              - c1 int primary key
              - c2 float
          - 'my-table-dash'   ❌
              - c1 float primary key
              - c2 int
          - '123_table'       ❌
              - c1 int primary key
              - c2 float
          - 'bad_column'      ❌
              - 123 int primary key
              - c2 float
          - ''                ❌
              - c1 int primary key
              - c2 float
      2. list tables
          - 'my_table'
      3. drop tables
          - 'my_table'
      4. list tables: empty
      expect: all operations successfully
      """
      infinity_obj = infinity.connect(REMOTE_HOST)
      db_obj = infinity_obj.get_database("default")
      db_obj.drop_table("my_table")
  
      # infinity
      tb = db_obj.create_table(
          "my_table", {"c1": "int, primary key", "c2": "float"}, None
      )
      assert tb is not None
  
      try:
          tb = db_obj.create_table(
              "my_table!@#",
              {"c1": "int, primary key", "c2": "float"},
              None,
          )
      except Exception as e:
          print(e)
      try:
          tb = db_obj.create_table(
              "my-table-dash",
              {"c1": "float, primary key", "c2": "int"},
              None,
          )
      except Exception as e:
          print(e)
      try:
          tb = db_obj.create_table(
              "123_table",
              {"c1": "int, primary key", "c1": "float"},
              None,
          )
      except Exception as e:
          print(e)
      try:
          tb = db_obj.create_table(
              "bad_column",
              {"123": "int, primary key", "c2": "float"},
              None,
          )
      except Exception as e:
          print(e)
      try:
          tb = db_obj.create_table(
              "", {"c1": "int, primary key", "c2": "float"}, None
          )
      except Exception as e:
          print(e)
  
      # FIXME: res = db_obj.describe_table("my_table")
  
      res = db_obj.list_tables()
      assert res.success
  
      res = db_obj.drop_table("my_table")
      assert res.success
  
      res = db_obj.list_tables()
      assert res.success
  
      # disconnect
      res = infinity_obj.disconnect()
  
      assert res.success
  
imports: import infinity
  from infinity.common import REMOTE_HOST
label_desc: Use image node_id 2 for calling the TestTable obj's underlying member method code with example usage: obj.test_table() without return types