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 }