annotate test/TestDistanceMetric.cpp @ 172:30d59e1e4232 structure

Minor tidy
author Chris Cannam
date Fri, 06 Feb 2015 18:09:18 +0000
parents 214b72d55796
children a17b22abd551
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@146 37 double noise = 1e-3 * 4;
Chris@146 38
Chris@146 39 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0 + noise);
Chris@146 40 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 6.0 + noise);
Chris@146 41 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 6.0 + noise);
Chris@146 42 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0 + noise);
Chris@146 43 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 6.0 + noise);
Chris@146 44 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 12.0 + noise);
Chris@133 45 }
Chris@133 46
Chris@133 47 BOOST_AUTO_TEST_CASE(sum)
Chris@133 48 {
Chris@143 49 DistanceMetric::Parameters params;
Chris@143 50 params.norm = DistanceMetric::NormaliseDistanceToSum;
Chris@143 51 DistanceMetric dm(params);
Chris@133 52 vector<double>
Chris@133 53 e1 = getTestFeature(1),
Chris@133 54 e2 = getTestFeature(2),
Chris@133 55 e0 = getTestFeature(0);
Chris@133 56
Chris@146 57 double noise = 1e-3 * 4;
Chris@146 58
Chris@146 59 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 1.0);
Chris@133 60 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 1.0);
Chris@133 61 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 1.0);
Chris@146 62 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), noise / (12.0 + noise));
Chris@146 63 BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), (6.0 + noise) / (18.0 + noise));
Chris@133 64 BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 1.0);
Chris@131 65 }
Chris@131 66
Chris@131 67 BOOST_AUTO_TEST_SUITE_END()
Chris@131 68
Chris@131 69
Chris@131 70