/* Ousía Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #include namespace ousia { static const TokenId t1 = 0; static const TokenId t2 = 1; static const TokenId t3 = 2; static const TokenId t4 = 3; TEST(TokenTrie, registerToken) { TokenTrie tree; ASSERT_TRUE(tree.registerToken("a", t1)); ASSERT_TRUE(tree.registerToken("ab", t2)); ASSERT_TRUE(tree.registerToken("b", t3)); ASSERT_TRUE(tree.registerToken("hello", t4)); ASSERT_FALSE(tree.registerToken("", t1)); ASSERT_FALSE(tree.registerToken("a", t4)); ASSERT_FALSE(tree.registerToken("ab", t4)); ASSERT_FALSE(tree.registerToken("b", t4)); ASSERT_FALSE(tree.registerToken("hello", t4)); ASSERT_EQ(t1, tree.hasToken("a")); ASSERT_EQ(t2, tree.hasToken("ab")); ASSERT_EQ(t3, tree.hasToken("b")); ASSERT_EQ(t4, tree.hasToken("hello")); ASSERT_EQ(Tokens::Empty, tree.hasToken("")); ASSERT_EQ(Tokens::Empty, tree.hasToken("abc")); } TEST(TokenTrie, unregisterToken) { TokenTrie tree; ASSERT_TRUE(tree.registerToken("a", t1)); ASSERT_FALSE(tree.registerToken("a", t4)); ASSERT_TRUE(tree.registerToken("ab", t2)); ASSERT_FALSE(tree.registerToken("ab", t4)); ASSERT_TRUE(tree.registerToken("b", t3)); ASSERT_FALSE(tree.registerToken("b", t4)); ASSERT_EQ(t1, tree.hasToken("a")); ASSERT_EQ(t2, tree.hasToken("ab")); ASSERT_EQ(t3, tree.hasToken("b")); ASSERT_TRUE(tree.unregisterToken("a")); ASSERT_FALSE(tree.unregisterToken("a")); ASSERT_EQ(Tokens::Empty, tree.hasToken("a")); ASSERT_EQ(t2, tree.hasToken("ab")); ASSERT_EQ(t3, tree.hasToken("b")); ASSERT_TRUE(tree.unregisterToken("b")); ASSERT_FALSE(tree.unregisterToken("b")); ASSERT_EQ(Tokens::Empty, tree.hasToken("a")); ASSERT_EQ(t2, tree.hasToken("ab")); ASSERT_EQ(Tokens::Empty, tree.hasToken("b")); ASSERT_TRUE(tree.unregisterToken("ab")); ASSERT_FALSE(tree.unregisterToken("ab")); ASSERT_EQ(Tokens::Empty, tree.hasToken("a")); ASSERT_EQ(Tokens::Empty, tree.hasToken("ab")); ASSERT_EQ(Tokens::Empty, tree.hasToken("b")); } }