annotate base/test/TestVampRealTime.h @ 1346:75ad55315db4 3.0-integration

More work on getting tests (especially file encoding ones) running on Windows. Various problems here to do with interaction with test filenames in Hg repos
author Chris Cannam
date Fri, 06 Jan 2017 15:44:55 +0000
parents 980afe3f1a76
children 2001fe23e449
rev   line source
Chris@1262 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@1262 2
Chris@1262 3 /*
Chris@1262 4 Sonic Visualiser
Chris@1262 5 An audio file viewer and annotation editor.
Chris@1262 6 Centre for Digital Music, Queen Mary, University of London.
Chris@1262 7
Chris@1262 8 This program is free software; you can redistribute it and/or
Chris@1262 9 modify it under the terms of the GNU General Public License as
Chris@1262 10 published by the Free Software Foundation; either version 2 of the
Chris@1262 11 License, or (at your option) any later version. See the file
Chris@1262 12 COPYING included with this distribution for more information.
Chris@1262 13 */
Chris@1262 14
Chris@1262 15 #ifndef TEST_VAMP_REALTIME_H
Chris@1262 16
Chris@1262 17 #include <QObject>
Chris@1262 18 #include <QtTest>
Chris@1262 19 #include <QDir>
Chris@1262 20
Chris@1262 21 #include <iostream>
Chris@1262 22
Chris@1262 23 #include <vamp-hostsdk/RealTime.h>
Chris@1262 24
Chris@1262 25 using namespace std;
Chris@1262 26
Chris@1262 27 #define ONE_MILLION 1000000
Chris@1262 28 #define ONE_BILLION 1000000000
Chris@1262 29
Chris@1262 30 class TestVampRealTime : public QObject
Chris@1262 31 {
Chris@1262 32 Q_OBJECT
Chris@1262 33
Chris@1262 34 void compareTexts(string s, const char *e) {
Chris@1262 35 QCOMPARE(QString(s.c_str()), QString(e));
Chris@1262 36 }
Chris@1262 37
Chris@1262 38 typedef Vamp::RealTime RealTime;
Chris@1262 39 typedef long frame_type;
Chris@1344 40
Chris@1262 41 private slots:
Chris@1262 42
Chris@1262 43 void zero()
Chris@1262 44 {
Chris@1344 45 QCOMPARE(RealTime(0, 0), RealTime::zeroTime);
Chris@1344 46 QCOMPARE(RealTime(0, 0).sec, 0);
Chris@1344 47 QCOMPARE(RealTime(0, 0).nsec, 0);
Chris@1344 48 QCOMPARE(RealTime(0, 0).msec(), 0);
Chris@1344 49 QCOMPARE(RealTime(0, 0).usec(), 0);
Chris@1262 50 }
Chris@1262 51
Chris@1262 52 void ctor()
Chris@1262 53 {
Chris@1344 54 QCOMPARE(RealTime(0, 0), RealTime(0, 0));
Chris@1262 55
Chris@1344 56 // wraparounds
Chris@1344 57 QCOMPARE(RealTime(0, ONE_BILLION/2), RealTime(1, -ONE_BILLION/2));
Chris@1344 58 QCOMPARE(RealTime(0, -ONE_BILLION/2), RealTime(-1, ONE_BILLION/2));
Chris@1262 59
Chris@1344 60 QCOMPARE(RealTime(1, ONE_BILLION), RealTime(2, 0));
Chris@1344 61 QCOMPARE(RealTime(1, -ONE_BILLION), RealTime(0, 0));
Chris@1344 62 QCOMPARE(RealTime(-1, ONE_BILLION), RealTime(0, 0));
Chris@1344 63 QCOMPARE(RealTime(-1, -ONE_BILLION), RealTime(-2, 0));
Chris@1262 64
Chris@1344 65 QCOMPARE(RealTime(2, -ONE_BILLION*2), RealTime(0, 0));
Chris@1344 66 QCOMPARE(RealTime(2, -ONE_BILLION/2), RealTime(1, ONE_BILLION/2));
Chris@1262 67
Chris@1344 68 QCOMPARE(RealTime(-2, ONE_BILLION*2), RealTime(0, 0));
Chris@1344 69 QCOMPARE(RealTime(-2, ONE_BILLION/2), RealTime(-1, -ONE_BILLION/2));
Chris@1344 70
Chris@1344 71 QCOMPARE(RealTime(0, 1).sec, 0);
Chris@1344 72 QCOMPARE(RealTime(0, 1).nsec, 1);
Chris@1344 73 QCOMPARE(RealTime(0, -1).sec, 0);
Chris@1344 74 QCOMPARE(RealTime(0, -1).nsec, -1);
Chris@1344 75 QCOMPARE(RealTime(1, -1).sec, 0);
Chris@1344 76 QCOMPARE(RealTime(1, -1).nsec, ONE_BILLION-1);
Chris@1344 77 QCOMPARE(RealTime(-1, 1).sec, 0);
Chris@1344 78 QCOMPARE(RealTime(-1, 1).nsec, -ONE_BILLION+1);
Chris@1344 79 QCOMPARE(RealTime(-1, -1).sec, -1);
Chris@1344 80 QCOMPARE(RealTime(-1, -1).nsec, -1);
Chris@1344 81
Chris@1344 82 QCOMPARE(RealTime(2, -ONE_BILLION*2).sec, 0);
Chris@1344 83 QCOMPARE(RealTime(2, -ONE_BILLION*2).nsec, 0);
Chris@1344 84 QCOMPARE(RealTime(2, -ONE_BILLION/2).sec, 1);
Chris@1344 85 QCOMPARE(RealTime(2, -ONE_BILLION/2).nsec, ONE_BILLION/2);
Chris@1262 86
Chris@1344 87 QCOMPARE(RealTime(-2, ONE_BILLION*2).sec, 0);
Chris@1344 88 QCOMPARE(RealTime(-2, ONE_BILLION*2).nsec, 0);
Chris@1344 89 QCOMPARE(RealTime(-2, ONE_BILLION/2).sec, -1);
Chris@1344 90 QCOMPARE(RealTime(-2, ONE_BILLION/2).nsec, -ONE_BILLION/2);
Chris@1262 91 }
Chris@1262 92
Chris@1262 93 void fromSeconds()
Chris@1262 94 {
Chris@1344 95 QCOMPARE(RealTime::fromSeconds(0), RealTime(0, 0));
Chris@1262 96
Chris@1344 97 QCOMPARE(RealTime::fromSeconds(0.5).sec, 0);
Chris@1344 98 QCOMPARE(RealTime::fromSeconds(0.5).nsec, ONE_BILLION/2);
Chris@1344 99 QCOMPARE(RealTime::fromSeconds(0.5).usec(), ONE_MILLION/2);
Chris@1344 100 QCOMPARE(RealTime::fromSeconds(0.5).msec(), 500);
Chris@1344 101
Chris@1344 102 QCOMPARE(RealTime::fromSeconds(0.5), RealTime(0, ONE_BILLION/2));
Chris@1344 103 QCOMPARE(RealTime::fromSeconds(1), RealTime(1, 0));
Chris@1344 104 QCOMPARE(RealTime::fromSeconds(1.5), RealTime(1, ONE_BILLION/2));
Chris@1262 105
Chris@1344 106 QCOMPARE(RealTime::fromSeconds(-0.5).sec, 0);
Chris@1344 107 QCOMPARE(RealTime::fromSeconds(-0.5).nsec, -ONE_BILLION/2);
Chris@1344 108 QCOMPARE(RealTime::fromSeconds(-0.5).usec(), -ONE_MILLION/2);
Chris@1344 109 QCOMPARE(RealTime::fromSeconds(-0.5).msec(), -500);
Chris@1344 110
Chris@1344 111 QCOMPARE(RealTime::fromSeconds(-1.5).sec, -1);
Chris@1344 112 QCOMPARE(RealTime::fromSeconds(-1.5).nsec, -ONE_BILLION/2);
Chris@1344 113 QCOMPARE(RealTime::fromSeconds(-1.5).usec(), -ONE_MILLION/2);
Chris@1344 114 QCOMPARE(RealTime::fromSeconds(-1.5).msec(), -500);
Chris@1344 115
Chris@1344 116 QCOMPARE(RealTime::fromSeconds(-0.5), RealTime(0, -ONE_BILLION/2));
Chris@1344 117 QCOMPARE(RealTime::fromSeconds(-1), RealTime(-1, 0));
Chris@1344 118 QCOMPARE(RealTime::fromSeconds(-1.5), RealTime(-1, -ONE_BILLION/2));
Chris@1262 119 }
Chris@1262 120
Chris@1262 121 void fromMilliseconds()
Chris@1262 122 {
Chris@1344 123 QCOMPARE(RealTime::fromMilliseconds(0), RealTime(0, 0));
Chris@1344 124 QCOMPARE(RealTime::fromMilliseconds(500), RealTime(0, ONE_BILLION/2));
Chris@1344 125 QCOMPARE(RealTime::fromMilliseconds(1000), RealTime(1, 0));
Chris@1344 126 QCOMPARE(RealTime::fromMilliseconds(1500), RealTime(1, ONE_BILLION/2));
Chris@1262 127
Chris@1344 128 QCOMPARE(RealTime::fromMilliseconds(-0), RealTime(0, 0));
Chris@1344 129 QCOMPARE(RealTime::fromMilliseconds(-500), RealTime(0, -ONE_BILLION/2));
Chris@1344 130 QCOMPARE(RealTime::fromMilliseconds(-1000), RealTime(-1, 0));
Chris@1344 131 QCOMPARE(RealTime::fromMilliseconds(-1500), RealTime(-1, -ONE_BILLION/2));
Chris@1262 132 }
Chris@1344 133
Chris@1344 134 #ifndef _WIN32
Chris@1262 135 void fromTimeval()
Chris@1262 136 {
Chris@1344 137 struct timeval tv;
Chris@1262 138
Chris@1344 139 tv.tv_sec = 0; tv.tv_usec = 0;
Chris@1344 140 QCOMPARE(RealTime::fromTimeval(tv), RealTime(0, 0));
Chris@1344 141 tv.tv_sec = 0; tv.tv_usec = ONE_MILLION/2;
Chris@1344 142 QCOMPARE(RealTime::fromTimeval(tv), RealTime(0, ONE_BILLION/2));
Chris@1344 143 tv.tv_sec = 1; tv.tv_usec = 0;
Chris@1344 144 QCOMPARE(RealTime::fromTimeval(tv), RealTime(1, 0));
Chris@1344 145 tv.tv_sec = 1; tv.tv_usec = ONE_MILLION/2;
Chris@1344 146 QCOMPARE(RealTime::fromTimeval(tv), RealTime(1, ONE_BILLION/2));
Chris@1262 147
Chris@1344 148 tv.tv_sec = 0; tv.tv_usec = -ONE_MILLION/2;
Chris@1344 149 QCOMPARE(RealTime::fromTimeval(tv), RealTime(0, -ONE_BILLION/2));
Chris@1344 150 tv.tv_sec = -1; tv.tv_usec = 0;
Chris@1344 151 QCOMPARE(RealTime::fromTimeval(tv), RealTime(-1, 0));
Chris@1344 152 tv.tv_sec = -1; tv.tv_usec = -ONE_MILLION/2;
Chris@1344 153 QCOMPARE(RealTime::fromTimeval(tv), RealTime(-1, -ONE_BILLION/2));
Chris@1262 154 }
Chris@1344 155 #endif
Chris@1262 156
Chris@1262 157 void assign()
Chris@1262 158 {
Chris@1344 159 RealTime r;
Chris@1344 160 r = RealTime(0, 0);
Chris@1344 161 QCOMPARE(r, RealTime::zeroTime);
Chris@1344 162 r = RealTime(0, ONE_BILLION/2);
Chris@1262 163 QCOMPARE(r.sec, 0);
Chris@1262 164 QCOMPARE(r.nsec, ONE_BILLION/2);
Chris@1344 165 r = RealTime(-1, -ONE_BILLION/2);
Chris@1262 166 QCOMPARE(r.sec, -1);
Chris@1262 167 QCOMPARE(r.nsec, -ONE_BILLION/2);
Chris@1262 168 }
Chris@1262 169
Chris@1262 170 void plus()
Chris@1262 171 {
Chris@1344 172 QCOMPARE(RealTime(0, 0) + RealTime(0, 0), RealTime(0, 0));
Chris@1262 173
Chris@1344 174 QCOMPARE(RealTime(0, 0) + RealTime(0, ONE_BILLION/2), RealTime(0, ONE_BILLION/2));
Chris@1344 175 QCOMPARE(RealTime(0, ONE_BILLION/2) + RealTime(0, ONE_BILLION/2), RealTime(1, 0));
Chris@1344 176 QCOMPARE(RealTime(1, 0) + RealTime(0, ONE_BILLION/2), RealTime(1, ONE_BILLION/2));
Chris@1262 177
Chris@1344 178 QCOMPARE(RealTime(0, 0) + RealTime(0, -ONE_BILLION/2), RealTime(0, -ONE_BILLION/2));
Chris@1344 179 QCOMPARE(RealTime(0, -ONE_BILLION/2) + RealTime(0, -ONE_BILLION/2), RealTime(-1, 0));
Chris@1344 180 QCOMPARE(RealTime(-1, 0) + RealTime(0, -ONE_BILLION/2), RealTime(-1, -ONE_BILLION/2));
Chris@1262 181
Chris@1344 182 QCOMPARE(RealTime(1, 0) + RealTime(0, -ONE_BILLION/2), RealTime(0, ONE_BILLION/2));
Chris@1344 183 QCOMPARE(RealTime(1, 0) + RealTime(0, -ONE_BILLION/2) + RealTime(0, -ONE_BILLION/2), RealTime(0, 0));
Chris@1344 184 QCOMPARE(RealTime(1, 0) + RealTime(0, -ONE_BILLION/2) + RealTime(0, -ONE_BILLION/2) + RealTime(0, -ONE_BILLION/2), RealTime(0, -ONE_BILLION/2));
Chris@1262 185
Chris@1344 186 QCOMPARE(RealTime(0, ONE_BILLION/2) + RealTime(-1, 0), RealTime(0, -ONE_BILLION/2));
Chris@1344 187 QCOMPARE(RealTime(0, -ONE_BILLION/2) + RealTime(1, 0), RealTime(0, ONE_BILLION/2));
Chris@1262 188 }
Chris@1262 189
Chris@1262 190 void minus()
Chris@1262 191 {
Chris@1344 192 QCOMPARE(RealTime(0, 0) - RealTime(0, 0), RealTime(0, 0));
Chris@1262 193
Chris@1344 194 QCOMPARE(RealTime(0, 0) - RealTime(0, ONE_BILLION/2), RealTime(0, -ONE_BILLION/2));
Chris@1344 195 QCOMPARE(RealTime(0, ONE_BILLION/2) - RealTime(0, ONE_BILLION/2), RealTime(0, 0));
Chris@1344 196 QCOMPARE(RealTime(1, 0) - RealTime(0, ONE_BILLION/2), RealTime(0, ONE_BILLION/2));
Chris@1262 197
Chris@1344 198 QCOMPARE(RealTime(0, 0) - RealTime(0, -ONE_BILLION/2), RealTime(0, ONE_BILLION/2));
Chris@1344 199 QCOMPARE(RealTime(0, -ONE_BILLION/2) - RealTime(0, -ONE_BILLION/2), RealTime(0, 0));
Chris@1344 200 QCOMPARE(RealTime(-1, 0) - RealTime(0, -ONE_BILLION/2), RealTime(0, -ONE_BILLION/2));
Chris@1262 201
Chris@1344 202 QCOMPARE(RealTime(1, 0) - RealTime(0, -ONE_BILLION/2), RealTime(1, ONE_BILLION/2));
Chris@1344 203 QCOMPARE(RealTime(1, 0) - RealTime(0, -ONE_BILLION/2) - RealTime(0, -ONE_BILLION/2), RealTime(2, 0));
Chris@1344 204 QCOMPARE(RealTime(1, 0) - RealTime(0, -ONE_BILLION/2) - RealTime(0, -ONE_BILLION/2) - RealTime(0, -ONE_BILLION/2), RealTime(2, ONE_BILLION/2));
Chris@1262 205
Chris@1344 206 QCOMPARE(RealTime(0, ONE_BILLION/2) - RealTime(-1, 0), RealTime(1, ONE_BILLION/2));
Chris@1344 207 QCOMPARE(RealTime(0, -ONE_BILLION/2) - RealTime(1, 0), RealTime(-1, -ONE_BILLION/2));
Chris@1262 208 }
Chris@1262 209
Chris@1262 210 void negate()
Chris@1262 211 {
Chris@1344 212 QCOMPARE(-RealTime(0, 0), RealTime(0, 0));
Chris@1344 213 QCOMPARE(-RealTime(1, 0), RealTime(-1, 0));
Chris@1344 214 QCOMPARE(-RealTime(1, ONE_BILLION/2), RealTime(-1, -ONE_BILLION/2));
Chris@1344 215 QCOMPARE(-RealTime(-1, -ONE_BILLION/2), RealTime(1, ONE_BILLION/2));
Chris@1262 216 }
Chris@1262 217
Chris@1262 218 void compare()
Chris@1262 219 {
Chris@1344 220 int sec, nsec;
Chris@1344 221 for (sec = -2; sec <= 2; sec += 2) {
Chris@1344 222 for (nsec = -1; nsec <= 1; nsec += 1) {
Chris@1344 223 QCOMPARE(RealTime(sec, nsec) < RealTime(sec, nsec), false);
Chris@1344 224 QCOMPARE(RealTime(sec, nsec) > RealTime(sec, nsec), false);
Chris@1344 225 QCOMPARE(RealTime(sec, nsec) == RealTime(sec, nsec), true);
Chris@1344 226 QCOMPARE(RealTime(sec, nsec) != RealTime(sec, nsec), false);
Chris@1344 227 QCOMPARE(RealTime(sec, nsec) <= RealTime(sec, nsec), true);
Chris@1344 228 QCOMPARE(RealTime(sec, nsec) >= RealTime(sec, nsec), true);
Chris@1344 229 }
Chris@1344 230 }
Chris@1344 231 RealTime prev(-3, 0);
Chris@1344 232 for (sec = -2; sec <= 2; sec += 2) {
Chris@1344 233 for (nsec = -1; nsec <= 1; nsec += 1) {
Chris@1262 234
Chris@1344 235 RealTime curr(sec, nsec);
Chris@1262 236
Chris@1344 237 QCOMPARE(prev < curr, true);
Chris@1344 238 QCOMPARE(prev > curr, false);
Chris@1344 239 QCOMPARE(prev == curr, false);
Chris@1344 240 QCOMPARE(prev != curr, true);
Chris@1344 241 QCOMPARE(prev <= curr, true);
Chris@1344 242 QCOMPARE(prev >= curr, false);
Chris@1262 243
Chris@1344 244 QCOMPARE(curr < prev, false);
Chris@1344 245 QCOMPARE(curr > prev, true);
Chris@1344 246 QCOMPARE(curr == prev, false);
Chris@1344 247 QCOMPARE(curr != prev, true);
Chris@1344 248 QCOMPARE(curr <= prev, false);
Chris@1344 249 QCOMPARE(curr >= prev, true);
Chris@1262 250
Chris@1344 251 prev = curr;
Chris@1344 252 }
Chris@1344 253 }
Chris@1262 254 }
Chris@1262 255
Chris@1262 256 void frame()
Chris@1262 257 {
Chris@1262 258 int frames[] = {
Chris@1262 259 0, 1, 2047, 2048, 6656,
Chris@1262 260 32767, 32768, 44100, 44101,
Chris@1262 261 999999999, 2000000000
Chris@1262 262 };
Chris@1262 263 int n = sizeof(frames)/sizeof(frames[0]);
Chris@1262 264
Chris@1262 265 int rates[] = {
Chris@1262 266 1, 2, 8000, 22050,
Chris@1262 267 44100, 44101, 192000, 2000000001
Chris@1262 268 };
Chris@1262 269 int m = sizeof(rates)/sizeof(rates[0]);
Chris@1262 270
Chris@1262 271 vector<vector<RealTime>> realTimes = {
Chris@1262 272 { { 0, 0 }, { 1, 0 }, { 2047, 0 }, { 2048, 0 },
Chris@1262 273 { 6656, 0 }, { 32767, 0 }, { 32768, 0 }, { 44100, 0 },
Chris@1262 274 { 44101, 0 }, { 999999999, 0 }, { 2000000000, 0 } },
Chris@1262 275 { { 0, 0 }, { 0, 500000000 }, { 1023, 500000000 }, { 1024, 0 },
Chris@1262 276 { 3328, 0 }, { 16383, 500000000 }, { 16384, 0 }, { 22050, 0 },
Chris@1262 277 { 22050, 500000000 }, { 499999999, 500000000 }, { 1000000000, 0 } },
Chris@1262 278 { { 0, 0 }, { 0, 125000 }, { 0, 255875000 }, { 0, 256000000 },
Chris@1262 279 { 0, 832000000 }, { 4, 95875000 }, { 4, 96000000 }, { 5, 512500000 },
Chris@1262 280 { 5, 512625000 }, { 124999, 999875000 }, { 250000, 0 } },
Chris@1262 281 { { 0, 0 }, { 0, 45351 }, { 0, 92834467 }, { 0, 92879819 },
Chris@1262 282 { 0, 301859410 }, { 1, 486031746 }, { 1, 486077098 }, { 2, 0 },
Chris@1262 283 { 2, 45351 }, { 45351, 473877551 }, { 90702, 947845805 } },
Chris@1262 284 { { 0, 0 }, { 0, 22676 }, { 0, 46417234 }, { 0, 46439909 },
Chris@1262 285 { 0, 150929705 }, { 0, 743015873 }, { 0, 743038549 }, { 1, 0 },
Chris@1262 286 { 1, 22676 }, { 22675, 736938776 }, { 45351, 473922902 } },
Chris@1262 287 { { 0, 0 }, { 0, 22675 }, { 0, 46416181 }, { 0, 46438856 },
Chris@1262 288 { 0, 150926283 }, { 0, 742999025 }, { 0, 743021700 }, { 0, 999977325 },
Chris@1262 289 { 1, 0 }, { 22675, 222761389 }, { 45350, 445568128 } },
Chris@1262 290 { { 0, 0 }, { 0, 5208 }, { 0, 10661458 }, { 0, 10666667 },
Chris@1262 291 { 0, 34666667 }, { 0, 170661458 }, { 0, 170666667 }, { 0, 229687500 },
Chris@1262 292 { 0, 229692708 }, { 5208, 333328125 }, { 10416, 666666667 } },
Chris@1262 293 { { 0, 0 }, { 0, 0 }, { 0, 1023 }, { 0, 1024 },
Chris@1262 294 { 0, 3328 }, { 0, 16383 }, { 0, 16384 }, { 0, 22050 },
Chris@1262 295 { 0, 22050 }, { 0, 499999999 }, { 1, 0 } }
Chris@1262 296 };
Chris@1262 297
Chris@1262 298 for (int i = 0; i < n; ++i) {
Chris@1262 299 frame_type frame = frames[i];
Chris@1262 300 for (int j = 0; j < m; ++j) {
Chris@1262 301 int rate = rates[j];
Chris@1262 302
Chris@1262 303 RealTime rt = RealTime::frame2RealTime(frame, rate);
Chris@1262 304 QCOMPARE(rt.sec, realTimes[j][i].sec);
Chris@1262 305 QCOMPARE(rt.nsec, realTimes[j][i].nsec);
Chris@1262 306
Chris@1262 307 frame_type conv = RealTime::realTime2Frame(rt, rate);
Chris@1262 308
Chris@1262 309 rt = RealTime::frame2RealTime(-frame, rate);
Chris@1262 310 frame_type negconv = RealTime::realTime2Frame(rt, rate);
Chris@1262 311
Chris@1262 312 if (rate > ONE_BILLION) {
Chris@1263 313 // We don't have enough precision in RealTime
Chris@1262 314 // for this absurd sample rate, so a round trip
Chris@1262 315 // conversion may round
Chris@1262 316 QVERIFY(abs(frame - conv) < 2);
Chris@1262 317 QVERIFY(abs(-frame - negconv) < 2);
Chris@1262 318 } else {
Chris@1262 319 QCOMPARE(conv, frame);
Chris@1262 320 QCOMPARE(negconv, -frame);
Chris@1262 321 }
Chris@1262 322 }
Chris@1262 323 }
Chris@1262 324 }
Chris@1262 325
Chris@1262 326 // Vamp SDK version just has toText, which is like our own
Chris@1262 327 // toMSText with true for its second arg
Chris@1262 328
Chris@1262 329 void toText()
Chris@1262 330 {
Chris@1262 331 // we want to use QStrings, because then the Qt test library
Chris@1262 332 // will print out any conflicts. The compareTexts function
Chris@1262 333 // does this for us
Chris@1262 334
Chris@1262 335 int halfSec = ONE_BILLION/2; // nsec
Chris@1262 336
Chris@1262 337 RealTime rt = RealTime(0, 0);
Chris@1262 338 compareTexts(rt.toText(false), "0");
Chris@1262 339 compareTexts(rt.toText(true), "0.000");
Chris@1262 340
Chris@1262 341 rt = RealTime(1, halfSec);
Chris@1262 342 compareTexts(rt.toText(false), "1.5");
Chris@1262 343 compareTexts(rt.toText(true), "1.500");
Chris@1262 344
Chris@1262 345 rt = RealTime::fromSeconds(-1.5);
Chris@1262 346 compareTexts(rt.toText(false), "-1.5");
Chris@1262 347 compareTexts(rt.toText(true), "-1.500");
Chris@1262 348
Chris@1262 349 rt = RealTime::fromSeconds(60);
Chris@1262 350 compareTexts(rt.toText(false), "1:00");
Chris@1262 351 compareTexts(rt.toText(true), "1:00.000");
Chris@1262 352
Chris@1262 353 rt = RealTime::fromSeconds(61.05);
Chris@1262 354 compareTexts(rt.toText(false), "1:01.05");
Chris@1262 355 compareTexts(rt.toText(true), "1:01.050");
Chris@1262 356
Chris@1262 357 rt = RealTime::fromSeconds(601.05);
Chris@1262 358 compareTexts(rt.toText(false), "10:01.05");
Chris@1262 359 compareTexts(rt.toText(true), "10:01.050");
Chris@1262 360
Chris@1262 361 rt = RealTime::fromSeconds(3600);
Chris@1262 362 compareTexts(rt.toText(false), "1:00:00");
Chris@1262 363 compareTexts(rt.toText(true), "1:00:00.000");
Chris@1262 364
Chris@1262 365 // For practical reasons our time display always rounds down
Chris@1262 366 rt = RealTime(3599, ONE_BILLION-1);
Chris@1262 367 compareTexts(rt.toText(false), "59:59.999");
Chris@1262 368 compareTexts(rt.toText(true), "59:59.999");
Chris@1262 369
Chris@1262 370 rt = RealTime::fromSeconds(3600 * 4 + 60 * 5 + 3 + 0.01);
Chris@1262 371 compareTexts(rt.toText(false), "4:05:03.01");
Chris@1262 372 compareTexts(rt.toText(true), "4:05:03.010");
Chris@1262 373
Chris@1262 374 rt = RealTime::fromSeconds(-(3600 * 4 + 60 * 5 + 3 + 0.01));
Chris@1262 375 compareTexts(rt.toText(false), "-4:05:03.01");
Chris@1262 376 compareTexts(rt.toText(true), "-4:05:03.010");
Chris@1262 377 }
Chris@1262 378 };
Chris@1262 379
Chris@1262 380 #endif
Chris@1262 381