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