#include "prefix_tree.hh" #include 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()); }