aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/fef/object_passing/object_passing_test.cpp
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2022-01-27 14:04:23 +0000
committerHåvard Pettersen <havardpe@oath.com>2022-01-27 14:04:23 +0000
commit60509c2e8703d671899ecac71c294791b19f45c5 (patch)
tree132f581790ff7dd3b8eb571bbb2da666193c30e5 /searchlib/src/tests/fef/object_passing/object_passing_test.cpp
parent941d3a6d4d8c1a710669d7dfe0609300833fe6e6 (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.cpp34
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(); }