changeset 133:af69db43f5a4 refactors

Distance metric tests
author Chris Cannam
date Thu, 11 Dec 2014 14:09:54 +0000
parents afa078d87d2a
children 046f51a2ca25
files .hgignore src/DistanceMetric.cpp test/TestDistanceMetric.cpp
diffstat 3 files changed, 27 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Thu Dec 11 13:55:54 2014 +0000
+++ b/.hgignore	Thu Dec 11 14:09:54 2014 +0000
@@ -5,3 +5,6 @@
 *.so
 *.o
 *.orig
+re:^test/TestDistanceMetric$
+re:^test/TestFeatureConditioner$
+re:^test/TestFeatureExtractor$
--- a/src/DistanceMetric.cpp	Thu Dec 11 13:55:54 2014 +0000
+++ b/src/DistanceMetric.cpp	Thu Dec 11 14:09:54 2014 +0000
@@ -18,8 +18,9 @@
 
 #include <cassert>
 #include <cmath>
+#include <iostream>
 
-using std::vector;
+using namespace std;
 
 double
 DistanceMetric::calcDistance(const vector<double> &f1,
@@ -49,7 +50,7 @@
     //	double weight = (5 + Math.log(f1[freqMapSize] + f2[freqMapSize]))/10.0;
 
     double weight = (8 + log(sum)) / 10.0;
-
+    
     if (weight < 0) weight = 0;
     else if (weight > 1) weight = 1;
 
--- a/test/TestDistanceMetric.cpp	Thu Dec 11 13:55:54 2014 +0000
+++ b/test/TestDistanceMetric.cpp	Thu Dec 11 14:09:54 2014 +0000
@@ -33,6 +33,27 @@
 	e0 = getTestFeature(0);
 
     BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 6.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 6.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 6.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 12.0);
+}
+
+BOOST_AUTO_TEST_CASE(sum)
+{
+    DistanceMetric dm(DistanceMetric::NormaliseDistanceToSum);
+    vector<double>
+	e1 = getTestFeature(1),
+	e2 = getTestFeature(2),
+	e0 = getTestFeature(0);
+
+    BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 1.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 1.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 1.0/3.0);
+    BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 1.0);
 }
 
 BOOST_AUTO_TEST_SUITE_END()