annotate unit-tests/BTrack Tests/tests/Test_BTrack.cpp @ 58:f84ccd07e17f

Did more renaming of obscurely named variables and added a couple of accessor methods
author Adam Stark <adamstark@users.noreply.github.com>
date Thu, 23 Jan 2014 18:00:53 +0000
parents 296af6af6c3d
children
rev   line source
adamstark@56 1 #ifndef BTRACK_TESTS
adamstark@56 2 #define BTRACK_TESTS
adamstark@56 3
adamstark@56 4 #define BOOST_TEST_DYN_LINK
adamstark@56 5 #include <boost/test/unit_test.hpp>
adamstark@56 6
adamstark@56 7 #include <iostream>
adamstark@56 8 #include "../../../src/BTrack.h"
adamstark@56 9
adamstark@56 10 //======================================================================
adamstark@57 11 //==================== CHECKING INITIALISATION =========================
adamstark@57 12 //======================================================================
adamstark@57 13 BOOST_AUTO_TEST_SUITE(checkingInitialisation)
adamstark@57 14
adamstark@57 15 //======================================================================
adamstark@57 16 BOOST_AUTO_TEST_CASE(constructorWithNoArguments)
adamstark@57 17 {
adamstark@57 18 BTrack b;
adamstark@57 19
adamstark@57 20 BOOST_CHECK_EQUAL(b.getHopSize(), 512);
adamstark@57 21 }
adamstark@57 22
adamstark@57 23 //======================================================================
adamstark@57 24 BOOST_AUTO_TEST_CASE(constructorWithHopSize)
adamstark@57 25 {
adamstark@57 26 BTrack b(1024);
adamstark@57 27
adamstark@57 28 BOOST_CHECK_EQUAL(b.getHopSize(), 1024);
adamstark@57 29 }
adamstark@57 30
adamstark@57 31 //======================================================================
adamstark@57 32 BOOST_AUTO_TEST_CASE(constructorWithHopSizeAndFrameSize)
adamstark@57 33 {
adamstark@57 34 BTrack b(256,512);
adamstark@57 35
adamstark@57 36 BOOST_CHECK_EQUAL(b.getHopSize(), 256);
adamstark@57 37 }
adamstark@57 38
adamstark@57 39 BOOST_AUTO_TEST_SUITE_END()
adamstark@57 40 //======================================================================
adamstark@57 41 //======================================================================
adamstark@57 42
adamstark@57 43
adamstark@57 44 //======================================================================
adamstark@56 45 //=================== PROCESSING SIMPLE VALUES =========================
adamstark@56 46 //======================================================================
adamstark@56 47 BOOST_AUTO_TEST_SUITE(processingSimpleValues)
adamstark@56 48
adamstark@56 49 //======================================================================
adamstark@56 50 BOOST_AUTO_TEST_CASE(processZeroValuedOnsetDetectionFunctionSamples)
adamstark@56 51 {
adamstark@56 52 BTrack b(512);
adamstark@56 53
adamstark@56 54 long numSamples = 20000;
adamstark@56 55
adamstark@56 56 std::vector<double> odfSamples;
adamstark@56 57
adamstark@56 58 int maxInterval = 0;
adamstark@56 59 int currentInterval = 0;
adamstark@56 60 int numBeats = 0;
adamstark@56 61
adamstark@56 62 for (int i = 0;i < numSamples;i++)
adamstark@56 63 {
adamstark@56 64 b.processOnsetDetectionFunctionSample(0.0);
adamstark@56 65
adamstark@56 66 currentInterval++;
adamstark@56 67
adamstark@57 68 if (b.beatDueInCurrentFrame())
adamstark@56 69 {
adamstark@56 70 numBeats++;
adamstark@56 71
adamstark@56 72 if (currentInterval > maxInterval)
adamstark@56 73 {
adamstark@56 74 maxInterval = currentInterval;
adamstark@56 75 }
adamstark@56 76
adamstark@56 77 currentInterval = 0;
adamstark@56 78 }
adamstark@56 79 }
adamstark@56 80
adamstark@56 81 // check that the maximum interval between beats does not
adamstark@56 82 // exceed 100 onset detection function samples (~ 1.3 seconds)
adamstark@56 83 BOOST_CHECK(maxInterval < 100);
adamstark@56 84
adamstark@56 85 // check that we have at least a beat for every 100 samples
adamstark@56 86 BOOST_CHECK(numBeats > (numSamples/100));
adamstark@56 87
adamstark@56 88 }
adamstark@56 89
adamstark@56 90 //======================================================================
adamstark@56 91 BOOST_AUTO_TEST_CASE(processRandomOnsetDetectionFunctionSamples)
adamstark@56 92 {
adamstark@56 93 BTrack b(512);
adamstark@56 94
adamstark@56 95 long numSamples = 20000;
adamstark@56 96
adamstark@56 97 std::vector<double> odfSamples;
adamstark@56 98
adamstark@56 99 int maxInterval = 0;
adamstark@56 100 int currentInterval = 0;
adamstark@56 101 int numBeats = 0;
adamstark@56 102
adamstark@56 103 for (int i = 0;i < numSamples;i++)
adamstark@56 104 {
adamstark@56 105 odfSamples.push_back(random() % 1000);
adamstark@56 106 }
adamstark@56 107
adamstark@56 108 for (int i = 0;i < numSamples;i++)
adamstark@56 109 {
adamstark@56 110 b.processOnsetDetectionFunctionSample(odfSamples[i]);
adamstark@56 111
adamstark@56 112 currentInterval++;
adamstark@56 113
adamstark@57 114 if (b.beatDueInCurrentFrame())
adamstark@56 115 {
adamstark@56 116 numBeats++;
adamstark@56 117
adamstark@56 118 if (currentInterval > maxInterval)
adamstark@56 119 {
adamstark@56 120 maxInterval = currentInterval;
adamstark@56 121 }
adamstark@56 122
adamstark@56 123 currentInterval = 0;
adamstark@56 124 }
adamstark@56 125 }
adamstark@56 126
adamstark@56 127 // check that the maximum interval between beats does not
adamstark@56 128 // exceed 100 onset detection function samples (~ 1.3 seconds)
adamstark@56 129 BOOST_CHECK(maxInterval < 100);
adamstark@56 130
adamstark@56 131 // check that we have at least a beat for every 100 samples
adamstark@56 132 BOOST_CHECK(numBeats > (numSamples/100));
adamstark@56 133
adamstark@56 134 }
adamstark@56 135
adamstark@56 136 //======================================================================
adamstark@56 137 BOOST_AUTO_TEST_CASE(processNegativeOnsetDetectionFunctionSamples)
adamstark@56 138 {
adamstark@56 139 BTrack b(512);
adamstark@56 140
adamstark@56 141 long numSamples = 20000;
adamstark@56 142
adamstark@56 143 std::vector<double> odfSamples;
adamstark@56 144
adamstark@56 145 int maxInterval = 0;
adamstark@56 146 int currentInterval = 0;
adamstark@56 147 int numBeats = 0;
adamstark@56 148
adamstark@56 149 for (int i = 0;i < numSamples;i++)
adamstark@56 150 {
adamstark@56 151 odfSamples.push_back(-1.0*(random() % 1000));
adamstark@56 152 }
adamstark@56 153
adamstark@56 154 for (int i = 0;i < numSamples;i++)
adamstark@56 155 {
adamstark@56 156 b.processOnsetDetectionFunctionSample(odfSamples[i]);
adamstark@56 157
adamstark@56 158 currentInterval++;
adamstark@56 159
adamstark@57 160 if (b.beatDueInCurrentFrame())
adamstark@56 161 {
adamstark@56 162 numBeats++;
adamstark@56 163
adamstark@56 164 if (currentInterval > maxInterval)
adamstark@56 165 {
adamstark@56 166 maxInterval = currentInterval;
adamstark@56 167 }
adamstark@56 168
adamstark@56 169 currentInterval = 0;
adamstark@56 170 }
adamstark@56 171 }
adamstark@56 172
adamstark@56 173 // check that the maximum interval between beats does not
adamstark@56 174 // exceed 100 onset detection function samples (~ 1.3 seconds)
adamstark@56 175 BOOST_CHECK(maxInterval < 100);
adamstark@56 176
adamstark@56 177 // check that we have at least a beat for every 100 samples
adamstark@56 178 BOOST_CHECK(numBeats > (numSamples/100));
adamstark@56 179
adamstark@56 180 }
adamstark@56 181
adamstark@56 182 //======================================================================
adamstark@56 183 BOOST_AUTO_TEST_CASE(processSeriesOfDeltaFunctions)
adamstark@56 184 {
adamstark@56 185 BTrack b(512);
adamstark@56 186
adamstark@56 187 long numSamples = 20000;
adamstark@56 188 int beatPeriod = 43;
adamstark@56 189
adamstark@56 190 std::vector<double> odfSamples;
adamstark@56 191
adamstark@56 192 int maxInterval = 0;
adamstark@56 193 int currentInterval = 0;
adamstark@56 194 int numBeats = 0;
adamstark@56 195 int correct = 0;
adamstark@56 196
adamstark@56 197 for (int i = 0;i < numSamples;i++)
adamstark@56 198 {
adamstark@56 199 if (i % beatPeriod == 0)
adamstark@56 200 {
adamstark@56 201 odfSamples.push_back(1000);
adamstark@56 202 }
adamstark@56 203 else
adamstark@56 204 {
adamstark@56 205 odfSamples.push_back(0.0);
adamstark@56 206 }
adamstark@56 207 }
adamstark@56 208
adamstark@56 209 for (int i = 0;i < numSamples;i++)
adamstark@56 210 {
adamstark@56 211 b.processOnsetDetectionFunctionSample(odfSamples[i]);
adamstark@56 212
adamstark@56 213 currentInterval++;
adamstark@56 214
adamstark@57 215 if (b.beatDueInCurrentFrame())
adamstark@56 216 {
adamstark@56 217 numBeats++;
adamstark@56 218
adamstark@56 219 if (currentInterval > maxInterval)
adamstark@56 220 {
adamstark@56 221 maxInterval = currentInterval;
adamstark@56 222 }
adamstark@56 223
adamstark@56 224 if (currentInterval == beatPeriod)
adamstark@56 225 {
adamstark@56 226 correct++;
adamstark@56 227 }
adamstark@56 228
adamstark@56 229 currentInterval = 0;
adamstark@56 230 }
adamstark@56 231 }
adamstark@56 232
adamstark@56 233 // check that the maximum interval between beats does not
adamstark@56 234 // exceed 100 onset detection function samples (~ 1.3 seconds)
adamstark@56 235 BOOST_CHECK(maxInterval < 100);
adamstark@56 236
adamstark@56 237 // check that we have at least a beat for every 100 samples
adamstark@56 238 BOOST_CHECK(numBeats > (numSamples/100));
adamstark@56 239
adamstark@56 240 // check that the number of correct beats is larger than 99%
adamstark@56 241 // of the total number of beats
adamstark@56 242 BOOST_CHECK(((double)correct) > (((double)numBeats)*0.99));
adamstark@56 243 }
adamstark@56 244
adamstark@56 245
adamstark@56 246 BOOST_AUTO_TEST_SUITE_END()
adamstark@57 247 //======================================================================
adamstark@57 248 //======================================================================
adamstark@56 249
adamstark@56 250
adamstark@56 251
adamstark@56 252
adamstark@56 253
adamstark@56 254 #endif