annotate test/TestFeatureConditioner.cpp @ 146:214b72d55796 noise

Update unit tests
author Chris Cannam
date Fri, 16 Jan 2015 16:48:55 +0000
parents 8e240bbea845
children a17b22abd551
rev   line source
Chris@130 1
Chris@130 2 #include "FeatureConditioner.h"
Chris@130 3
Chris@130 4 #include <vector>
Chris@130 5 #include <iostream>
Chris@130 6 #include <cmath>
Chris@130 7
Chris@130 8 using namespace std;
Chris@130 9
Chris@130 10 #define BOOST_TEST_DYN_LINK
Chris@130 11 #define BOOST_TEST_MAIN
Chris@130 12
Chris@130 13 #include <boost/test/unit_test.hpp>
Chris@130 14
Chris@130 15 static vector<double> getTestFeature(double m)
Chris@130 16 {
Chris@130 17 vector<double> f;
Chris@130 18 double fd[] = { 0, 1, 2, 3 };
Chris@130 19 for (int i = 0; i < 4; ++i) {
Chris@130 20 f.push_back(fd[i] * m);
Chris@130 21 }
Chris@130 22 return f;
Chris@130 23 }
Chris@130 24
Chris@130 25 BOOST_AUTO_TEST_SUITE(TestFeatureConditioner)
Chris@130 26
Chris@130 27 BOOST_AUTO_TEST_CASE(nonorm_features)
Chris@130 28 {
Chris@130 29 FeatureConditioner::Parameters params;
Chris@130 30 params.norm = FeatureConditioner::NoNormalisation;
Chris@130 31 params.order = FeatureConditioner::OutputFeatures;
Chris@130 32 vector<double>
Chris@130 33 e1 = getTestFeature(1),
Chris@130 34 e2 = getTestFeature(2),
Chris@130 35 e0 = getTestFeature(0);
Chris@130 36
Chris@130 37 params.silenceThreshold = 1.0;
Chris@130 38 FeatureConditioner fc(params);
Chris@130 39 vector<double> out = fc.process(e1);
Chris@130 40 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e1.begin(), e1.end());
Chris@130 41 out = fc.process(e2);
Chris@130 42 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e2.begin(), e2.end());
Chris@130 43
Chris@130 44 params.silenceThreshold = 7.0;
Chris@130 45 fc = FeatureConditioner(params);
Chris@130 46 out = fc.process(e1);
Chris@130 47 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 48 out = fc.process(e2);
Chris@130 49 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e2.begin(), e2.end());
Chris@130 50 }
Chris@130 51
Chris@130 52 BOOST_AUTO_TEST_CASE(nonorm_rectderiv)
Chris@130 53 {
Chris@130 54 FeatureConditioner::Parameters params;
Chris@130 55 params.norm = FeatureConditioner::NoNormalisation;
Chris@130 56 params.order = FeatureConditioner::OutputRectifiedDerivative;
Chris@130 57 vector<double>
Chris@130 58 e1 = getTestFeature(1),
Chris@130 59 e2 = getTestFeature(2),
Chris@130 60 e0 = getTestFeature(0);
Chris@130 61
Chris@130 62 params.silenceThreshold = 1.0;
Chris@130 63 FeatureConditioner fc(params);
Chris@130 64 vector<double> out = fc.process(e1);
Chris@130 65 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e1.begin(), e1.end());
Chris@130 66 out = fc.process(e2);
Chris@130 67 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e1.begin(), e1.end());
Chris@130 68 out = fc.process(e1);
Chris@130 69 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 70
Chris@130 71 params.silenceThreshold = 7.0;
Chris@130 72 fc = FeatureConditioner(params);
Chris@130 73 out = fc.process(e1);
Chris@130 74 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 75 out = fc.process(e2);
Chris@130 76 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e1.begin(), e1.end());
Chris@130 77 out = fc.process(e1);
Chris@130 78 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 79 out = fc.process(e2);
Chris@130 80 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e1.begin(), e1.end());
Chris@130 81 }
Chris@130 82
Chris@130 83 BOOST_AUTO_TEST_CASE(nonorm_deriv)
Chris@130 84 {
Chris@130 85 FeatureConditioner::Parameters params;
Chris@130 86 params.norm = FeatureConditioner::NoNormalisation;
Chris@130 87 params.order = FeatureConditioner::OutputDerivative;
Chris@130 88 vector<double>
Chris@130 89 e1 = getTestFeature(1),
Chris@130 90 e2 = getTestFeature(2),
Chris@130 91 e3 = getTestFeature(3),
Chris@130 92 e0 = getTestFeature(0);
Chris@130 93
Chris@130 94 params.silenceThreshold = 1.0;
Chris@130 95 FeatureConditioner fc(params);
Chris@130 96 vector<double> out = fc.process(e1);
Chris@130 97 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e1.begin(), e1.end());
Chris@130 98 out = fc.process(e2);
Chris@130 99 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e1.begin(), e1.end());
Chris@130 100 out = fc.process(e1);
Chris@130 101 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e1.begin(), e1.end());
Chris@130 102
Chris@130 103 params.silenceThreshold = 7.0;
Chris@130 104 fc = FeatureConditioner(params);
Chris@130 105 out = fc.process(e1);
Chris@130 106 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 107 out = fc.process(e3);
Chris@130 108 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e2.begin(), e2.end());
Chris@130 109 out = fc.process(e2);
Chris@130 110 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e1.begin(), e1.end());
Chris@130 111 out = fc.process(e1);
Chris@130 112 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 113 }
Chris@130 114
Chris@130 115 BOOST_AUTO_TEST_CASE(sum1_features)
Chris@130 116 {
Chris@130 117 FeatureConditioner::Parameters params;
Chris@130 118 params.norm = FeatureConditioner::NormaliseToSum1;
Chris@130 119 params.order = FeatureConditioner::OutputFeatures;
Chris@130 120 vector<double>
Chris@130 121 e1 = getTestFeature(1),
Chris@130 122 e2 = getTestFeature(2),
Chris@130 123 en = getTestFeature(1.0/6.0),
Chris@130 124 e0 = getTestFeature(0);
Chris@130 125
Chris@130 126 params.silenceThreshold = 1.0;
Chris@130 127 FeatureConditioner fc(params);
Chris@130 128 vector<double> out = fc.process(e1);
Chris@130 129 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), en.begin(), en.end());
Chris@130 130 out = fc.process(e2);
Chris@130 131 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), en.begin(), en.end());
Chris@130 132
Chris@130 133 params.silenceThreshold = 7.0;
Chris@130 134 fc = FeatureConditioner(params);
Chris@130 135 out = fc.process(e1);
Chris@130 136 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 137 out = fc.process(e2);
Chris@130 138 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), en.begin(), en.end());
Chris@130 139 }
Chris@130 140
Chris@130 141 BOOST_AUTO_TEST_CASE(sum1_rectderiv)
Chris@130 142 {
Chris@130 143 FeatureConditioner::Parameters params;
Chris@130 144 params.norm = FeatureConditioner::NormaliseToSum1;
Chris@130 145 params.order = FeatureConditioner::OutputRectifiedDerivative;
Chris@130 146 vector<double>
Chris@130 147 e1 = getTestFeature(1),
Chris@130 148 e2 = getTestFeature(2),
Chris@130 149 en = getTestFeature(1.0/6.0),
Chris@130 150 en2 = getTestFeature(1.0/12.0),
Chris@130 151 e0 = getTestFeature(0);
Chris@130 152
Chris@130 153 params.silenceThreshold = 1.0;
Chris@130 154 FeatureConditioner fc(params);
Chris@130 155 vector<double> out = fc.process(e1);
Chris@130 156 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), en.begin(), en.end());
Chris@130 157 out = fc.process(e2);
Chris@130 158 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), en2.begin(), en2.end());
Chris@130 159 out = fc.process(e1);
Chris@130 160 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 161
Chris@130 162 params.silenceThreshold = 7.0;
Chris@130 163 fc = FeatureConditioner(params);
Chris@130 164 out = fc.process(e1);
Chris@130 165 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 166 out = fc.process(e2);
Chris@130 167 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), en2.begin(), en2.end());
Chris@130 168 out = fc.process(e1);
Chris@130 169 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), e0.begin(), e0.end());
Chris@130 170 out = fc.process(e2);
Chris@130 171 BOOST_CHECK_EQUAL_COLLECTIONS(out.begin(), out.end(), en2.begin(), en2.end());
Chris@130 172 }
Chris@130 173
Chris@130 174
Chris@130 175 BOOST_AUTO_TEST_SUITE_END()
Chris@130 176