Mercurial > hg > svcore
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 | 
