comparison base/test/RangeMapperTest.h @ 879:eb6b6a88faed

Unit-test RangeMapper, fix a couple of bugs
author Chris Cannam
date Fri, 31 Jan 2014 13:39:37 +0000
parents
children b4787b595db3
comparison
equal deleted inserted replaced
862:786ee8d1f30e 879:eb6b6a88faed
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2
3 /*
4 Sonic Visualiser
5 An audio file viewer and annotation editor.
6 Centre for Digital Music, Queen Mary, University of London.
7
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License as
10 published by the Free Software Foundation; either version 2 of the
11 License, or (at your option) any later version. See the file
12 COPYING included with this distribution for more information.
13 */
14
15 #ifndef TEST_RANGE_MAPPER_H
16 #define TEST_RANGE_MAPPER_H
17
18 #include "../RangeMapper.h"
19
20 #include <QObject>
21 #include <QtTest>
22 #include <QDir>
23
24 #include <iostream>
25
26 using namespace std;
27
28 class RangeMapperTest : public QObject
29 {
30 Q_OBJECT
31
32 private slots:
33 void linearUpForward()
34 {
35 LinearRangeMapper rm(1, 8, 0.5, 4.0, "x", false);
36 QCOMPARE(rm.getUnit(), QString("x"));
37 QCOMPARE(rm.getPositionForValue(0.5), 1);
38 QCOMPARE(rm.getPositionForValue(4.0), 8);
39 QCOMPARE(rm.getPositionForValue(3.0), 6);
40 QCOMPARE(rm.getPositionForValue(3.1), 6);
41 QCOMPARE(rm.getPositionForValue(3.4), 7);
42 QCOMPARE(rm.getPositionForValue(0.2), 1);
43 QCOMPARE(rm.getPositionForValue(-12), 1);
44 QCOMPARE(rm.getPositionForValue(6.1), 8);
45 }
46
47 void linearDownForward()
48 {
49 LinearRangeMapper rm(1, 8, 0.5, 4.0, "x", true);
50 QCOMPARE(rm.getUnit(), QString("x"));
51 QCOMPARE(rm.getPositionForValue(0.5), 8);
52 QCOMPARE(rm.getPositionForValue(4.0), 1);
53 QCOMPARE(rm.getPositionForValue(3.0), 3);
54 QCOMPARE(rm.getPositionForValue(3.1), 3);
55 QCOMPARE(rm.getPositionForValue(3.4), 2);
56 QCOMPARE(rm.getPositionForValue(0.2), 8);
57 QCOMPARE(rm.getPositionForValue(-12), 8);
58 QCOMPARE(rm.getPositionForValue(6.1), 1);
59 }
60
61 void linearUpBackward()
62 {
63 LinearRangeMapper rm(1, 8, 0.5, 4.0, "x", false);
64 QCOMPARE(rm.getUnit(), QString("x"));
65 QCOMPARE(rm.getValueForPosition(1), 0.5);
66 QCOMPARE(rm.getValueForPosition(8), 4.0);
67 QCOMPARE(rm.getValueForPosition(6), 3.0);
68 QCOMPARE(rm.getValueForPosition(7), 3.5);
69 QCOMPARE(rm.getValueForPosition(0), rm.getValueForPosition(1));
70 QCOMPARE(rm.getValueForPosition(9), rm.getValueForPosition(8));
71 }
72
73 void linearDownBackward()
74 {
75 LinearRangeMapper rm(1, 8, 0.5, 4.0, "x", true);
76 QCOMPARE(rm.getUnit(), QString("x"));
77 QCOMPARE(rm.getValueForPosition(8), 0.5);
78 QCOMPARE(rm.getValueForPosition(1), 4.0);
79 QCOMPARE(rm.getValueForPosition(3), 3.0);
80 QCOMPARE(rm.getValueForPosition(2), 3.5);
81 QCOMPARE(rm.getValueForPosition(0), rm.getValueForPosition(1));
82 QCOMPARE(rm.getValueForPosition(9), rm.getValueForPosition(8));
83 }
84
85 void logUpForward()
86 {
87 LogRangeMapper rm(3, 7, 10, 100000, "x", false);
88 QCOMPARE(rm.getUnit(), QString("x"));
89 QCOMPARE(rm.getPositionForValue(10.0), 3);
90 QCOMPARE(rm.getPositionForValue(100000.0), 7);
91 QCOMPARE(rm.getPositionForValue(1.0), 3);
92 QCOMPARE(rm.getPositionForValue(1000000.0), 7);
93 QCOMPARE(rm.getPositionForValue(1000.0), 5);
94 QCOMPARE(rm.getPositionForValue(900.0), 5);
95 QCOMPARE(rm.getPositionForValue(20000), 6);
96 }
97
98 void logDownForward()
99 {
100 LogRangeMapper rm(3, 7, 10, 100000, "x", true);
101 QCOMPARE(rm.getUnit(), QString("x"));
102 QCOMPARE(rm.getPositionForValue(10.0), 7);
103 QCOMPARE(rm.getPositionForValue(100000.0), 3);
104 QCOMPARE(rm.getPositionForValue(1.0), 7);
105 QCOMPARE(rm.getPositionForValue(1000000.0), 3);
106 QCOMPARE(rm.getPositionForValue(1000.0), 5);
107 QCOMPARE(rm.getPositionForValue(900.0), 5);
108 QCOMPARE(rm.getPositionForValue(20000), 4);
109 }
110
111 void logUpBackward()
112 {
113 LogRangeMapper rm(3, 7, 10, 100000, "x", false);
114 QCOMPARE(rm.getUnit(), QString("x"));
115 QCOMPARE(rm.getValueForPosition(3), 10.0);
116 QCOMPARE(rm.getValueForPosition(7), 100000.0);
117 QCOMPARE(rm.getValueForPosition(5), 1000.0);
118 QCOMPARE(rm.getValueForPosition(6), 10000.0);
119 QCOMPARE(rm.getValueForPosition(0), rm.getValueForPosition(3));
120 QCOMPARE(rm.getValueForPosition(9), rm.getValueForPosition(7));
121 }
122
123 void logDownBackward()
124 {
125 LogRangeMapper rm(3, 7, 10, 100000, "x", true);
126 QCOMPARE(rm.getUnit(), QString("x"));
127 QCOMPARE(rm.getValueForPosition(7), 10.0);
128 QCOMPARE(rm.getValueForPosition(3), 100000.0);
129 QCOMPARE(rm.getValueForPosition(5), 1000.0);
130 QCOMPARE(rm.getValueForPosition(4), 10000.0);
131 QCOMPARE(rm.getValueForPosition(0), rm.getValueForPosition(3));
132 QCOMPARE(rm.getValueForPosition(9), rm.getValueForPosition(7));
133 }
134 };
135
136 #endif
137
138