summaryrefslogtreecommitdiffstats
path: root/container-search/src/test/java/com/yahoo/search/dispatch
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2021-11-08 14:54:18 +0000
committerArne H Juul <arnej@yahooinc.com>2021-11-09 09:57:21 +0000
commit5b18b3978ee3c8a27c1d544de4ff6a4ea5e6aa9d (patch)
tree3aeea7fc0233d56f13c8ca682039d48deb0578e1 /container-search/src/test/java/com/yahoo/search/dispatch
parentf0b07d6a260e6ed24ca8433af6a57ec7226173dd (diff)
less duplication of hashmaps
* instead of building an ObjectValue for each hit (each with its own mapping of names->values) use a shared Hashlet.
Diffstat (limited to 'container-search/src/test/java/com/yahoo/search/dispatch')
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/rpc/MatchFeatureDataTest.java104
1 files changed, 104 insertions, 0 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MatchFeatureDataTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MatchFeatureDataTest.java
new file mode 100644
index 00000000000..0ef6fbae062
--- /dev/null
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MatchFeatureDataTest.java
@@ -0,0 +1,104 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.search.dispatch.rpc;
+
+import com.yahoo.data.access.ArrayTraverser;
+import com.yahoo.data.access.Inspector;
+import com.yahoo.data.access.ObjectTraverser;
+import com.yahoo.data.access.Type;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author arnej
+ */
+public class MatchFeatureDataTest {
+
+ @Test
+ public void testHitValueAPI() {
+ List<String> names = List.of("foo", "bar", "baz", "qux", "quux");
+ var mf = new MatchFeatureData(names);
+ var hit = mf.addHit();
+ assertEquals(hit.type(), Type.OBJECT);
+ assertFalse(hit.valid());
+ hit.add(1.0);
+ hit.add(2.0);
+ byte[] somebytes = { 42, 0, 17 };
+ hit.add(somebytes);
+ hit.add(4.0);
+ assertFalse(hit.valid());
+ hit.add(5.0);
+ assertTrue(hit.valid());
+ assertEquals(0, hit.entryCount());
+ assertEquals(5, hit.fieldCount());
+ var f0 = hit.field("not");
+ assertFalse(f0.valid());
+
+ var f1 = hit.field("foo");
+ assertTrue(f1.valid());
+ assertEquals(f1.type(), Type.DOUBLE);
+ assertEquals(f1.asDouble(), 1.0, 0.0);
+
+ var f2 = hit.field("bar");
+ assertTrue(f2.valid());
+ assertEquals(f2.type(), Type.DOUBLE);
+ assertEquals(f2.asDouble(), 2.0, 0.0);
+
+ var f3 = hit.field("baz");
+ assertTrue(f3.valid());
+ assertEquals(f3.type(), Type.DATA);
+ var gotbytes = f3.asData();
+ assertEquals(3, gotbytes.length);
+ assertEquals(42, gotbytes[0]);
+ assertEquals(0, gotbytes[1]);
+ assertEquals(17, gotbytes[2]);
+
+ var f5 = hit.field("quux");
+ assertTrue(f5.valid());
+ assertEquals(f5.type(), Type.DOUBLE);
+ assertEquals(f5.asDouble(), 5.0, 0.0);
+
+ var fields = hit.fields().iterator();
+ assertTrue(fields.hasNext());
+ Map.Entry<String,Inspector> entry = fields.next();
+ assertEquals("foo", entry.getKey());
+ assertEquals(f1.type(), entry.getValue().type());
+ assertEquals(f1.asDouble(), entry.getValue().asDouble(), 0.0);
+
+ assertTrue(fields.hasNext());
+ entry = fields.next();
+ assertEquals("bar", entry.getKey());
+
+ assertTrue(fields.hasNext());
+ entry = fields.next();
+ assertEquals("baz", entry.getKey());
+ assertEquals(f3.type(), entry.getValue().type());
+ assertEquals(f3.asData(), entry.getValue().asData());
+
+ assertTrue(fields.hasNext());
+ entry = fields.next();
+ assertEquals("qux", entry.getKey());
+ var f4 = entry.getValue();
+ assertTrue(f4.valid());
+ assertEquals(f4.type(), Type.DOUBLE);
+ assertEquals(f4.asDouble(), 4.0, 0.0);
+
+ assertTrue(fields.hasNext());
+ entry = fields.next();
+ assertEquals("quux", entry.getKey());
+ assertEquals(f5.type(), entry.getValue().type());
+ assertEquals(f5.asDouble(), entry.getValue().asDouble(), 0.0);
+
+ assertFalse(fields.hasNext());
+
+ assertEquals("{\"foo\":1.0,\"bar\":2.0,\"baz\":\"0x2A0011\",\"qux\":4.0,\"quux\":5.0}",
+ hit.toString());
+ }
+
+}