summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-09-27 18:25:10 +0200
committerJoel Klinghed <the_jk@spawned.biz>2025-09-27 18:49:23 +0200
commit2f13baa843bd1fb5db6630a2823681ffaff9fb11 (patch)
treea8c619cfa52ceb3b31b125b11e6bb15f7e268ed1 /test
parentce271f82f16ee89a18e7bfc9ed8eab7cbd6f37bc (diff)
Add simple prefix_tree
Will be used by tokenizer for short lists of strings
Diffstat (limited to 'test')
-rw-r--r--test/prefix_tree.cc47
1 files changed, 47 insertions, 0 deletions
diff --git a/test/prefix_tree.cc b/test/prefix_tree.cc
new file mode 100644
index 0000000..6c00adb
--- /dev/null
+++ b/test/prefix_tree.cc
@@ -0,0 +1,47 @@
+#include "prefix_tree.hh"
+
+#include <gtest/gtest.h>
+
+TEST(prefix_tree, empty) {
+ auto builder = prefix_tree::builder();
+ auto tree = builder->build();
+ ASSERT_TRUE(tree.has_value());
+ auto ret = prefix_tree::lookup(tree.value(), "");
+ EXPECT_FALSE(ret.has_value());
+ ret = prefix_tree::lookup(tree.value(), "foo");
+ EXPECT_FALSE(ret.has_value());
+}
+
+TEST(prefix_tree, sanity) {
+ auto builder = prefix_tree::builder();
+ builder->add("foo");
+ builder->add("bar");
+ builder->add("foobar");
+ auto tree = builder->build();
+ ASSERT_TRUE(tree.has_value());
+ auto ret = prefix_tree::lookup(tree.value(), "");
+ EXPECT_FALSE(ret.has_value());
+ ret = prefix_tree::lookup(tree.value(), "foo");
+ ASSERT_TRUE(ret.has_value());
+ EXPECT_EQ(3, ret.value());
+ ret = prefix_tree::lookup(tree.value(), "foobar");
+ ASSERT_TRUE(ret.has_value());
+ EXPECT_EQ(6, ret.value());
+ ret = prefix_tree::lookup(tree.value(), "bar");
+ ASSERT_TRUE(ret.has_value());
+ EXPECT_EQ(3, ret.value());
+ ret = prefix_tree::lookup(tree.value(), "ba");
+ EXPECT_FALSE(ret.has_value());
+ ret = prefix_tree::lookup(tree.value(), "barf");
+ ASSERT_TRUE(ret.has_value());
+ EXPECT_EQ(3, ret.value());
+ ret = prefix_tree::lookup(tree.value(), "foob");
+ ASSERT_TRUE(ret.has_value());
+ EXPECT_EQ(3, ret.value());
+ ret = prefix_tree::lookup(tree.value(), "foozum");
+ ASSERT_TRUE(ret.has_value());
+ EXPECT_EQ(3, ret.value());
+ ret = prefix_tree::lookup(tree.value(), "barfoo");
+ ASSERT_TRUE(ret.has_value());
+ EXPECT_EQ(3, ret.value());
+}