00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <boost/test/unit_test.hpp>
00021
00022 #include <vector>
00023
00024 #include "Bitmap.h"
00025
00026 using namespace Moses;
00027 using namespace std;
00028
00029 BOOST_AUTO_TEST_SUITE(bitmap)
00030
00031 BOOST_AUTO_TEST_CASE(initialise)
00032 {
00033 Bitmap wbm(5);
00034 BOOST_CHECK_EQUAL(wbm.GetSize(),5);
00035 for (size_t i = 0; i < 5; ++i) {
00036 BOOST_CHECK_EQUAL(wbm.GetValue(i),false);
00037 }
00038
00039 vector<bool> bitvec(10);
00040 bitvec[2] = true;
00041 bitvec[3] = true;
00042 bitvec[7] = true;
00043
00044 Bitmap wbm2(7,bitvec);
00045 BOOST_CHECK_EQUAL(wbm2.GetSize(),7);
00046 for (size_t i = 0; i < 7; ++i) {
00047 if (i != 2 && i != 3) {
00048 BOOST_CHECK_EQUAL(wbm2.GetValue(i), false);
00049 } else {
00050 BOOST_CHECK_EQUAL(wbm2.GetValue(i), true);
00051 }
00052 }
00053
00054
00055 bitvec[0] = true;
00056 bitvec[1] = true;
00057 Bitmap wbm3(7,bitvec);
00058 BOOST_CHECK_EQUAL(wbm3.GetFirstGapPos(),4);
00059
00060 Bitmap wbm4(4,bitvec);
00061 BOOST_CHECK_EQUAL(wbm4.GetFirstGapPos(),NOT_FOUND);
00062 }
00063
00064
00065 BOOST_AUTO_TEST_CASE(getset)
00066 {
00067 Bitmap wbm(6);
00068 wbm.SetValue(1,true);
00069 BOOST_CHECK_EQUAL(wbm.GetValue(1),true);
00070 BOOST_CHECK_EQUAL(wbm.GetValue(2),false);
00071 wbm.SetValue(2,true);
00072 BOOST_CHECK_EQUAL(wbm.GetValue(2),true);
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094 }
00095
00096 BOOST_AUTO_TEST_CASE(covered)
00097 {
00098 Bitmap wbm(10);
00099 BOOST_CHECK_EQUAL(wbm.GetNumWordsCovered(), 0);
00100 wbm.SetValue(1,true);
00101 wbm.SetValue(2,true);
00102 BOOST_CHECK_EQUAL(wbm.GetNumWordsCovered(), 2);
00103 wbm.SetValue(3,true);
00104 wbm.SetValue(7,true);
00105 BOOST_CHECK_EQUAL(wbm.GetNumWordsCovered(), 4);
00106 wbm.SetValue(2,true);
00107 BOOST_CHECK_EQUAL(wbm.GetNumWordsCovered(), 4);
00108 wbm.SetValue(2,false);
00109 BOOST_CHECK_EQUAL(wbm.GetNumWordsCovered(), 3);
00110 }
00111
00112 BOOST_AUTO_TEST_CASE(positions)
00113 {
00114 Bitmap wbm(10);
00115 wbm.SetValue(0,true);
00116 wbm.SetValue(1,true);
00117 wbm.SetValue(3,true);
00118 wbm.SetValue(7,true);
00119 BOOST_CHECK_EQUAL(wbm.GetFirstGapPos(), 2);
00120 BOOST_CHECK_EQUAL(wbm.GetLastGapPos(), 9);
00121 BOOST_CHECK_EQUAL(wbm.GetLastPos(), 7);
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138 Bitmap wbm2(2);
00139 wbm2.SetValue(0,true);
00140 wbm2.SetValue(1,true);
00141 BOOST_CHECK_EQUAL(wbm2.GetFirstGapPos(), NOT_FOUND);
00142
00143 Bitmap wbm3(5);
00144 BOOST_CHECK_EQUAL(wbm3.GetFirstGapPos(), 0);
00145 BOOST_CHECK_EQUAL(wbm3.GetLastGapPos(), 4);
00146 BOOST_CHECK_EQUAL(wbm3.GetLastPos(), NOT_FOUND);
00147
00148 }
00149
00150
00151 BOOST_AUTO_TEST_SUITE_END()
00152