@@ -30,7 +30,34 @@ import org.apache.spark.sql.catalyst.analysis.UnresolvedGetField
3030import org .apache .spark .sql .types ._
3131
3232
33- class ExpressionEvaluationSuite extends FunSuite {
33+ class ExpressionEvaluationBaseSuite extends FunSuite {
34+
35+ def evaluate (expression : Expression , inputRow : Row = EmptyRow ): Any = {
36+ expression.eval(inputRow)
37+ }
38+
39+ def checkEvaluation (expression : Expression , expected : Any , inputRow : Row = EmptyRow ): Unit = {
40+ val actual = try evaluate(expression, inputRow) catch {
41+ case e : Exception => fail(s " Exception evaluating $expression" , e)
42+ }
43+ if (actual != expected) {
44+ val input = if (inputRow == EmptyRow ) " " else s " , input: $inputRow"
45+ fail(s " Incorrect Evaluation: $expression, actual: $actual, expected: $expected$input" )
46+ }
47+ }
48+
49+ def checkDoubleEvaluation (
50+ expression : Expression ,
51+ expected : Spread [Double ],
52+ inputRow : Row = EmptyRow ): Unit = {
53+ val actual = try evaluate(expression, inputRow) catch {
54+ case e : Exception => fail(s " Exception evaluating $expression" , e)
55+ }
56+ actual.asInstanceOf [Double ] shouldBe expected
57+ }
58+ }
59+
60+ class ExpressionEvaluationSuite extends ExpressionEvaluationBaseSuite {
3461
3562 test(" literals" ) {
3663 checkEvaluation(Literal (1 ), 1 )
@@ -134,27 +161,6 @@ class ExpressionEvaluationSuite extends FunSuite {
134161 }
135162 }
136163
137- def evaluate (expression : Expression , inputRow : Row = EmptyRow ): Any = {
138- expression.eval(inputRow)
139- }
140-
141- def checkEvaluation (expression : Expression , expected : Any , inputRow : Row = EmptyRow ): Unit = {
142- val actual = try evaluate(expression, inputRow) catch {
143- case e : Exception => fail(s " Exception evaluating $expression" , e)
144- }
145- if (actual != expected) {
146- val input = if (inputRow == EmptyRow ) " " else s " , input: $inputRow"
147- fail(s " Incorrect Evaluation: $expression, actual: $actual, expected: $expected$input" )
148- }
149- }
150-
151- def checkDoubleEvaluation (expression : Expression , expected : Spread [Double ], inputRow : Row = EmptyRow ): Unit = {
152- val actual = try evaluate(expression, inputRow) catch {
153- case e : Exception => fail(s " Exception evaluating $expression" , e)
154- }
155- actual.asInstanceOf [Double ] shouldBe expected
156- }
157-
158164 test(" IN" ) {
159165 checkEvaluation(In (Literal (1 ), Seq (Literal (1 ), Literal (2 ))), true )
160166 checkEvaluation(In (Literal (2 ), Seq (Literal (1 ), Literal (2 ))), true )
@@ -1080,6 +1086,10 @@ class ExpressionEvaluationSuite extends FunSuite {
10801086 checkEvaluation(c1 ^ c2, 3 , row)
10811087 checkEvaluation(~ c1, - 2 , row)
10821088 }
1089+ }
1090+
1091+ // TODO: Make the tests work with codegen.
1092+ class ExpressionEvaluationWithoutCodeGenSuite extends ExpressionEvaluationBaseSuite {
10831093
10841094 test(" CreateStruct" ) {
10851095 val row = Row (1 , 2 , 3 )
0 commit comments