| 1064 | } |
| 1065 | |
| 1066 | void ExpectExecute(Expression expr, Datum in, Datum* actual_out = NULLPTR) { |
| 1067 | std::shared_ptr<Schema> schm; |
| 1068 | if (in.is_value()) { |
| 1069 | ASSERT_OK_AND_ASSIGN(expr, expr.Bind(in.type())); |
| 1070 | schm = schema(in.type()->fields()); |
| 1071 | } else { |
| 1072 | ASSERT_OK_AND_ASSIGN(expr, expr.Bind(*in.schema())); |
| 1073 | schm = in.schema(); |
| 1074 | } |
| 1075 | |
| 1076 | ASSERT_OK_AND_ASSIGN(Datum actual, ExecuteScalarExpression(expr, *schm, in)); |
| 1077 | |
| 1078 | ASSERT_OK_AND_ASSIGN(Datum expected, NaiveExecuteScalarExpression(expr, in)); |
| 1079 | |
| 1080 | AssertDatumsEqual(actual, expected, /*verbose=*/true); |
| 1081 | |
| 1082 | if (actual_out) { |
| 1083 | *actual_out = actual; |
| 1084 | } |
| 1085 | } |
| 1086 | |
| 1087 | TEST(Expression, ExecuteCall) { |
| 1088 | ExpectExecute(add(field_ref("a"), literal(3.5)), |
no test coverage detected