00001 #include "Ngram.h"
00002
00003 #define BOOST_TEST_MODULE MertNgram
00004 #include <boost/test/unit_test.hpp>
00005
00006 using namespace MosesTuning;
00007
00008 BOOST_AUTO_TEST_CASE(ngram_basic)
00009 {
00010 NgramCounts counts;
00011 NgramCounts::Key key;
00012 key.push_back(1);
00013 key.push_back(2);
00014 key.push_back(4);
00015 counts.Add(key);
00016
00017 BOOST_REQUIRE(!counts.empty());
00018 BOOST_CHECK_EQUAL(counts.size(), 1);
00019
00020 NgramCounts::const_iterator it = counts.find(key);
00021 BOOST_CHECK(it != counts.end());
00022 BOOST_CHECK_EQUAL(it->first.size(), key.size());
00023 for (std::size_t i = 0; i < key.size(); ++i) {
00024 BOOST_CHECK_EQUAL(it->first[i], key[i]);
00025 }
00026 BOOST_CHECK_EQUAL(it->second, 1);
00027 }
00028
00029 BOOST_AUTO_TEST_CASE(ngram_Add)
00030 {
00031 NgramCounts counts;
00032 NgramCounts::Key key;
00033 key.push_back(1);
00034 key.push_back(2);
00035 counts.Add(key);
00036 BOOST_REQUIRE(!counts.empty());
00037 BOOST_CHECK_EQUAL(counts[key], counts.get_default_count());
00038
00039 NgramCounts::Key key2;
00040 key2.push_back(1);
00041 key2.push_back(2);
00042 counts.Add(key2);
00043 BOOST_CHECK_EQUAL(counts.size(), 1);
00044 BOOST_CHECK_EQUAL(counts[key], counts.get_default_count() + 1);
00045 BOOST_CHECK_EQUAL(counts[key2], counts.get_default_count() + 1);
00046
00047 NgramCounts::Key key3;
00048 key3.push_back(10);
00049 counts.Add(key3);
00050 BOOST_CHECK_EQUAL(counts.size(), 2);
00051 BOOST_CHECK_EQUAL(counts[key3], counts.get_default_count());
00052 }
00053
00054 BOOST_AUTO_TEST_CASE(ngram_lookup)
00055 {
00056 NgramCounts counts;
00057 NgramCounts::Key key;
00058 key.push_back(1);
00059 key.push_back(2);
00060 key.push_back(4);
00061 counts.Add(key);
00062
00063 {
00064 NgramCounts::Value v;
00065 BOOST_REQUIRE(counts.Lookup(key, &v));
00066 BOOST_CHECK_EQUAL(v, 1);
00067 }
00068
00069
00070 {
00071 NgramCounts::Key key2;
00072 key2.push_back(0);
00073 key2.push_back(4);
00074 NgramCounts::Value v;
00075
00076
00077
00078 BOOST_REQUIRE(!counts.Lookup(key2, &v));
00079 }
00080
00081
00082 counts.clear();
00083 BOOST_CHECK(counts.empty());
00084 {
00085 NgramCounts::Value v;
00086 BOOST_CHECK(!counts.Lookup(key, &v));
00087 }
00088 }