Welcome to mirror list, hosted at ThFree Co, Russian Federation.

PointTest.cpp « mert - github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: f9e8e8bb2920eb6f02b68c701ea0d8c6eefdc702 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "Point.h"

#define BOOST_TEST_MODULE MertPoint
#include <boost/test/unit_test.hpp>

#include "Optimizer.h"
#include "Util.h"

using namespace std;
using namespace MosesTuning;

BOOST_AUTO_TEST_CASE(point_operators)
{
  const unsigned int dim = 5;
  vector<float> init(dim);
  init[0] = 1.0f;
  init[1] = 1.0f;
  init[2] = 0.3f;
  init[3] = 0.2f;
  init[4] = 0.3f;

  vector<float> min(dim, 0.0f);
  vector<float> max(dim, 0.0f);

  Point::setdim(dim);
  BOOST_REQUIRE(dim == Point::getdim());

  // Test operator '+'
  {
    Point p1(init, min, max);
    Point p2(init, min, max);
    Point p3 = p1 + p2;
    for (size_t i = 0; i < p3.size(); ++i) {
      BOOST_CHECK(IsAlmostEqual(init[i] * 2.0f, p3[i]));
    }
    BOOST_CHECK_EQUAL(p3.GetScore(), kMaxFloat);
  }

  // Test operator '+='
  {
    Point p1(init, min, max);
    Point p2(init, min, max);
    p1 += p2;

    for (size_t i = 0; i < p1.size(); ++i) {
      BOOST_CHECK(IsAlmostEqual(init[i] * 2.0f, p1[i]));
    }
    BOOST_CHECK_EQUAL(p1.GetScore(), kMaxFloat);
  }

  // Test operator '*'
  {
    Point p1(init, min, max);
    const Point p2 = p1 * 2.0;

    BOOST_REQUIRE(p1.size() == p2.size());
    for (size_t i = 0; i < p2.size(); ++i) {
      BOOST_CHECK(IsAlmostEqual(init[i] * 2.0f, p2[i]));
    }
    BOOST_CHECK_EQUAL(p2.GetScore(), kMaxFloat);
  }
}