00001 #include "MiraFeatureVector.h"
00002 #include "MiraWeightVector.h"
00003
00004 #define BOOST_TEST_MODULE MiraFeatureVector
00005 #include <boost/test/unit_test.hpp>
00006
00007 using namespace MosesTuning;
00008
00009
00010
00011
00012
00013
00014 BOOST_AUTO_TEST_CASE(from_sparse)
00015 {
00016 SparseVector sp;
00017 sp.set("dense0", 0.2);
00018 sp.set("dense1", 0.3);
00019 sp.set("sparse0", 0.7);
00020 sp.set("sparse1", 0.9);
00021 sp.set("sparse2", 0.1);
00022
00023 MiraFeatureVector mfv(sp,2);
00024 BOOST_CHECK_EQUAL(mfv.size(),5);
00025
00026 BOOST_CHECK_EQUAL(mfv.feat(0),0);
00027 BOOST_CHECK_EQUAL(mfv.feat(1),1);
00028 BOOST_CHECK_EQUAL(mfv.feat(2),4);
00029 BOOST_CHECK_EQUAL(mfv.feat(3),5);
00030 BOOST_CHECK_EQUAL(mfv.feat(4),6);
00031
00032 BOOST_CHECK_CLOSE(mfv.val(0), 0.2,1e-5);
00033 BOOST_CHECK_CLOSE(mfv.val(1), 0.3,1e-5);
00034 BOOST_CHECK_CLOSE(mfv.val(2), 0.7,1e-5);
00035 BOOST_CHECK_CLOSE(mfv.val(3), 0.9,1e-5);
00036 BOOST_CHECK_CLOSE(mfv.val(4), 0.1,1e-5);
00037
00038 MiraWeightVector mwv;
00039 mwv.update(mfv,1.0);
00040 SparseVector sp2;
00041 mwv.ToSparse(&sp2,2);
00042
00043
00044 BOOST_CHECK_CLOSE(sp2.get("dense0"), 0.2,1e-5);
00045 BOOST_CHECK_CLOSE(sp2.get("dense1"), 0.3,1e-5);
00046 BOOST_CHECK_CLOSE(sp2.get("sparse0"), 0.7,1e-5);
00047 BOOST_CHECK_CLOSE(sp2.get("sparse1"), 0.9,1e-5);
00048 BOOST_CHECK_CLOSE(sp2.get("sparse2"), 0.1,1e-5);
00049
00050 }