def test_convert_type(self):
        # no conversion needed
        self.assertEqual('BOOLEAN', convert_type('BOOLEAN', 'BOOLEAN'))
        self.assertEqual('INTEGER', convert_type('INTEGER', 'INTEGER'))
        self.assertEqual('FLOAT', convert_type('FLOAT', 'FLOAT'))
        self.assertEqual('STRING', convert_type('STRING', 'STRING'))
        self.assertEqual('DATE', convert_type('DATE', 'DATE'))
        self.assertEqual('RECORD', convert_type('RECORD', 'RECORD'))

        # quoted and unquoted versions of the same type
        self.assertEqual('BOOLEAN', convert_type('BOOLEAN', 'QBOOLEAN'))
        self.assertEqual('BOOLEAN', convert_type('QBOOLEAN', 'BOOLEAN'))
        self.assertEqual('INTEGER', convert_type('INTEGER', 'QINTEGER'))
        self.assertEqual('INTEGER', convert_type('QINTEGER', 'INTEGER'))
        self.assertEqual('FLOAT', convert_type('FLOAT', 'QFLOAT'))
        self.assertEqual('FLOAT', convert_type('QFLOAT', 'FLOAT'))

        # [Q]INTEGER and [Q]FLOAT conversions
        self.assertEqual('FLOAT', convert_type('INTEGER', 'FLOAT'))
        self.assertEqual('FLOAT', convert_type('INTEGER', 'QFLOAT'))
        self.assertEqual('FLOAT', convert_type('QINTEGER', 'FLOAT'))
        self.assertEqual('QFLOAT', convert_type('QINTEGER', 'QFLOAT'))
        self.assertEqual('FLOAT', convert_type('FLOAT', 'INTEGER'))
        self.assertEqual('FLOAT', convert_type('FLOAT', 'QINTEGER'))
        self.assertEqual('FLOAT', convert_type('QFLOAT', 'INTEGER'))
        self.assertEqual('QFLOAT', convert_type('QFLOAT', 'QINTEGER'))

        # quoted and STRING conversions
        self.assertEqual('STRING', convert_type('STRING', 'QBOOLEAN'))
        self.assertEqual('STRING', convert_type('STRING', 'QINTEGER'))
        self.assertEqual('STRING', convert_type('STRING', 'QFLOAT'))
        self.assertEqual('STRING', convert_type('QBOOLEAN', 'STRING'))
        self.assertEqual('STRING', convert_type('QINTEGER', 'STRING'))
        self.assertEqual('STRING', convert_type('QFLOAT', 'STRING'))

        # quoted and DATE conversions
        self.assertEqual('STRING', convert_type('DATE', 'QBOOLEAN'))
        self.assertEqual('STRING', convert_type('DATE', 'QINTEGER'))
        self.assertEqual('STRING', convert_type('DATE', 'QFLOAT'))
        self.assertEqual('STRING', convert_type('QBOOLEAN', 'DATE'))
        self.assertEqual('STRING', convert_type('QINTEGER', 'DATE'))
        self.assertEqual('STRING', convert_type('QFLOAT', 'DATE'))

        # quoted and TIME conversions
        self.assertEqual('STRING', convert_type('TIME', 'QBOOLEAN'))
        self.assertEqual('STRING', convert_type('TIME', 'QINTEGER'))
        self.assertEqual('STRING', convert_type('TIME', 'QFLOAT'))
        self.assertEqual('STRING', convert_type('QBOOLEAN', 'TIME'))
        self.assertEqual('STRING', convert_type('QINTEGER', 'TIME'))
        self.assertEqual('STRING', convert_type('QFLOAT', 'TIME'))

        # quoted and TIMESTAMP conversions
        self.assertEqual('STRING', convert_type('TIMESTAMP', 'QBOOLEAN'))
        self.assertEqual('STRING', convert_type('TIMESTAMP', 'QINTEGER'))
        self.assertEqual('STRING', convert_type('TIMESTAMP', 'QFLOAT'))
        self.assertEqual('STRING', convert_type('QBOOLEAN', 'TIMESTAMP'))
        self.assertEqual('STRING', convert_type('QINTEGER', 'TIMESTAMP'))
        self.assertEqual('STRING', convert_type('QFLOAT', 'TIMESTAMP'))

        # DATE, TIME, and TIMESTAMP conversions
        self.assertEqual('STRING', convert_type('DATE', 'TIME'))
        self.assertEqual('STRING', convert_type('DATE', 'TIMESTAMP'))
        self.assertEqual('STRING', convert_type('DATE', 'STRING'))
        self.assertEqual('STRING', convert_type('TIME', 'TIMESTAMP'))
        self.assertEqual('STRING', convert_type('TIME', 'STRING'))
        self.assertEqual('STRING', convert_type('TIMESTAMP', 'STRING'))

        # no conversion possible
        self.assertEqual(None, convert_type('INTEGER', 'BOOLEAN'))
        self.assertEqual(None, convert_type('QINTEGER', 'BOOLEAN'))
        self.assertEqual(None, convert_type('INTEGER', 'QBOOLEAN'))
        self.assertEqual(None, convert_type('FLOAT', 'BOOLEAN'))
        self.assertEqual(None, convert_type('QFLOAT', 'BOOLEAN'))
        self.assertEqual(None, convert_type('FLOAT', 'QBOOLEAN'))
        self.assertEqual(None, convert_type('FLOAT', 'STRING'))
        self.assertEqual(None, convert_type('STRING', 'BOOLEAN'))
        self.assertEqual(None, convert_type('BOOLEAN', 'DATE'))
        self.assertEqual(None, convert_type('BOOLEAN', 'RECORD'))
Exemple #2
0
    def test_convert_type(self):
        # no conversion needed
        self.assertEqual('INTEGER', convert_type('INTEGER', 'INTEGER'))
        self.assertEqual('FLOAT', convert_type('FLOAT', 'FLOAT'))
        self.assertEqual('STRING', convert_type('STRING', 'STRING'))
        self.assertEqual('BOOLEAN', convert_type('BOOLEAN', 'BOOLEAN'))
        self.assertEqual('DATE', convert_type('DATE', 'DATE'))
        self.assertEqual('RECORD', convert_type('RECORD', 'RECORD'))

        # conversions
        self.assertEqual('FLOAT', convert_type('INTEGER', 'FLOAT'))
        self.assertEqual('FLOAT', convert_type('FLOAT', 'INTEGER'))
        self.assertEqual('STRING', convert_type('DATE', 'TIME'))
        self.assertEqual('STRING', convert_type('DATE', 'TIMESTAMP'))
        self.assertEqual('STRING', convert_type('DATE', 'STRING'))
        self.assertEqual('STRING', convert_type('TIME', 'TIMESTAMP'))
        self.assertEqual('STRING', convert_type('TIME', 'STRING'))
        self.assertEqual('STRING', convert_type('TIMESTAMP', 'STRING'))

        # no conversion possible
        self.assertEqual(None, convert_type('INTEGER', 'BOOLEAN'))
        self.assertEqual(None, convert_type('FLOAT', 'STRING'))
        self.assertEqual(None, convert_type('STRING', 'BOOLEAN'))
        self.assertEqual(None, convert_type('BOOLEAN', 'DATE'))
        self.assertEqual(None, convert_type('BOOLEAN', 'RECORD'))