@@ -26,7 +26,7 @@ class HiveTypeCoercionSuite extends FunSuite {
2626 val rules = new HiveTypeCoercion { }
2727 import rules ._
2828
29- test(" tightest common bound for numeric and boolean types" ) {
29+ test(" tightest common bound for types" ) {
3030 def widenTest (t1 : DataType , t2 : DataType , tightestCommon : Option [DataType ]) {
3131 var found = WidenTypes .findTightestCommonType(t1, t2)
3232 assert(found == tightestCommon,
@@ -37,6 +37,9 @@ class HiveTypeCoercionSuite extends FunSuite {
3737 s " Expected $tightestCommon as tightest common type for $t2 and $t1, found $found" )
3838 }
3939
40+ // Null
41+ widenTest(NullType , NullType , Some (NullType ))
42+
4043 // Boolean
4144 widenTest(NullType , BooleanType , Some (BooleanType ))
4245 widenTest(BooleanType , BooleanType , Some (BooleanType ))
@@ -60,12 +63,28 @@ class HiveTypeCoercionSuite extends FunSuite {
6063 widenTest(DoubleType , DoubleType , Some (DoubleType ))
6164
6265 // Integral mixed with floating point.
63- widenTest(NullType , FloatType , Some (FloatType ))
64- widenTest(NullType , DoubleType , Some (DoubleType ))
6566 widenTest(IntegerType , FloatType , Some (FloatType ))
6667 widenTest(IntegerType , DoubleType , Some (DoubleType ))
6768 widenTest(IntegerType , DoubleType , Some (DoubleType ))
6869 widenTest(LongType , FloatType , Some (FloatType ))
6970 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 )
7089 }
7190}
0 commit comments