66from datetime import date , datetime , time
77from decimal import Decimal
88
9- from databricks .sql .conversion import SqlType , SqlTypeConverter
9+ from databricks .sql .backend . sea . conversion import SqlType , SqlTypeConverter
1010
1111
1212class TestSqlType (unittest .TestCase ):
@@ -15,48 +15,40 @@ class TestSqlType(unittest.TestCase):
1515 def test_is_numeric (self ):
1616 """Test the is_numeric method."""
1717 self .assertTrue (SqlType .is_numeric (SqlType .INT ))
18- self .assertTrue (SqlType .is_numeric (SqlType .TINYINT ))
19- self .assertTrue (SqlType .is_numeric (SqlType .SMALLINT ))
20- self .assertTrue (SqlType .is_numeric (SqlType .BIGINT ))
18+ self .assertTrue (SqlType .is_numeric (SqlType .BYTE ))
19+ self .assertTrue (SqlType .is_numeric (SqlType .SHORT ))
20+ self .assertTrue (SqlType .is_numeric (SqlType .LONG ))
2121 self .assertTrue (SqlType .is_numeric (SqlType .FLOAT ))
2222 self .assertTrue (SqlType .is_numeric (SqlType .DOUBLE ))
2323 self .assertTrue (SqlType .is_numeric (SqlType .DECIMAL ))
24- self .assertTrue (SqlType .is_numeric (SqlType .NUMERIC ))
2524 self .assertFalse (SqlType .is_numeric (SqlType .BOOLEAN ))
2625 self .assertFalse (SqlType .is_numeric (SqlType .STRING ))
2726 self .assertFalse (SqlType .is_numeric (SqlType .DATE ))
2827
2928 def test_is_boolean (self ):
3029 """Test the is_boolean method."""
3130 self .assertTrue (SqlType .is_boolean (SqlType .BOOLEAN ))
32- self .assertTrue (SqlType .is_boolean (SqlType .BIT ))
3331 self .assertFalse (SqlType .is_boolean (SqlType .INT ))
3432 self .assertFalse (SqlType .is_boolean (SqlType .STRING ))
3533
3634 def test_is_datetime (self ):
3735 """Test the is_datetime method."""
3836 self .assertTrue (SqlType .is_datetime (SqlType .DATE ))
39- self .assertTrue (SqlType .is_datetime (SqlType .TIME ))
4037 self .assertTrue (SqlType .is_datetime (SqlType .TIMESTAMP ))
41- self .assertTrue (SqlType .is_datetime (SqlType .TIMESTAMP_NTZ ))
42- self .assertTrue (SqlType .is_datetime (SqlType .TIMESTAMP_LTZ ))
43- self .assertTrue (SqlType .is_datetime (SqlType .TIMESTAMP_TZ ))
38+ self .assertTrue (SqlType .is_datetime (SqlType .INTERVAL ))
4439 self .assertFalse (SqlType .is_datetime (SqlType .INT ))
4540 self .assertFalse (SqlType .is_datetime (SqlType .STRING ))
4641
4742 def test_is_string (self ):
4843 """Test the is_string method."""
4944 self .assertTrue (SqlType .is_string (SqlType .CHAR ))
50- self .assertTrue (SqlType .is_string (SqlType .VARCHAR ))
5145 self .assertTrue (SqlType .is_string (SqlType .STRING ))
52- self .assertTrue (SqlType .is_string (SqlType .TEXT ))
5346 self .assertFalse (SqlType .is_string (SqlType .INT ))
5447 self .assertFalse (SqlType .is_string (SqlType .DATE ))
5548
5649 def test_is_binary (self ):
5750 """Test the is_binary method."""
5851 self .assertTrue (SqlType .is_binary (SqlType .BINARY ))
59- self .assertTrue (SqlType .is_binary (SqlType .VARBINARY ))
6052 self .assertFalse (SqlType .is_binary (SqlType .INT ))
6153 self .assertFalse (SqlType .is_binary (SqlType .STRING ))
6254
@@ -75,9 +67,9 @@ class TestSqlTypeConverter(unittest.TestCase):
7567 def test_numeric_conversions (self ):
7668 """Test numeric type conversions."""
7769 self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .INT ), 123 )
78- self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .TINYINT ), 123 )
79- self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .SMALLINT ), 123 )
80- self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .BIGINT ), 123 )
70+ self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .BYTE ), 123 )
71+ self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .SHORT ), 123 )
72+ self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .LONG ), 123 )
8173 self .assertEqual (
8274 SqlTypeConverter .convert_value ("123.45" , SqlType .FLOAT ), 123.45
8375 )
@@ -113,9 +105,6 @@ def test_datetime_conversions(self):
113105 SqlTypeConverter .convert_value ("2023-01-15" , SqlType .DATE ),
114106 date (2023 , 1 , 15 ),
115107 )
116- self .assertEqual (
117- SqlTypeConverter .convert_value ("14:30:45" , SqlType .TIME ), time (14 , 30 , 45 )
118- )
119108 self .assertEqual (
120109 SqlTypeConverter .convert_value ("2023-01-15 14:30:45" , SqlType .TIMESTAMP ),
121110 datetime (2023 , 1 , 15 , 14 , 30 , 45 ),
@@ -124,15 +113,19 @@ def test_datetime_conversions(self):
124113 def test_string_conversions (self ):
125114 """Test string type conversions."""
126115 self .assertEqual (SqlTypeConverter .convert_value ("test" , SqlType .STRING ), "test" )
116+ self .assertEqual (SqlTypeConverter .convert_value ("test" , SqlType .CHAR ), "test" )
117+
118+ def test_binary_conversions (self ):
119+ """Test binary type conversions."""
120+ hex_str = "68656c6c6f" # "hello" in hex
121+ expected_bytes = b"hello"
122+
127123 self .assertEqual (
128- SqlTypeConverter .convert_value ("test" , SqlType .VARCHAR ), "test"
124+ SqlTypeConverter .convert_value (hex_str , SqlType .BINARY ), expected_bytes
129125 )
130- self .assertEqual (SqlTypeConverter .convert_value ("test" , SqlType .CHAR ), "test" )
131- self .assertEqual (SqlTypeConverter .convert_value ("test" , SqlType .TEXT ), "test" )
132126
133127 def test_error_handling (self ):
134128 """Test error handling in conversions."""
135- # Test invalid conversions - should return original value
136129 self .assertEqual (SqlTypeConverter .convert_value ("abc" , SqlType .INT ), "abc" )
137130 self .assertEqual (SqlTypeConverter .convert_value ("abc" , SqlType .FLOAT ), "abc" )
138131 self .assertEqual (SqlTypeConverter .convert_value ("abc" , SqlType .DECIMAL ), "abc" )
@@ -155,6 +148,10 @@ def test_complex_type_handling(self):
155148 self .assertEqual (
156149 SqlTypeConverter .convert_value ('{"a": 1}' , "struct<a:int>" ), '{"a": 1}'
157150 )
151+ self .assertEqual (
152+ SqlTypeConverter .convert_value ('{"a": 1}' , SqlType .USER_DEFINED_TYPE ),
153+ '{"a": 1}' ,
154+ )
158155
159156
160157if __name__ == "__main__" :
0 commit comments