Mercurial > hg > libxtract
comparison tests/xttest_scalar.cpp @ 264:ecd6f2cf1346
Initial unit testing setup with an example test
author | Jamie Bullock <jamie@jamiebullock.com> |
---|---|
date | Mon, 10 Nov 2014 20:29:19 +0000 |
parents | |
children | 41fe82c7ff80 |
comparison
equal
deleted
inserted
replaced
263:5b13897691e8 | 264:ecd6f2cf1346 |
---|---|
1 | |
2 #include "xttest_util.hpp" | |
3 | |
4 #include "xtract/xtract_scalar.h" | |
5 | |
6 #include "catch.hpp" | |
7 | |
8 | |
9 SCENARIO( "F0 is correctly detected for a clean sine wave", "[xtract_f0]" ) | |
10 { | |
11 GIVEN( "a 1024 sample block with a sample rate of 44100" ) | |
12 { | |
13 uint32_t blocksize = 1024; | |
14 double samplerate = 44100; | |
15 double result = 0.0; | |
16 double table[blocksize]; | |
17 | |
18 WHEN( "the frequency is 344.53125 Hz" ) // This will give a period of exactly 128 samples: 8 cycles in the block | |
19 { | |
20 double frequency = 344.53125; | |
21 double min = frequency * 0.995; | |
22 double max = frequency * 1.005; | |
23 | |
24 WHEN( "the amplitude is 1.0" ) | |
25 { | |
26 double amplitude = 1.0; | |
27 | |
28 xttest_gen_sine(table, blocksize, samplerate, frequency, amplitude); | |
29 xtract_f0(table, blocksize, &samplerate, &result); | |
30 CAPTURE( result ); | |
31 | |
32 THEN( "the detected F0 is in the range 344.53125 ± 0.5%" ) | |
33 { | |
34 REQUIRE(result < max); | |
35 REQUIRE(result > min); | |
36 } | |
37 } | |
38 WHEN( "the amplitude is 0.1" ) | |
39 { | |
40 double amplitude = 0.1; | |
41 | |
42 xttest_gen_sine(table, blocksize, samplerate, frequency, amplitude); | |
43 xtract_f0(table, blocksize, &samplerate, &result); | |
44 CAPTURE( result ); | |
45 | |
46 THEN( "the detected F0 is in the range 344.53125 ± 0.5%" ) | |
47 { | |
48 REQUIRE(result < max); | |
49 REQUIRE(result > min); | |
50 } | |
51 } | |
52 } | |
53 } | |
54 } |