aboutsummaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2019-12-19 13:10:32 +0000
committerHåvard Pettersen <havardpe@oath.com>2019-12-19 13:10:32 +0000
commite18e30a282425a0a82cc29ae9ed306850c84d642 (patch)
tree36c1a2b426869a65f6617a685875a7f3ec3691a8 /eval
parentfee5d99c02e61e3eaac103270076e6982a0e76d4 (diff)
improve testing
Diffstat (limited to 'eval')
-rw-r--r--eval/src/tests/tensor/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/eval/src/tests/tensor/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp b/eval/src/tests/tensor/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp
index 74435491410..a3afb710d1a 100644
--- a/eval/src/tests/tensor/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp
+++ b/eval/src/tests/tensor/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp
@@ -30,14 +30,16 @@ EvalFixture::ParamRepo make_params() {
.add("x3f", spec(float_cells({x(3)}), N()))
.add("x3y2", spec({x(3),y(2)}, N()))
.add("x3y2f", spec(float_cells({x(3),y(2)}), N()))
- .add("xm", spec(x({"1","2","3"}), N()))
+ .add("xm", spec(x({"1","2","3","-1","-2","-3"}), N()))
.add("xmy2", spec({x({"1","2","3"}), y(2)}, N()));
}
EvalFixture::ParamRepo param_repo = make_params();
void verify(const vespalib::string &expr, double expect, size_t expect_optimized_cnt, size_t expect_not_optimized_cnt) {
EvalFixture fixture(prod_engine, expr, param_repo, true);
- EXPECT_EQUAL(fixture.result(), TensorSpec("double").add({}, expect));
+ auto expect_spec = TensorSpec("double").add({}, expect);
+ EXPECT_EQUAL(EvalFixture::ref(expr, param_repo), expect_spec);
+ EXPECT_EQUAL(fixture.result(), expect_spec);
auto info = fixture.find_all<DenseTensorPeekFunction>();
EXPECT_EQUAL(info.size(), expect_optimized_cnt);
for (size_t i = 0; i < info.size(); ++i) {
@@ -53,6 +55,7 @@ TEST("require that tensor peek can be optimized for dense tensors") {
TEST_DO(verify("x3{x:(a)}", 2.0, 1, 0));
TEST_DO(verify("x3f{x:(c-1)}", 3.0, 1, 0));
TEST_DO(verify("x3{x:(c+5)}", 0.0, 1, 0));
+ TEST_DO(verify("x3{x:(a-2)}", 0.0, 1, 0));
TEST_DO(verify("x3y2{x:(a),y:(a-1)}", 3.0, 1, 0));
TEST_DO(verify("x3y2f{x:1,y:(a)}", 4.0, 1, 0));
TEST_DO(verify("x3y2f{x:(a-1),y:(b)}", 0.0, 1, 0));
@@ -70,4 +73,13 @@ TEST("require that tensor peek is not optimized for mixed tensor") {
TEST_DO(verify("xmy2{x:(a),y:(b)}", 0.0, 0, 1));
}
+TEST("require that indexes are rounded to nearest integer") {
+ TEST_DO(verify("x3{x:(a-0.3)}", 2.0, 1, 0));
+ TEST_DO(verify("x3{x:(a+0.3)}", 2.0, 1, 0));
+ TEST_DO(verify("xm{x:(a-0.3)}", 1.0, 0, 1));
+ TEST_DO(verify("xm{x:(a+0.3)}", 1.0, 0, 1));
+ TEST_DO(verify("xm{x:(-a-0.3)}", 4.0, 0, 1));
+ TEST_DO(verify("xm{x:(-a+0.3)}", 4.0, 0, 1));
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }