00001 #include "Vocabulary.h"
00002 #include "Singleton.h"
00003
00004 #define BOOST_TEST_MODULE MertVocabulary
00005 #include <boost/test/unit_test.hpp>
00006
00007 using namespace MosesTuning;
00008
00009 namespace mert
00010 {
00011 namespace
00012 {
00013
00014 void TearDown()
00015 {
00016 Singleton<Vocabulary>::Delete();
00017 }
00018
00019 }
00020
00021 BOOST_AUTO_TEST_CASE(vocab_basic)
00022 {
00023 Vocabulary vocab;
00024 BOOST_REQUIRE(vocab.empty());
00025 vocab.clear();
00026
00027 BOOST_CHECK_EQUAL(0, vocab.Encode("hello"));
00028 BOOST_CHECK_EQUAL(0, vocab.Encode("hello"));
00029 BOOST_CHECK_EQUAL(1, vocab.Encode("world"));
00030
00031 BOOST_CHECK_EQUAL(2, vocab.size());
00032
00033 int v;
00034 BOOST_CHECK(vocab.Lookup("hello", &v));
00035 BOOST_CHECK_EQUAL(0, v);
00036 BOOST_CHECK(vocab.Lookup("world", &v));
00037 BOOST_CHECK_EQUAL(1, v);
00038
00039 BOOST_CHECK(!vocab.Lookup("java", &v));
00040
00041 vocab.clear();
00042 BOOST_CHECK(!vocab.Lookup("hello", &v));
00043 BOOST_CHECK(!vocab.Lookup("world", &v));
00044 }
00045
00046 BOOST_AUTO_TEST_CASE(vocab_factory_test)
00047 {
00048 Vocabulary* vocab1 = VocabularyFactory::GetVocabulary();
00049 Vocabulary* vocab2 = VocabularyFactory::GetVocabulary();
00050 Vocabulary* vocab3 = VocabularyFactory::GetVocabulary();
00051
00052 BOOST_REQUIRE(vocab1 != NULL);
00053 BOOST_CHECK(vocab1 == vocab2);
00054 BOOST_CHECK(vocab2 == vocab3);
00055
00056 TearDown();
00057 }
00058 }