00001 #include "Point.h"
00002
00003 #define BOOST_TEST_MODULE MertPoint
00004 #include <boost/test/unit_test.hpp>
00005
00006 #include "Optimizer.h"
00007 #include "Util.h"
00008
00009 using namespace std;
00010 using namespace MosesTuning;
00011
00012 BOOST_AUTO_TEST_CASE(point_operators)
00013 {
00014 const unsigned int dim = 5;
00015 vector<float> init(dim);
00016 init[0] = 1.0f;
00017 init[1] = 1.0f;
00018 init[2] = 0.3f;
00019 init[3] = 0.2f;
00020 init[4] = 0.3f;
00021
00022 vector<float> min(dim, 0.0f);
00023 vector<float> max(dim, 0.0f);
00024
00025 Point::setdim(dim);
00026 BOOST_REQUIRE(dim == Point::getdim());
00027
00028
00029 {
00030 Point p1(init, min, max);
00031 Point p2(init, min, max);
00032 Point p3 = p1 + p2;
00033 for (size_t i = 0; i < p3.size(); ++i) {
00034 BOOST_CHECK(IsAlmostEqual(init[i] * 2.0f, p3[i]));
00035 }
00036 BOOST_CHECK_EQUAL(p3.GetScore(), kMaxFloat);
00037 }
00038
00039
00040 {
00041 Point p1(init, min, max);
00042 Point p2(init, min, max);
00043 p1 += p2;
00044
00045 for (size_t i = 0; i < p1.size(); ++i) {
00046 BOOST_CHECK(IsAlmostEqual(init[i] * 2.0f, p1[i]));
00047 }
00048 BOOST_CHECK_EQUAL(p1.GetScore(), kMaxFloat);
00049 }
00050
00051
00052 {
00053 Point p1(init, min, max);
00054 const Point p2 = p1 * 2.0;
00055
00056 BOOST_REQUIRE(p1.size() == p2.size());
00057 for (size_t i = 0; i < p2.size(); ++i) {
00058 BOOST_CHECK(IsAlmostEqual(init[i] * 2.0f, p2[i]));
00059 }
00060 BOOST_CHECK_EQUAL(p2.GetScore(), kMaxFloat);
00061 }
00062 }