diff options
author | Håvard Pettersen <havardpe@oath.com> | 2022-01-27 14:04:23 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2022-01-27 14:04:23 +0000 |
commit | 60509c2e8703d671899ecac71c294791b19f45c5 (patch) | |
tree | 132f581790ff7dd3b8eb571bbb2da666193c30e5 /searchlib/src/tests/fef/object_passing/object_passing_test.cpp | |
parent | 941d3a6d4d8c1a710669d7dfe0609300833fe6e6 (diff) |
auto-unbox scalar results from interpreted ranking expressions
Diffstat (limited to 'searchlib/src/tests/fef/object_passing/object_passing_test.cpp')
-rw-r--r-- | searchlib/src/tests/fef/object_passing/object_passing_test.cpp | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/searchlib/src/tests/fef/object_passing/object_passing_test.cpp b/searchlib/src/tests/fef/object_passing/object_passing_test.cpp index 46aaf7369e3..3639da05b9e 100644 --- a/searchlib/src/tests/fef/object_passing/object_passing_test.cpp +++ b/searchlib/src/tests/fef/object_passing/object_passing_test.cpp @@ -79,7 +79,8 @@ struct Fixture { explicit Fixture() { factory.addPrototype(std::make_shared<ValueBlueprint>()); factory.addPrototype(std::make_shared<UnboxBlueprint>()); - factory.addPrototype(std::make_shared<ProxyBlueprint>("box", Blueprint::AcceptInput::NUMBER, true)); + factory.addPrototype(std::make_shared<ProxyBlueprint>("do_box", Blueprint::AcceptInput::NUMBER, true)); + factory.addPrototype(std::make_shared<ProxyBlueprint>("do_unbox", Blueprint::AcceptInput::OBJECT, false)); factory.addPrototype(std::make_shared<ProxyBlueprint>("maybe_box", Blueprint::AcceptInput::ANY, true)); factory.addPrototype(std::make_shared<ProxyBlueprint>("maybe_unbox", Blueprint::AcceptInput::ANY, false)); } @@ -106,26 +107,33 @@ struct Fixture { }; TEST_F("require that values can be boxed and unboxed", Fixture()) { - EXPECT_EQUAL(3.0, f1.eval("box(value(3))")); - EXPECT_EQUAL(0.0, f1.eval("box(value(3)).was_object")); - EXPECT_EQUAL(3.0, f1.eval("unbox(box(value(3)))")); - EXPECT_EQUAL(1.0, f1.eval("maybe_unbox(box(value(3))).was_object")); - EXPECT_EQUAL(3.0, f1.eval("box(unbox(box(value(3))))")); - EXPECT_EQUAL(0.0, f1.eval("box(unbox(box(value(3)))).was_object")); + EXPECT_EQUAL(3.0, f1.eval("do_box(value(3))")); + EXPECT_EQUAL(0.0, f1.eval("do_box(value(3)).was_object")); + EXPECT_EQUAL(3.0, f1.eval("do_unbox(do_box(value(3)))")); + EXPECT_EQUAL(1.0, f1.eval("maybe_unbox(do_box(value(3))).was_object")); + EXPECT_EQUAL(3.0, f1.eval("do_box(do_unbox(do_box(value(3))))")); + EXPECT_EQUAL(0.0, f1.eval("do_box(do_unbox(do_box(value(3)))).was_object")); } TEST_F("require that output features may be either objects or numbers", Fixture()) { EXPECT_TRUE(f1.verify("value(3)")); - EXPECT_TRUE(f1.verify("box(value(3))")); + EXPECT_TRUE(f1.verify("do_box(value(3))")); } TEST_F("require that feature input/output types must be compatible", Fixture()) { - EXPECT_TRUE(!f1.verify("unbox(value(3))")); + EXPECT_TRUE(!f1.verify("do_unbox(value(3))")); EXPECT_TRUE(f1.verify("maybe_unbox(value(3))")); - EXPECT_TRUE(f1.verify("unbox(box(value(3)))")); - EXPECT_TRUE(!f1.verify("unbox(box(box(value(3))))")); - EXPECT_TRUE(f1.verify("unbox(maybe_box(box(value(3))))")); - EXPECT_TRUE(f1.verify("unbox(box(unbox(box(value(3)))))")); + EXPECT_TRUE(f1.verify("do_unbox(do_box(value(3)))")); + EXPECT_TRUE(!f1.verify("do_unbox(do_box(do_box(value(3))))")); + EXPECT_TRUE(f1.verify("do_unbox(maybe_box(do_box(value(3))))")); + EXPECT_TRUE(f1.verify("do_unbox(do_box(do_unbox(do_box(value(3)))))")); +} + +TEST_F("require that 'unbox' feature works for both numbers and objects", Fixture()) { + EXPECT_EQUAL(3.0, f1.eval("unbox(value(3))")); + EXPECT_EQUAL(3.0, f1.eval("unbox(do_box(value(3)))")); + EXPECT_EQUAL(0.0, f1.eval("maybe_unbox(unbox(do_box(value(3)))).was_object")); + EXPECT_EQUAL(0.0, f1.eval("maybe_unbox(unbox(value(3))).was_object")); } TEST_MAIN() { TEST_RUN_ALL(); } |