From 218480aac191b7a1e068b065d56c52b6c0a2b696 Mon Sep 17 00:00:00 2001 From: aholic Date: Tue, 17 Dec 2013 01:06:44 +0800 Subject: [PATCH] add unitest for TrieManager --- test/unittest/CMakeLists.txt | 2 +- test/unittest/TTrieManager.cpp | 52 ++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 test/unittest/TTrieManager.cpp diff --git a/test/unittest/CMakeLists.txt b/test/unittest/CMakeLists.txt index 96cc2cd..1f59f31 100644 --- a/test/unittest/CMakeLists.txt +++ b/test/unittest/CMakeLists.txt @@ -5,7 +5,7 @@ SET(GTEST_ROOT_DIR gtest-1.6.0) INCLUDE_DIRECTORIES(${GTEST_ROOT_DIR} ${GTEST_ROOT_DIR}/include ${PROJECT_SOURCE_DIR}) ADD_LIBRARY(gtest STATIC ${GTEST_ROOT_DIR}/src/gtest-all.cc) -ADD_EXECUTABLE(test.run gtest_main.cc TChineseFilter.cpp TMixSegment.cpp TMPSegment.cpp THMMSegment.cpp TTrie.cpp TFullSegment.cpp TQuerySegment.cpp) +ADD_EXECUTABLE(test.run gtest_main.cc TChineseFilter.cpp TMixSegment.cpp TMPSegment.cpp THMMSegment.cpp TTrie.cpp TFullSegment.cpp TQuerySegment.cpp TTrieManager.cpp) TARGET_LINK_LIBRARIES(gtest pthread) TARGET_LINK_LIBRARIES(test.run gtest pthread) diff --git a/test/unittest/TTrieManager.cpp b/test/unittest/TTrieManager.cpp new file mode 100644 index 0000000..a51341a --- /dev/null +++ b/test/unittest/TTrieManager.cpp @@ -0,0 +1,52 @@ +#include "src/TrieManager.hpp" +#include "gtest/gtest.h" + +using namespace CppJieba; + +struct md5_ptr +{ + string md5; + Trie* ptr; +}; +typedef struct md5_ptr MD5_PTR; + +static const char* const DICT_FILE[] = { + "../test/testdata/jieba.dict.0.utf8", + "../test/testdata/jieba.dict.0.utf8", + "../test/testdata/jieba.dict.0.utf8", + "../test/testdata/jieba.dict.0.1.utf8", + "../test/testdata/jieba.dict.0.1.utf8", + "../test/testdata/jieba.dict.0.1.utf8", + "../test/testdata/jieba.dict.1.utf8", + "../test/testdata/jieba.dict.1.utf8", + "../test/testdata/jieba.dict.1.utf8", + "../test/testdata/jieba.dict.2.utf8", + "../test/testdata/jieba.dict.2.utf8", + "../test/testdata/jieba.dict.2.utf8", + "../test/testdata/jieba.dict.2.utf8"}; + +TEST(TrieManagerTest, Test1) +{ + vector tries(sizeof(DICT_FILE)/sizeof(DICT_FILE[0])); + for (uint i = 0; i < tries.size(); i++) + { + tries[i].ptr = TrieManager::getInstance().getTrie(DICT_FILE[i]); + ASSERT_TRUE(md5File(DICT_FILE[i], tries[i].md5)); + } + + for (uint i = 0; i < tries.size(); i++) + { + for (uint j = i + 1; j < tries.size(); j++) + { + if (tries[i].md5 == tries[j].md5) + { + ASSERT_EQ(tries[i].ptr, tries[j].ptr); + } + else + { + ASSERT_NE(tries[i].ptr, tries[j].ptr); + } + } + } +} +