@@ -26,7 +26,7 @@ class HiveTypeCoercionSuite extends FunSuite {
26
26
val rules = new HiveTypeCoercion { }
27
27
import rules ._
28
28
29
- test(" tightest common bound for numeric and boolean types" ) {
29
+ test(" tightest common bound for types" ) {
30
30
def widenTest (t1 : DataType , t2 : DataType , tightestCommon : Option [DataType ]) {
31
31
var found = WidenTypes .findTightestCommonType(t1, t2)
32
32
assert(found == tightestCommon,
@@ -37,6 +37,9 @@ class HiveTypeCoercionSuite extends FunSuite {
37
37
s " Expected $tightestCommon as tightest common type for $t2 and $t1, found $found" )
38
38
}
39
39
40
+ // Null
41
+ widenTest(NullType , NullType , Some (NullType ))
42
+
40
43
// Boolean
41
44
widenTest(NullType , BooleanType , Some (BooleanType ))
42
45
widenTest(BooleanType , BooleanType , Some (BooleanType ))
@@ -60,12 +63,28 @@ class HiveTypeCoercionSuite extends FunSuite {
60
63
widenTest(DoubleType , DoubleType , Some (DoubleType ))
61
64
62
65
// Integral mixed with floating point.
63
- widenTest(NullType , FloatType , Some (FloatType ))
64
- widenTest(NullType , DoubleType , Some (DoubleType ))
65
66
widenTest(IntegerType , FloatType , Some (FloatType ))
66
67
widenTest(IntegerType , DoubleType , Some (DoubleType ))
67
68
widenTest(IntegerType , DoubleType , Some (DoubleType ))
68
69
widenTest(LongType , FloatType , Some (FloatType ))
69
70
widenTest(LongType , DoubleType , Some (DoubleType ))
71
+
72
+ // StringType
73
+ widenTest(NullType , StringType , Some (StringType ))
74
+ widenTest(StringType , StringType , Some (StringType ))
75
+ widenTest(IntegerType , StringType , None )
76
+ widenTest(LongType , StringType , None )
77
+
78
+ // TimestampType
79
+ widenTest(NullType , TimestampType , Some (TimestampType ))
80
+ widenTest(TimestampType , TimestampType , Some (TimestampType ))
81
+ widenTest(IntegerType , TimestampType , None )
82
+ widenTest(StringType , TimestampType , None )
83
+
84
+ // ComplexType
85
+ widenTest(NullType , MapType (IntegerType , StringType , false ), Some (MapType (IntegerType , StringType , false )))
86
+ widenTest(NullType , StructType (Seq ()), Some (StructType (Seq ())))
87
+ widenTest(StringType , MapType (IntegerType , StringType , true ), None )
88
+ widenTest(ArrayType (IntegerType ), StructType (Seq ()), None )
70
89
}
71
90
}
0 commit comments