annotate test/TestDistanceMetric.cpp @ 143:6914a6a01ffc refactors

Transplant the distance metric parameter structure from silence_penalty branch (even though normalisation is currently the only thing in it)
author Chris Cannam
date Fri, 16 Jan 2015 10:18:00 +0000
parents af69db43f5a4
children 214b72d55796
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@143 29 DistanceMetric::Parameters params;
Chris@143 30 params.norm = DistanceMetric::NoDistanceNormalisation;
Chris@143 31 DistanceMetric dm(params);
Chris@131 32 vector<double>
Chris@131 33 e1 = getTestFeature(1),
Chris@131 34 e2 = getTestFeature(2),
Chris@131 35 e0 = getTestFeature(0);
Chris@131 36
Chris@131 37 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0);
Chris@133 38 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 6.0);
Chris@133 39 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 6.0);
Chris@133 40 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0);
Chris@133 41 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 6.0);
Chris@133 42 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 12.0);
Chris@133 43 }
Chris@133 44
Chris@133 45 BOOST_AUTO_TEST_CASE(sum)
Chris@133 46 {
Chris@143 47 DistanceMetric::Parameters params;
Chris@143 48 params.norm = DistanceMetric::NormaliseDistanceToSum;
Chris@143 49 DistanceMetric dm(params);
Chris@133 50 vector<double>
Chris@133 51 e1 = getTestFeature(1),
Chris@133 52 e2 = getTestFeature(2),
Chris@133 53 e0 = getTestFeature(0);
Chris@133 54
Chris@133 55 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0);
Chris@133 56 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 1.0);
Chris@133 57 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 1.0);
Chris@133 58 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0);
Chris@133 59 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 1.0/3.0);
Chris@133 60 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 1.0);
Chris@131 61 }
Chris@131 62
Chris@131 63 BOOST_AUTO_TEST_SUITE_END()
Chris@131 64
Chris@131 65
Chris@131 66