annotate test/TestDistanceMetric.cpp @ 133:af69db43f5a4 refactors

Distance metric tests
author Chris Cannam
date Thu, 11 Dec 2014 14:09:54 +0000
parents 57cda698c225
children 7f6f150c1edf 6914a6a01ffc
rev   line source
Chris@131 1
Chris@131 2 #include "DistanceMetric.h"
Chris@131 3
Chris@131 4 #include <vector>
Chris@131 5 #include <iostream>
Chris@131 6 #include <cmath>
Chris@131 7
Chris@131 8 using namespace std;
Chris@131 9
Chris@131 10 #define BOOST_TEST_DYN_LINK
Chris@131 11 #define BOOST_TEST_MAIN
Chris@131 12
Chris@131 13 #include <boost/test/unit_test.hpp>
Chris@131 14
Chris@131 15 static vector<double> getTestFeature(double m)
Chris@131 16 {
Chris@131 17 vector<double> f;
Chris@131 18 double fd[] = { 0, 1, 2, 3 };
Chris@131 19 for (int i = 0; i < 4; ++i) {
Chris@131 20 f.push_back(fd[i] * m);
Chris@131 21 }
Chris@131 22 return f;
Chris@131 23 }
Chris@131 24
Chris@131 25 BOOST_AUTO_TEST_SUITE(TestDistanceMetric)
Chris@131 26
Chris@131 27 BOOST_AUTO_TEST_CASE(nonorm)
Chris@131 28 {
Chris@131 29 DistanceMetric dm(DistanceMetric::NoDistanceNormalisation);
Chris@131 30 vector<double>
Chris@131 31 e1 = getTestFeature(1),
Chris@131 32 e2 = getTestFeature(2),
Chris@131 33 e0 = getTestFeature(0);
Chris@131 34
Chris@131 35 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0);
Chris@133 36 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 6.0);
Chris@133 37 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 6.0);
Chris@133 38 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0);
Chris@133 39 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 6.0);
Chris@133 40 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 12.0);
Chris@133 41 }
Chris@133 42
Chris@133 43 BOOST_AUTO_TEST_CASE(sum)
Chris@133 44 {
Chris@133 45 DistanceMetric dm(DistanceMetric::NormaliseDistanceToSum);
Chris@133 46 vector<double>
Chris@133 47 e1 = getTestFeature(1),
Chris@133 48 e2 = getTestFeature(2),
Chris@133 49 e0 = getTestFeature(0);
Chris@133 50
Chris@133 51 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0);
Chris@133 52 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 1.0);
Chris@133 53 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 1.0);
Chris@133 54 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0);
Chris@133 55 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 1.0/3.0);
Chris@133 56 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 1.0);
Chris@131 57 }
Chris@131 58
Chris@131 59 BOOST_AUTO_TEST_SUITE_END()
Chris@131 60
Chris@131 61
Chris@131 62