From c86f957426a2399217bcca466dec7a83d0981ba3 Mon Sep 17 00:00:00 2001 From: Adrian Kummerländer Date: Thu, 6 Feb 2014 16:14:16 +0100 Subject: Implemented trie value support * template can now be specialized on a value type * simple existance check of trie paths can be achieved using the check member method * new get member method can be used to query values ** values are stored as std::pair to make them optional * expanded test cases accordingly --- test.cc | 55 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 25 deletions(-) (limited to 'test.cc') diff --git a/test.cc b/test.cc index 2c38a3f..ff0b04f 100644 --- a/test.cc +++ b/test.cc @@ -14,20 +14,12 @@ TEST_F(TrieTest, Basic) { trie.add({2, 3, 4, 5}); trie.add({2, 3, 1, 2}); - EXPECT_EQ(trie.resolve({1, 1, 1, 1}).first, true); - EXPECT_NE(trie.resolve({1, 1, 1, 1}).second, nullptr); + EXPECT_EQ(trie.check({1, 1, 1, 1}), true); + EXPECT_EQ(trie.check({1, 2, 1, 2}), true); + EXPECT_EQ(trie.check({1, 2}), true); - EXPECT_EQ(trie.resolve({1, 2, 1, 2}).first, true); - EXPECT_NE(trie.resolve({1, 2, 1, 2}).second, nullptr); - - EXPECT_EQ(trie.resolve({1, 2}).first, true); - EXPECT_NE(trie.resolve({1, 2}).second, nullptr); - - EXPECT_EQ(trie.resolve({1, 1, 2, 3}).first, false); - EXPECT_EQ(trie.resolve({1, 1, 2, 3}).second, nullptr); - - EXPECT_EQ(trie.resolve({2, 1, 4}).first, false); - EXPECT_EQ(trie.resolve({2, 1, 4}).second, nullptr); + EXPECT_EQ(trie.check({1, 1, 2, 3}), false); + EXPECT_EQ(trie.check({2, 1, 4}), false); } TEST_F(TrieTest, Remove) { @@ -40,22 +32,35 @@ TEST_F(TrieTest, Remove) { trie.remove({1, 1, 1, 1}); - EXPECT_EQ(trie.resolve({1, 1, 1, 1}).first, false); - EXPECT_EQ(trie.resolve({1, 1, 1, 1}).second, nullptr); - - EXPECT_EQ(trie.resolve({1, 2, 1, 2}).first, true); - EXPECT_NE(trie.resolve({1, 2, 1, 2}).second, nullptr); + EXPECT_EQ(trie.check({1, 1, 1, 1}), false); + EXPECT_EQ(trie.check({1, 2, 1, 2}), true); trie.remove({2, 3}); - EXPECT_EQ(trie.resolve({2, 3, 4, 5}).first, false); - EXPECT_EQ(trie.resolve({2, 3, 4, 5}).second, nullptr); - - EXPECT_EQ(trie.resolve({2, 3}).first, false); - EXPECT_EQ(trie.resolve({2, 3}).second, nullptr); + EXPECT_EQ(trie.check({2, 3, 4, 5}), false); + EXPECT_EQ(trie.check({2, 3}), false); + EXPECT_EQ(trie.check({2}), true); +} - EXPECT_EQ(trie.resolve({2}).first, true); - EXPECT_NE(trie.resolve({2}).second, nullptr); +TEST_F(TrieTest, Value) { + Trie trie; + + trie.add({1, 1, 1, 1}, 42); + trie.add({1, 2, 1, 2}, 43); + trie.add({2, 3, 4, 5}, 44); + trie.add({2, 3, 1, 2}, 45); + + EXPECT_EQ(trie.get({1, 1, 1, 1}).first, true); + EXPECT_EQ(*trie.get({1, 1, 1, 1}).second, 42); + EXPECT_EQ(trie.get({1, 2, 1, 2}).first, true); + EXPECT_EQ(*trie.get({1, 2, 1, 2}).second, 43); + EXPECT_EQ(trie.get({2, 3, 4, 5}).first, true); + EXPECT_EQ(*trie.get({2, 3, 4, 5}).second, 44); + EXPECT_EQ(trie.get({2, 3, 4, 5}).first, true); + EXPECT_EQ(*trie.get({2, 3, 1, 2}).second, 45); + + EXPECT_EQ(trie.get({1, 2}).first, false); + EXPECT_EQ(trie.get({1, 2}).second, nullptr); } int main(int argc, char **argv) { -- cgit v1.2.3