@@ -38,10 +38,23 @@ trait ExpressionEvalHelper {
3838
3939 protected def checkEvaluation (
4040 expression : Expression , expected : Any , inputRow : InternalRow = EmptyRow ): Unit = {
41- checkEvaluationWithoutCodegen(expression, expected, inputRow)
42- checkEvaluationWithGeneratedMutableProjection(expression, expected, inputRow)
43- checkEvaluationWithGeneratedProjection(expression, expected, inputRow)
44- checkEvaluationWithOptimization(expression, expected, inputRow)
41+ val catalystValue = CatalystTypeConverters .convertToCatalyst(expected)
42+ checkEvaluationWithoutCodegen(expression, catalystValue, inputRow)
43+ checkEvaluationWithGeneratedMutableProjection(expression, catalystValue, inputRow)
44+ checkEvaluationWithGeneratedProjection(expression, catalystValue, inputRow)
45+ checkEvaluationWithOptimization(expression, catalystValue, inputRow)
46+ }
47+
48+ /**
49+ * Check the equality between result of expression and expected value, it will handle
50+ * Array[Byte].
51+ */
52+ protected def checkResult (result : Any , expected : Any ): Boolean = {
53+ (result, expected) match {
54+ case (result : Array [Byte ], expected : Array [Byte ]) =>
55+ java.util.Arrays .equals(result, expected)
56+ case _ => result == expected
57+ }
4558 }
4659
4760 protected def evaluate (expression : Expression , inputRow : InternalRow = EmptyRow ): Any = {
@@ -55,7 +68,7 @@ trait ExpressionEvalHelper {
5568 val actual = try evaluate(expression, inputRow) catch {
5669 case e : Exception => fail(s " Exception evaluating $expression" , e)
5770 }
58- if (actual != expected) {
71+ if (! checkResult( actual, expected) ) {
5972 val input = if (inputRow == EmptyRow ) " " else s " , input: $inputRow"
6073 fail(s " Incorrect evaluation (codegen off): $expression, " +
6174 s " actual: $actual, " +
@@ -83,7 +96,7 @@ trait ExpressionEvalHelper {
8396 }
8497
8598 val actual = plan(inputRow).apply(0 )
86- if (actual != expected) {
99+ if (! checkResult( actual, expected) ) {
87100 val input = if (inputRow == EmptyRow ) " " else s " , input: $inputRow"
88101 fail(s " Incorrect Evaluation: $expression, actual: $actual, expected: $expected$input" )
89102 }
@@ -109,7 +122,7 @@ trait ExpressionEvalHelper {
109122 }
110123
111124 val actual = plan(inputRow)
112- val expectedRow = new GenericRow (Array [Any ](CatalystTypeConverters .convertToCatalyst( expected) ))
125+ val expectedRow = new GenericRow (Array [Any ](expected))
113126 if (actual.hashCode() != expectedRow.hashCode()) {
114127 fail(
115128 s """
0 commit comments