code: def test_fields(self):
      fields = collections.OrderedDict(
          [
              ("int_field", DataTypes.INT()),
              ("long_field", DataTypes.BIGINT()),
              ("string_field", DataTypes.STRING()),
              ("timestamp_field", DataTypes.TIMESTAMP(3)),
              ("time_field", DataTypes.TIME()),
              ("date_field", DataTypes.DATE()),
              ("double_field", DataTypes.DOUBLE()),
              ("float_field", DataTypes.FLOAT()),
              ("byte_field", DataTypes.TINYINT()),
              ("short_field", DataTypes.SMALLINT()),
              ("boolean_field", DataTypes.BOOLEAN()),
          ]
      )
  
      schema = Schema().fields(fields)
  
      properties = schema.to_properties()
      expected = {
          "schema.0.name": "int_field",
          "schema.0.data-type": "INT",
          "schema.1.name": "long_field",
          "schema.1.data-type": "BIGINT",
          "schema.2.name": "string_field",
          "schema.2.data-type": "VARCHAR(2147483647)",
          "schema.3.name": "timestamp_field",
          "schema.3.data-type": "TIMESTAMP(3)",
          "schema.4.name": "time_field",
          "schema.4.data-type": "TIME(0)",
          "schema.5.name": "date_field",
          "schema.5.data-type": "DATE",
          "schema.6.name": "double_field",
          "schema.6.data-type": "DOUBLE",
          "schema.7.name": "float_field",
          "schema.7.data-type": "FLOAT",
          "schema.8.name": "byte_field",
          "schema.8.data-type": "TINYINT",
          "schema.9.name": "short_field",
          "schema.9.data-type": "SMALLINT",
          "schema.10.name": "boolean_field",
          "schema.10.data-type": "BOOLEAN",
      }
      self.assertEqual(expected, properties)
  
      if sys.version_info[:2] <= (3, 5):
          fields = {
              "int_field": DataTypes.INT(),
              "long_field": DataTypes.BIGINT(),
              "string_field": DataTypes.STRING(),
              "timestamp_field": DataTypes.TIMESTAMP(3),
              "time_field": DataTypes.TIME(),
              "date_field": DataTypes.DATE(),
              "double_field": DataTypes.DOUBLE(),
              "float_field": DataTypes.FLOAT(),
              "byte_field": DataTypes.TINYINT(),
              "short_field": DataTypes.SMALLINT(),
              "boolean_field": DataTypes.BOOLEAN(),
          }
          self.assertRaises(TypeError, Schema().fields, fields)
  
imports: import collections
  import sys
  from pyflink.table.descriptors import Rowtime, Schema
  from pyflink.table.table_schema import TableSchema
  from pyflink.table.types import DataTypes
  from pyflink.testing.test_case_utils import PyFlinkTestCase
label_desc: Use image node_id 2 for calling the SchemaDescriptorTests obj's underlying member method code with example usage: obj.test_fields() without return types