@@ -409,6 +409,44 @@ def test_type_name_parser():
409409 (_type , _length , _scale , _precision , _element_type ) = OrsoTypes .from_name ("ARRAY<TIMESTAMP>" )
410410 assert (_type , _length , _scale , _precision , _element_type ) == (OrsoTypes .ARRAY , None , None , None , OrsoTypes .TIMESTAMP )
411411
412+ def test_type_combinations ():
413+
414+ from orso .types import find_compatible_type
415+
416+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .INTEGER ]) == OrsoTypes .INTEGER
417+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .DOUBLE ]) == OrsoTypes .DOUBLE
418+ assert find_compatible_type ([OrsoTypes .DOUBLE , OrsoTypes .INTEGER ]) == OrsoTypes .DOUBLE
419+ assert find_compatible_type ([OrsoTypes .DOUBLE , OrsoTypes .DOUBLE ]) == OrsoTypes .DOUBLE
420+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .DECIMAL ]) == OrsoTypes .DECIMAL
421+ assert find_compatible_type ([OrsoTypes .DECIMAL , OrsoTypes .INTEGER ]) == OrsoTypes .DECIMAL
422+ assert find_compatible_type ([OrsoTypes .DECIMAL , OrsoTypes .DECIMAL ]) == OrsoTypes .DECIMAL
423+ assert find_compatible_type ([OrsoTypes .DECIMAL , OrsoTypes .DOUBLE ]) == OrsoTypes .DECIMAL
424+ assert find_compatible_type ([OrsoTypes .DOUBLE , OrsoTypes .DECIMAL ]) == OrsoTypes .DECIMAL
425+ assert find_compatible_type ([OrsoTypes .DOUBLE , OrsoTypes .DOUBLE ]) == OrsoTypes .DOUBLE
426+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .TIMESTAMP ]) == OrsoTypes .VARCHAR
427+ assert find_compatible_type ([OrsoTypes .TIMESTAMP , OrsoTypes .INTEGER ]) == OrsoTypes .VARCHAR
428+ assert find_compatible_type ([OrsoTypes .TIMESTAMP , OrsoTypes .TIMESTAMP ]) == OrsoTypes .TIMESTAMP
429+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .VARCHAR ]) == OrsoTypes .VARCHAR
430+ assert find_compatible_type ([OrsoTypes .VARCHAR , OrsoTypes .INTEGER ]) == OrsoTypes .VARCHAR
431+ assert find_compatible_type ([OrsoTypes .VARCHAR , OrsoTypes .VARCHAR ]) == OrsoTypes .VARCHAR
432+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .BLOB ]) == OrsoTypes .BLOB
433+ assert find_compatible_type ([OrsoTypes .BLOB , OrsoTypes .INTEGER ]) == OrsoTypes .BLOB
434+ assert find_compatible_type ([OrsoTypes .BLOB , OrsoTypes .BLOB ]) == OrsoTypes .BLOB
435+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .BOOLEAN ]) == OrsoTypes .INTEGER
436+ assert find_compatible_type ([OrsoTypes .BOOLEAN , OrsoTypes .INTEGER ]) == OrsoTypes .INTEGER
437+ assert find_compatible_type ([OrsoTypes .BOOLEAN , OrsoTypes .BOOLEAN ]) == OrsoTypes .BOOLEAN
438+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .DATE ]) == OrsoTypes .VARCHAR
439+ assert find_compatible_type ([OrsoTypes .DATE , OrsoTypes .INTEGER ]) == OrsoTypes .VARCHAR
440+ assert find_compatible_type ([OrsoTypes .DATE , OrsoTypes .DATE ]) == OrsoTypes .DATE
441+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .ARRAY ]) == OrsoTypes .VARCHAR
442+ assert find_compatible_type ([OrsoTypes .ARRAY , OrsoTypes .INTEGER ]) == OrsoTypes .VARCHAR
443+ assert find_compatible_type ([OrsoTypes .ARRAY , OrsoTypes .ARRAY ]) == OrsoTypes .ARRAY
444+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .STRUCT ]) == OrsoTypes .VARCHAR
445+ assert find_compatible_type ([OrsoTypes .STRUCT , OrsoTypes .INTEGER ]) == OrsoTypes .VARCHAR
446+ assert find_compatible_type ([OrsoTypes .STRUCT , OrsoTypes .STRUCT ]) == OrsoTypes .STRUCT
447+ assert find_compatible_type ([OrsoTypes .INTEGER , OrsoTypes .JSONB ]) == OrsoTypes .VARCHAR
448+
449+
412450if __name__ == "__main__" : # prgama: nocover
413451 from tests import run_tests
414452
0 commit comments