Mercurial > hg > qm-dsp
comparison tests/TestMedianFilter.cpp @ 476:2de6184b2ce0
Untabify
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Thu, 30 May 2019 18:30:58 +0100 |
parents | f898c901c055 |
children |
comparison
equal
deleted
inserted
replaced
475:64fc3009d0a3 | 476:2de6184b2ce0 |
---|---|
16 { | 16 { |
17 // A median filter of size N always retains a pool of N elements, | 17 // A median filter of size N always retains a pool of N elements, |
18 // which start out all-zero. So the output median will remain zero | 18 // which start out all-zero. So the output median will remain zero |
19 // until N/2 elements have been pushed. | 19 // until N/2 elements have been pushed. |
20 MedianFilter<double> f(3); | 20 MedianFilter<double> f(3); |
21 f.push(1); // 0 0 1 | 21 f.push(1); // 0 0 1 |
22 BOOST_CHECK_EQUAL(f.get(), 0); | 22 BOOST_CHECK_EQUAL(f.get(), 0); |
23 BOOST_CHECK_EQUAL(f.get(), 0); | 23 BOOST_CHECK_EQUAL(f.get(), 0); |
24 f.push(-3); // 0 1 -3 | 24 f.push(-3); // 0 1 -3 |
25 BOOST_CHECK_EQUAL(f.get(), 0); | 25 BOOST_CHECK_EQUAL(f.get(), 0); |
26 f.push(5); // 1 -3 5 | 26 f.push(5); // 1 -3 5 |
27 BOOST_CHECK_EQUAL(f.get(), 1); | 27 BOOST_CHECK_EQUAL(f.get(), 1); |
28 f.push(7); // -3 5 7 | 28 f.push(7); // -3 5 7 |
29 BOOST_CHECK_EQUAL(f.get(), 5); | 29 BOOST_CHECK_EQUAL(f.get(), 5); |
30 BOOST_CHECK_EQUAL(f.get(), 5); | 30 BOOST_CHECK_EQUAL(f.get(), 5); |
31 f.push(3); // 5 7 3 | 31 f.push(3); // 5 7 3 |
32 BOOST_CHECK_EQUAL(f.get(), 5); | 32 BOOST_CHECK_EQUAL(f.get(), 5); |
33 f.push(3); // 7 3 3 | 33 f.push(3); // 7 3 3 |
34 BOOST_CHECK_EQUAL(f.get(), 3); | 34 BOOST_CHECK_EQUAL(f.get(), 3); |
35 } | 35 } |
36 | 36 |
37 BOOST_AUTO_TEST_CASE(even) | 37 BOOST_AUTO_TEST_CASE(even) |
38 { | 38 { |
39 // Our median does not halve the difference (should it??), it just | 39 // Our median does not halve the difference (should it??), it just |
40 // returns the next element from the input set | 40 // returns the next element from the input set |
41 MedianFilter<double> f(4); | 41 MedianFilter<double> f(4); |
42 f.push(1); // 0 0 0 1 | 42 f.push(1); // 0 0 0 1 |
43 BOOST_CHECK_EQUAL(f.get(), 0); | 43 BOOST_CHECK_EQUAL(f.get(), 0); |
44 BOOST_CHECK_EQUAL(f.get(), 0); | 44 BOOST_CHECK_EQUAL(f.get(), 0); |
45 f.push(-3); // 0 0 1 -3 | 45 f.push(-3); // 0 0 1 -3 |
46 BOOST_CHECK_EQUAL(f.get(), 0); | 46 BOOST_CHECK_EQUAL(f.get(), 0); |
47 f.push(5); // 0 1 -3 5 | 47 f.push(5); // 0 1 -3 5 |
48 BOOST_CHECK_EQUAL(f.get(), 1); | 48 BOOST_CHECK_EQUAL(f.get(), 1); |
49 f.push(7); // 1 -3 5 7 | 49 f.push(7); // 1 -3 5 7 |
50 BOOST_CHECK_EQUAL(f.get(), 5); | 50 BOOST_CHECK_EQUAL(f.get(), 5); |
51 BOOST_CHECK_EQUAL(f.get(), 5); | 51 BOOST_CHECK_EQUAL(f.get(), 5); |
52 f.push(3); // -3 5 7 3 | 52 f.push(3); // -3 5 7 3 |
53 BOOST_CHECK_EQUAL(f.get(), 5); | 53 BOOST_CHECK_EQUAL(f.get(), 5); |
54 f.push(3); // 5 7 3 3 | 54 f.push(3); // 5 7 3 3 |
55 BOOST_CHECK_EQUAL(f.get(), 5); | 55 BOOST_CHECK_EQUAL(f.get(), 5); |
56 } | 56 } |
57 | 57 |
58 BOOST_AUTO_TEST_CASE(odd75) | 58 BOOST_AUTO_TEST_CASE(odd75) |
59 { | 59 { |
60 MedianFilter<double> f(5, 75.f); | 60 MedianFilter<double> f(5, 75.f); |
61 f.push(1); // 0 0 0 0 1 | 61 f.push(1); // 0 0 0 0 1 |
62 BOOST_CHECK_EQUAL(f.get(), 0); | 62 BOOST_CHECK_EQUAL(f.get(), 0); |
63 BOOST_CHECK_EQUAL(f.get(), 0); | 63 BOOST_CHECK_EQUAL(f.get(), 0); |
64 f.push(-3); // 0 0 0 1 -3 | 64 f.push(-3); // 0 0 0 1 -3 |
65 BOOST_CHECK_EQUAL(f.get(), 0); | 65 BOOST_CHECK_EQUAL(f.get(), 0); |
66 f.push(5); // 0 0 1 -3 5 | 66 f.push(5); // 0 0 1 -3 5 |
67 BOOST_CHECK_EQUAL(f.get(), 1); | 67 BOOST_CHECK_EQUAL(f.get(), 1); |
68 f.push(7); // 0 1 -3 5 7 | 68 f.push(7); // 0 1 -3 5 7 |
69 BOOST_CHECK_EQUAL(f.get(), 5); | 69 BOOST_CHECK_EQUAL(f.get(), 5); |
70 BOOST_CHECK_EQUAL(f.get(), 5); | 70 BOOST_CHECK_EQUAL(f.get(), 5); |
71 f.push(3); // 0 -3 5 7 3 | 71 f.push(3); // 0 -3 5 7 3 |
72 BOOST_CHECK_EQUAL(f.get(), 5); | 72 BOOST_CHECK_EQUAL(f.get(), 5); |
73 f.push(3); // 0 5 7 3 3 | 73 f.push(3); // 0 5 7 3 3 |
74 BOOST_CHECK_EQUAL(f.get(), 5); | 74 BOOST_CHECK_EQUAL(f.get(), 5); |
75 } | 75 } |
76 | 76 |
77 BOOST_AUTO_TEST_CASE(even75) | 77 BOOST_AUTO_TEST_CASE(even75) |
78 { | 78 { |
79 MedianFilter<double> f(4, 75.f); | 79 MedianFilter<double> f(4, 75.f); |
80 f.push(1); // 0 0 0 1 | 80 f.push(1); // 0 0 0 1 |
81 BOOST_CHECK_EQUAL(f.get(), 1); | 81 BOOST_CHECK_EQUAL(f.get(), 1); |
82 BOOST_CHECK_EQUAL(f.get(), 1); | 82 BOOST_CHECK_EQUAL(f.get(), 1); |
83 f.push(-3); // 0 0 1 -3 | 83 f.push(-3); // 0 0 1 -3 |
84 BOOST_CHECK_EQUAL(f.get(), 1); | 84 BOOST_CHECK_EQUAL(f.get(), 1); |
85 f.push(5); // 0 1 -3 5 | 85 f.push(5); // 0 1 -3 5 |
86 BOOST_CHECK_EQUAL(f.get(), 5); | 86 BOOST_CHECK_EQUAL(f.get(), 5); |
87 f.push(7); // 1 -3 5 7 | 87 f.push(7); // 1 -3 5 7 |
88 BOOST_CHECK_EQUAL(f.get(), 7); | 88 BOOST_CHECK_EQUAL(f.get(), 7); |
89 BOOST_CHECK_EQUAL(f.get(), 7); | 89 BOOST_CHECK_EQUAL(f.get(), 7); |
90 f.push(3); // -3 5 7 3 | 90 f.push(3); // -3 5 7 3 |
91 BOOST_CHECK_EQUAL(f.get(), 7); | 91 BOOST_CHECK_EQUAL(f.get(), 7); |
92 f.push(3); // 5 7 3 3 | 92 f.push(3); // 5 7 3 3 |
93 BOOST_CHECK_EQUAL(f.get(), 7); | 93 BOOST_CHECK_EQUAL(f.get(), 7); |
94 } | 94 } |
95 | 95 |
96 BOOST_AUTO_TEST_CASE(oddStandalone) | 96 BOOST_AUTO_TEST_CASE(oddStandalone) |
97 { | 97 { |