Chris@1612
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@1612
|
2
|
Chris@1612
|
3 /*
|
Chris@1612
|
4 Sonic Visualiser
|
Chris@1612
|
5 An audio file viewer and annotation editor.
|
Chris@1612
|
6 Centre for Digital Music, Queen Mary, University of London.
|
Chris@1612
|
7
|
Chris@1612
|
8 This program is free software; you can redistribute it and/or
|
Chris@1612
|
9 modify it under the terms of the GNU General Public License as
|
Chris@1612
|
10 published by the Free Software Foundation; either version 2 of the
|
Chris@1612
|
11 License, or (at your option) any later version. See the file
|
Chris@1612
|
12 COPYING included with this distribution for more information.
|
Chris@1612
|
13 */
|
Chris@1612
|
14
|
Chris@1615
|
15 #ifndef TEST_EVENT_SERIES_H
|
Chris@1615
|
16 #define TEST_EVENT_SERIES_H
|
Chris@1612
|
17
|
Chris@1615
|
18 #include "../EventSeries.h"
|
Chris@1612
|
19
|
Chris@1612
|
20 #include <QObject>
|
Chris@1612
|
21 #include <QtTest>
|
Chris@1612
|
22
|
Chris@1612
|
23 #include <iostream>
|
Chris@1612
|
24
|
Chris@1612
|
25 using namespace std;
|
Chris@1612
|
26
|
Chris@1615
|
27 class TestEventSeries : public QObject
|
Chris@1612
|
28 {
|
Chris@1612
|
29 Q_OBJECT
|
Chris@1612
|
30
|
Chris@1612
|
31 private slots:
|
Chris@1612
|
32 void empty() {
|
Chris@1612
|
33
|
Chris@1615
|
34 EventSeries s;
|
Chris@1612
|
35 QCOMPARE(s.isEmpty(), true);
|
Chris@1612
|
36 QCOMPARE(s.count(), 0);
|
Chris@1612
|
37
|
Chris@1615
|
38 Event p(10, QString());
|
Chris@1612
|
39 QCOMPARE(s.contains(p), false);
|
Chris@1616
|
40 QCOMPARE(s.getEventsCovering(400), EventVector());
|
Chris@1612
|
41 }
|
Chris@1612
|
42
|
Chris@1615
|
43 void singleEvent() {
|
Chris@1612
|
44
|
Chris@1615
|
45 EventSeries s;
|
Chris@1615
|
46 Event p(10, QString());
|
Chris@1612
|
47 s.add(p);
|
Chris@1612
|
48 QCOMPARE(s.isEmpty(), false);
|
Chris@1612
|
49 QCOMPARE(s.count(), 1);
|
Chris@1612
|
50 QCOMPARE(s.contains(p), true);
|
Chris@1612
|
51
|
Chris@1612
|
52 s.remove(p);
|
Chris@1612
|
53 QCOMPARE(s.isEmpty(), true);
|
Chris@1616
|
54 QCOMPARE(s.count(), 0);
|
Chris@1612
|
55 QCOMPARE(s.contains(p), false);
|
Chris@1612
|
56 }
|
Chris@1612
|
57
|
Chris@1616
|
58 void duplicateEvents() {
|
Chris@1612
|
59
|
Chris@1615
|
60 EventSeries s;
|
Chris@1615
|
61 Event p(10, QString());
|
Chris@1612
|
62 s.add(p);
|
Chris@1616
|
63 s.add(p);
|
Chris@1616
|
64 QCOMPARE(s.isEmpty(), false);
|
Chris@1616
|
65 QCOMPARE(s.count(), 2);
|
Chris@1616
|
66 QCOMPARE(s.contains(p), true);
|
Chris@1616
|
67
|
Chris@1616
|
68 s.remove(p);
|
Chris@1616
|
69 QCOMPARE(s.isEmpty(), false);
|
Chris@1616
|
70 QCOMPARE(s.count(), 1);
|
Chris@1616
|
71 QCOMPARE(s.contains(p), true);
|
Chris@1616
|
72
|
Chris@1616
|
73 s.remove(p);
|
Chris@1616
|
74 QCOMPARE(s.isEmpty(), true);
|
Chris@1616
|
75 QCOMPARE(s.count(), 0);
|
Chris@1616
|
76 QCOMPARE(s.contains(p), false);
|
Chris@1612
|
77 }
|
Chris@1612
|
78
|
Chris@1616
|
79 void singleEventCover() {
|
Chris@1616
|
80
|
Chris@1616
|
81 EventSeries s;
|
Chris@1616
|
82 Event p(10, QString());
|
Chris@1616
|
83 s.add(p);
|
Chris@1616
|
84 EventVector cover;
|
Chris@1616
|
85 cover.push_back(p);
|
Chris@1616
|
86 QCOMPARE(s.getEventsCovering(10), cover);
|
Chris@1616
|
87 QCOMPARE(s.getEventsCovering(11), EventVector());
|
Chris@1616
|
88 QCOMPARE(s.getEventsCovering(9), EventVector());
|
Chris@1616
|
89 }
|
Chris@1616
|
90
|
Chris@1617
|
91 void singleEventSpan() {
|
Chris@1617
|
92
|
Chris@1617
|
93 EventSeries s;
|
Chris@1617
|
94 Event p(10, QString());
|
Chris@1617
|
95 s.add(p);
|
Chris@1617
|
96 EventVector span;
|
Chris@1617
|
97 span.push_back(p);
|
Chris@1617
|
98 QCOMPARE(s.getEventsSpanning(10, 2), span);
|
Chris@1617
|
99 QCOMPARE(s.getEventsSpanning(9, 2), span);
|
Chris@1617
|
100 QCOMPARE(s.getEventsSpanning(8, 2), EventVector());
|
Chris@1617
|
101 QCOMPARE(s.getEventsSpanning(7, 2), EventVector());
|
Chris@1617
|
102 QCOMPARE(s.getEventsSpanning(11, 2), EventVector());
|
Chris@1617
|
103 }
|
Chris@1617
|
104
|
Chris@1617
|
105 void identicalEventsCover() {
|
Chris@1617
|
106
|
Chris@1617
|
107 EventSeries s;
|
Chris@1617
|
108 Event p(10, QString());
|
Chris@1617
|
109 s.add(p);
|
Chris@1617
|
110 s.add(p);
|
Chris@1617
|
111
|
Chris@1617
|
112 EventVector cover;
|
Chris@1617
|
113 cover.push_back(p);
|
Chris@1617
|
114 cover.push_back(p);
|
Chris@1617
|
115 QCOMPARE(s.getEventsCovering(10), cover);
|
Chris@1617
|
116 QCOMPARE(s.getEventsCovering(11), EventVector());
|
Chris@1617
|
117 QCOMPARE(s.getEventsCovering(9), EventVector());
|
Chris@1617
|
118
|
Chris@1617
|
119 s.remove(p);
|
Chris@1617
|
120 cover.clear();
|
Chris@1617
|
121 cover.push_back(p);
|
Chris@1617
|
122 QCOMPARE(s.getEventsCovering(10), cover);
|
Chris@1617
|
123 QCOMPARE(s.getEventsCovering(11), EventVector());
|
Chris@1617
|
124 QCOMPARE(s.getEventsCovering(9), EventVector());
|
Chris@1617
|
125 }
|
Chris@1617
|
126
|
Chris@1617
|
127 void identicalEventsSpan() {
|
Chris@1617
|
128
|
Chris@1617
|
129 EventSeries s;
|
Chris@1617
|
130 Event p(10, QString());
|
Chris@1617
|
131 s.add(p);
|
Chris@1617
|
132 s.add(p);
|
Chris@1617
|
133
|
Chris@1617
|
134 EventVector span;
|
Chris@1617
|
135 span.push_back(p);
|
Chris@1617
|
136 span.push_back(p);
|
Chris@1617
|
137 QCOMPARE(s.getEventsSpanning(10, 2), span);
|
Chris@1617
|
138 QCOMPARE(s.getEventsSpanning(9, 2), span);
|
Chris@1617
|
139 QCOMPARE(s.getEventsSpanning(8, 2), EventVector());
|
Chris@1617
|
140 QCOMPARE(s.getEventsSpanning(11, 2), EventVector());
|
Chris@1617
|
141 }
|
Chris@1617
|
142
|
Chris@1616
|
143 void similarEventsCover() {
|
Chris@1616
|
144
|
Chris@1616
|
145 EventSeries s;
|
Chris@1616
|
146 Event a(10, QString("a"));
|
Chris@1616
|
147 Event b(10, QString("b"));
|
Chris@1616
|
148 s.add(a);
|
Chris@1616
|
149 s.add(b);
|
Chris@1616
|
150 EventVector cover;
|
Chris@1616
|
151 cover.push_back(a);
|
Chris@1616
|
152 cover.push_back(b);
|
Chris@1616
|
153 QCOMPARE(s.getEventsCovering(10), cover);
|
Chris@1616
|
154 QCOMPARE(s.getEventsCovering(11), EventVector());
|
Chris@1616
|
155 QCOMPARE(s.getEventsCovering(9), EventVector());
|
Chris@1616
|
156 }
|
Chris@1616
|
157
|
Chris@1617
|
158 void similarEventsSpan() {
|
Chris@1617
|
159
|
Chris@1617
|
160 EventSeries s;
|
Chris@1617
|
161 Event a(10, QString("a"));
|
Chris@1617
|
162 Event b(10, QString("b"));
|
Chris@1617
|
163 s.add(a);
|
Chris@1617
|
164 s.add(b);
|
Chris@1617
|
165 EventVector span;
|
Chris@1617
|
166 span.push_back(a);
|
Chris@1617
|
167 span.push_back(b);
|
Chris@1617
|
168 QCOMPARE(s.getEventsSpanning(10, 2), span);
|
Chris@1617
|
169 QCOMPARE(s.getEventsSpanning(9, 2), span);
|
Chris@1617
|
170 QCOMPARE(s.getEventsSpanning(11, 2), EventVector());
|
Chris@1617
|
171 QCOMPARE(s.getEventsSpanning(8, 2), EventVector());
|
Chris@1617
|
172 }
|
Chris@1617
|
173
|
Chris@1616
|
174 void singleEventWithDurationCover() {
|
Chris@1612
|
175
|
Chris@1615
|
176 EventSeries s;
|
Chris@1615
|
177 Event p(10, 1.0, 20, QString());
|
Chris@1612
|
178 s.add(p);
|
Chris@1616
|
179 EventVector cover;
|
Chris@1616
|
180 cover.push_back(p);
|
Chris@1616
|
181 QCOMPARE(s.getEventsCovering(10), cover);
|
Chris@1616
|
182 QCOMPARE(s.getEventsCovering(11), cover);
|
Chris@1616
|
183 QCOMPARE(s.getEventsCovering(29), cover);
|
Chris@1616
|
184 QCOMPARE(s.getEventsCovering(30), EventVector());
|
Chris@1616
|
185 QCOMPARE(s.getEventsCovering(9), EventVector());
|
Chris@1612
|
186 }
|
Chris@1614
|
187
|
Chris@1617
|
188 void singleEventWithDurationSpan() {
|
Chris@1614
|
189
|
Chris@1615
|
190 EventSeries s;
|
Chris@1617
|
191 Event p(10, 1.0, 20, QString());
|
Chris@1614
|
192 s.add(p);
|
Chris@1617
|
193 EventVector span;
|
Chris@1617
|
194 span.push_back(p);
|
Chris@1617
|
195 QCOMPARE(s.getEventsSpanning(9, 2), span);
|
Chris@1617
|
196 QCOMPARE(s.getEventsSpanning(8, 2), EventVector());
|
Chris@1617
|
197 QCOMPARE(s.getEventsSpanning(19, 4), span);
|
Chris@1617
|
198 QCOMPARE(s.getEventsSpanning(29, 2), span);
|
Chris@1617
|
199 QCOMPARE(s.getEventsSpanning(30, 2), EventVector());
|
Chris@1617
|
200 }
|
Chris@1614
|
201
|
Chris@1616
|
202 void identicalEventsWithDurationCover() {
|
Chris@1614
|
203
|
Chris@1615
|
204 EventSeries s;
|
Chris@1615
|
205 Event p(10, 1.0, 20, QString());
|
Chris@1614
|
206 s.add(p);
|
Chris@1614
|
207 s.add(p);
|
Chris@1616
|
208 EventVector cover;
|
Chris@1616
|
209 cover.push_back(p);
|
Chris@1616
|
210 cover.push_back(p);
|
Chris@1616
|
211 QCOMPARE(s.getEventsCovering(10), cover);
|
Chris@1616
|
212 QCOMPARE(s.getEventsCovering(11), cover);
|
Chris@1616
|
213 QCOMPARE(s.getEventsCovering(29), cover);
|
Chris@1616
|
214 QCOMPARE(s.getEventsCovering(30), EventVector());
|
Chris@1616
|
215 QCOMPARE(s.getEventsCovering(9), EventVector());
|
Chris@1614
|
216
|
Chris@1614
|
217 s.remove(p);
|
Chris@1616
|
218 cover.clear();
|
Chris@1616
|
219 cover.push_back(p);
|
Chris@1616
|
220 QCOMPARE(s.getEventsCovering(10), cover);
|
Chris@1616
|
221 QCOMPARE(s.getEventsCovering(11), cover);
|
Chris@1616
|
222 QCOMPARE(s.getEventsCovering(29), cover);
|
Chris@1616
|
223 QCOMPARE(s.getEventsCovering(30), EventVector());
|
Chris@1616
|
224 QCOMPARE(s.getEventsCovering(9), EventVector());
|
Chris@1614
|
225 }
|
Chris@1614
|
226
|
Chris@1617
|
227 void identicalEventsWithDurationSpan() {
|
Chris@1617
|
228
|
Chris@1617
|
229 EventSeries s;
|
Chris@1617
|
230 Event p(10, 1.0, 20, QString());
|
Chris@1617
|
231 s.add(p);
|
Chris@1617
|
232 s.add(p);
|
Chris@1617
|
233 EventVector span;
|
Chris@1617
|
234 span.push_back(p);
|
Chris@1617
|
235 span.push_back(p);
|
Chris@1617
|
236 QCOMPARE(s.getEventsSpanning(9, 2), span);
|
Chris@1617
|
237 QCOMPARE(s.getEventsSpanning(10, 2), span);
|
Chris@1617
|
238 QCOMPARE(s.getEventsSpanning(11, 2), span);
|
Chris@1617
|
239 QCOMPARE(s.getEventsSpanning(29, 2), span);
|
Chris@1617
|
240 QCOMPARE(s.getEventsSpanning(30, 2), EventVector());
|
Chris@1617
|
241 QCOMPARE(s.getEventsSpanning(8, 2), EventVector());
|
Chris@1617
|
242 }
|
Chris@1617
|
243
|
Chris@1616
|
244 void multipleEventsCover() {
|
Chris@1614
|
245
|
Chris@1615
|
246 EventSeries s;
|
Chris@1615
|
247 Event a(10, QString("a"));
|
Chris@1615
|
248 Event b(11, QString("b"));
|
Chris@1615
|
249 Event c(40, QString("c"));
|
Chris@1614
|
250 s.add(c);
|
Chris@1614
|
251 s.add(a);
|
Chris@1614
|
252 s.add(b);
|
Chris@1614
|
253 s.remove(a);
|
Chris@1614
|
254 s.add(a);
|
Chris@1614
|
255 s.add(c);
|
Chris@1614
|
256 s.remove(c);
|
Chris@1614
|
257 QCOMPARE(s.count(), 3);
|
Chris@1616
|
258 EventVector cover;
|
Chris@1616
|
259 cover.push_back(a);
|
Chris@1616
|
260 QCOMPARE(s.getEventsCovering(10), cover);
|
Chris@1616
|
261 cover.clear();
|
Chris@1616
|
262 cover.push_back(c);
|
Chris@1616
|
263 QCOMPARE(s.getEventsCovering(40), cover);
|
Chris@1616
|
264 QCOMPARE(s.getEventsCovering(9), EventVector());
|
Chris@1614
|
265 }
|
Chris@1614
|
266
|
Chris@1617
|
267 void multipleEventsSpan() {
|
Chris@1617
|
268
|
Chris@1617
|
269 EventSeries s;
|
Chris@1617
|
270 Event a(10, QString("a"));
|
Chris@1617
|
271 Event b(11, QString("b"));
|
Chris@1617
|
272 Event c(40, QString("c"));
|
Chris@1617
|
273 s.add(c);
|
Chris@1617
|
274 s.add(a);
|
Chris@1617
|
275 s.add(b);
|
Chris@1617
|
276 EventVector span;
|
Chris@1617
|
277 span.push_back(a);
|
Chris@1617
|
278 span.push_back(b);
|
Chris@1617
|
279 QCOMPARE(s.getEventsSpanning(10, 2), span);
|
Chris@1617
|
280 span.clear();
|
Chris@1617
|
281 span.push_back(c);
|
Chris@1617
|
282 QCOMPARE(s.getEventsSpanning(39, 3), span);
|
Chris@1617
|
283 QCOMPARE(s.getEventsSpanning(9, 1), EventVector());
|
Chris@1617
|
284 QCOMPARE(s.getEventsSpanning(10, 0), EventVector());
|
Chris@1617
|
285 }
|
Chris@1617
|
286
|
Chris@1640
|
287 void multipleEventsEndFrame() {
|
Chris@1640
|
288
|
Chris@1640
|
289 EventSeries s;
|
Chris@1640
|
290 Event a(10, QString("a"));
|
Chris@1640
|
291 Event b(11, QString("b"));
|
Chris@1640
|
292 Event c(40, QString("c"));
|
Chris@1640
|
293 s.add(c);
|
Chris@1640
|
294 s.add(a);
|
Chris@1640
|
295 s.add(b);
|
Chris@1640
|
296 s.add(b);
|
Chris@1711
|
297 QCOMPARE(s.getEndFrame(), sv_frame_t(40));
|
Chris@1640
|
298 s.remove(c);
|
Chris@1711
|
299 QCOMPARE(s.getEndFrame(), sv_frame_t(11));
|
Chris@1640
|
300 s.remove(b);
|
Chris@1711
|
301 QCOMPARE(s.getEndFrame(), sv_frame_t(11));
|
Chris@1640
|
302 s.remove(a);
|
Chris@1711
|
303 QCOMPARE(s.getEndFrame(), sv_frame_t(11));
|
Chris@1640
|
304 s.remove(b);
|
Chris@1711
|
305 QCOMPARE(s.getEndFrame(), sv_frame_t(0));
|
Chris@1640
|
306 }
|
Chris@1640
|
307
|
Chris@1616
|
308 void disjointEventsWithDurationCover() {
|
Chris@1614
|
309
|
Chris@1615
|
310 EventSeries s;
|
Chris@1615
|
311 Event a(10, 1.0f, 20, QString("a"));
|
Chris@1615
|
312 Event b(100, 1.2f, 30, QString("b"));
|
Chris@1614
|
313 s.add(a);
|
Chris@1614
|
314 s.add(b);
|
Chris@1616
|
315 QCOMPARE(s.getEventsCovering(0), EventVector());
|
Chris@1616
|
316 QCOMPARE(s.getEventsCovering(10), EventVector({ a }));
|
Chris@1616
|
317 QCOMPARE(s.getEventsCovering(15), EventVector({ a }));
|
Chris@1616
|
318 QCOMPARE(s.getEventsCovering(30), EventVector());
|
Chris@1616
|
319 QCOMPARE(s.getEventsCovering(99), EventVector());
|
Chris@1616
|
320 QCOMPARE(s.getEventsCovering(100), EventVector({ b }));
|
Chris@1616
|
321 QCOMPARE(s.getEventsCovering(120), EventVector({ b }));
|
Chris@1616
|
322 QCOMPARE(s.getEventsCovering(130), EventVector());
|
Chris@1614
|
323 }
|
Chris@1614
|
324
|
Chris@1619
|
325 void disjointEventsWithDurationSpan() {
|
Chris@1619
|
326
|
Chris@1619
|
327 EventSeries s;
|
Chris@1619
|
328 Event a(10, 1.0f, 20, QString("a"));
|
Chris@1619
|
329 Event b(100, 1.2f, 30, QString("b"));
|
Chris@1619
|
330 s.add(a);
|
Chris@1619
|
331 s.add(b);
|
Chris@1619
|
332 QCOMPARE(s.getEventsSpanning(0, 10), EventVector());
|
Chris@1619
|
333 QCOMPARE(s.getEventsSpanning(10, 10), EventVector({ a }));
|
Chris@1619
|
334 QCOMPARE(s.getEventsSpanning(15, 85), EventVector({ a }));
|
Chris@1619
|
335 QCOMPARE(s.getEventsSpanning(30, 5), EventVector());
|
Chris@1619
|
336 QCOMPARE(s.getEventsSpanning(99, 1), EventVector());
|
Chris@1619
|
337 QCOMPARE(s.getEventsSpanning(100, 1), EventVector({ b }));
|
Chris@1619
|
338 QCOMPARE(s.getEventsSpanning(120, 20), EventVector({ b }));
|
Chris@1619
|
339 QCOMPARE(s.getEventsSpanning(130, 109), EventVector());
|
Chris@1619
|
340 }
|
Chris@1619
|
341
|
Chris@1616
|
342 void overlappingEventsWithAndWithoutDurationCover() {
|
Chris@1614
|
343
|
Chris@1615
|
344 EventSeries s;
|
Chris@1615
|
345 Event p(20, QString("p"));
|
Chris@1616
|
346 Event a(10, 1.0f, 20, QString("a"));
|
Chris@1614
|
347 s.add(p);
|
Chris@1614
|
348 s.add(a);
|
Chris@1616
|
349 EventVector cover;
|
Chris@1616
|
350 cover.push_back(a);
|
Chris@1616
|
351 QCOMPARE(s.getEventsCovering(15), cover);
|
Chris@1616
|
352 QCOMPARE(s.getEventsCovering(25), cover);
|
Chris@1616
|
353 cover.clear();
|
Chris@1616
|
354 cover.push_back(p);
|
Chris@1616
|
355 cover.push_back(a);
|
Chris@1616
|
356 QCOMPARE(s.getEventsCovering(20), cover);
|
Chris@1614
|
357 }
|
Chris@1619
|
358
|
Chris@1619
|
359 void overlappingEventsWithAndWithoutDurationSpan() {
|
Chris@1619
|
360
|
Chris@1619
|
361 EventSeries s;
|
Chris@1619
|
362 Event p(20, QString("p"));
|
Chris@1619
|
363 Event a(10, 1.0f, 20, QString("a"));
|
Chris@1619
|
364 s.add(p);
|
Chris@1619
|
365 s.add(a);
|
Chris@1619
|
366 EventVector span;
|
Chris@1619
|
367 span.push_back(a);
|
Chris@1619
|
368 QCOMPARE(s.getEventsSpanning(5, 10), span);
|
Chris@1619
|
369 QCOMPARE(s.getEventsSpanning(25, 5), span);
|
Chris@1619
|
370 span.clear();
|
Chris@1619
|
371 span.push_back(p);
|
Chris@1619
|
372 span.push_back(a);
|
Chris@1619
|
373 QCOMPARE(s.getEventsSpanning(20, 1), span);
|
Chris@1619
|
374 }
|
Chris@1614
|
375
|
Chris@1616
|
376 void overlappingEventsWithDurationCover() {
|
Chris@1614
|
377
|
Chris@1615
|
378 EventSeries s;
|
Chris@1616
|
379 Event a(20, 1.0f, 10, QString("a"));
|
Chris@1616
|
380 Event b(10, 1.0f, 20, QString("b"));
|
Chris@1616
|
381 Event c(10, 1.0f, 40, QString("c"));
|
Chris@1614
|
382 s.add(a);
|
Chris@1614
|
383 s.add(b);
|
Chris@1614
|
384 s.add(c);
|
Chris@1616
|
385 QCOMPARE(s.getEventsCovering(10), EventVector({ b, c }));
|
Chris@1616
|
386 QCOMPARE(s.getEventsCovering(20), EventVector({ b, c, a }));
|
Chris@1616
|
387 QCOMPARE(s.getEventsCovering(25), EventVector({ b, c, a }));
|
Chris@1616
|
388 QCOMPARE(s.getEventsCovering(30), EventVector({ c }));
|
Chris@1616
|
389 QCOMPARE(s.getEventsCovering(40), EventVector({ c }));
|
Chris@1616
|
390 QCOMPARE(s.getEventsCovering(50), EventVector());
|
Chris@1614
|
391 }
|
Chris@1614
|
392
|
Chris@1619
|
393 void overlappingEventsWithDurationSpan() {
|
Chris@1619
|
394
|
Chris@1619
|
395 EventSeries s;
|
Chris@1619
|
396 Event a(20, 1.0f, 10, QString("a"));
|
Chris@1619
|
397 Event b(10, 1.0f, 20, QString("b"));
|
Chris@1619
|
398 Event c(10, 1.0f, 40, QString("c"));
|
Chris@1619
|
399 s.add(a);
|
Chris@1619
|
400 s.add(b);
|
Chris@1619
|
401 s.add(c);
|
Chris@1619
|
402 QCOMPARE(s.getEventsSpanning(10, 5), EventVector({ b, c }));
|
Chris@1619
|
403 QCOMPARE(s.getEventsSpanning(20, 15), EventVector({ b, c, a }));
|
Chris@1619
|
404 QCOMPARE(s.getEventsSpanning(0, 100), EventVector({ b, c, a }));
|
Chris@1619
|
405 QCOMPARE(s.getEventsSpanning(25, 4), EventVector({ b, c, a }));
|
Chris@1619
|
406 QCOMPARE(s.getEventsSpanning(30, 4), EventVector({ c }));
|
Chris@1619
|
407 QCOMPARE(s.getEventsSpanning(40, 15), EventVector({ c }));
|
Chris@1619
|
408 QCOMPARE(s.getEventsSpanning(50, 10), EventVector());
|
Chris@1619
|
409 }
|
Chris@1619
|
410
|
Chris@1616
|
411 void eventPatternCover() {
|
Chris@1614
|
412
|
Chris@1615
|
413 EventSeries s;
|
Chris@1616
|
414 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1616
|
415 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1616
|
416 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1616
|
417 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1616
|
418 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1616
|
419 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1616
|
420 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1614
|
421 s.add(b);
|
Chris@1614
|
422 s.add(c);
|
Chris@1614
|
423 s.add(d);
|
Chris@1614
|
424 s.add(a);
|
Chris@1616
|
425 s.add(cc);
|
Chris@1616
|
426 s.add(dd);
|
Chris@1614
|
427 s.add(e);
|
Chris@1616
|
428 QCOMPARE(s.getEventsCovering(8), EventVector({ a, b, d, dd }));
|
Chris@1616
|
429 }
|
Chris@1616
|
430
|
Chris@1619
|
431 void eventPatternSpan() {
|
Chris@1619
|
432
|
Chris@1619
|
433 EventSeries s;
|
Chris@1619
|
434 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1619
|
435 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1619
|
436 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1619
|
437 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1619
|
438 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1619
|
439 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1619
|
440 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1619
|
441 s.add(b);
|
Chris@1619
|
442 s.add(c);
|
Chris@1619
|
443 s.add(d);
|
Chris@1619
|
444 s.add(a);
|
Chris@1619
|
445 s.add(cc);
|
Chris@1619
|
446 s.add(dd);
|
Chris@1619
|
447 s.add(e);
|
Chris@1619
|
448 QCOMPARE(s.getEventsSpanning(6, 2), EventVector({ a, b, c, cc, d, dd }));
|
Chris@1619
|
449 }
|
Chris@1619
|
450
|
Chris@1635
|
451 void eventPatternWithin() {
|
Chris@1635
|
452
|
Chris@1635
|
453 EventSeries s;
|
Chris@1635
|
454 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1635
|
455 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1635
|
456 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1635
|
457 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1635
|
458 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1635
|
459 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1635
|
460 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1635
|
461 s.add(b);
|
Chris@1635
|
462 s.add(c);
|
Chris@1635
|
463 s.add(d);
|
Chris@1635
|
464 s.add(a);
|
Chris@1635
|
465 s.add(cc);
|
Chris@1635
|
466 s.add(dd);
|
Chris@1635
|
467 s.add(e);
|
Chris@1635
|
468 QCOMPARE(s.getEventsWithin(2, 7), EventVector({ b, c, cc }));
|
Chris@1635
|
469 }
|
Chris@1635
|
470
|
Chris@1654
|
471 void eventPatternWithinWithOverspill() {
|
Chris@1654
|
472
|
Chris@1654
|
473 EventSeries s;
|
Chris@1654
|
474 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1654
|
475 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1654
|
476 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1654
|
477 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1654
|
478 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1654
|
479 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1654
|
480 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1654
|
481 s.add(b);
|
Chris@1654
|
482 s.add(c);
|
Chris@1654
|
483 s.add(d);
|
Chris@1654
|
484 s.add(a);
|
Chris@1654
|
485 s.add(cc);
|
Chris@1654
|
486 s.add(dd);
|
Chris@1654
|
487 s.add(e);
|
Chris@1654
|
488 QCOMPARE(s.getEventsWithin(0, 0, 0), EventVector());
|
Chris@1654
|
489 QCOMPARE(s.getEventsWithin(0, 0, 1), EventVector({ a }));
|
Chris@1654
|
490 QCOMPARE(s.getEventsWithin(0, 0, 2), EventVector({ a, b }));
|
Chris@1654
|
491 QCOMPARE(s.getEventsWithin(20, 1, 0), EventVector());
|
Chris@1654
|
492 QCOMPARE(s.getEventsWithin(20, 1, 1), EventVector({ e }));
|
Chris@1654
|
493 QCOMPARE(s.getEventsWithin(20, 1, 2), EventVector({ dd, e }));
|
Chris@1654
|
494 QCOMPARE(s.getEventsWithin(2, 7, 0), EventVector({ b, c, cc }));
|
Chris@1654
|
495 QCOMPARE(s.getEventsWithin(2, 7, 1), EventVector({ a, b, c, cc, d }));
|
Chris@1654
|
496 QCOMPARE(s.getEventsWithin(2, 7, 2), EventVector({ a, b, c, cc, d, dd }));
|
Chris@1654
|
497 QCOMPARE(s.getEventsWithin(2, 7, 3), EventVector({ a, b, c, cc, d, dd, e }));
|
Chris@1654
|
498 QCOMPARE(s.getEventsWithin(2, 7, 4), EventVector({ a, b, c, cc, d, dd, e }));
|
Chris@1654
|
499 }
|
Chris@1654
|
500
|
Chris@1639
|
501 void eventPatternStartingWithin() {
|
Chris@1639
|
502
|
Chris@1639
|
503 EventSeries s;
|
Chris@1639
|
504 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1639
|
505 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1639
|
506 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1639
|
507 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1639
|
508 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1639
|
509 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1639
|
510 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1639
|
511 s.add(b);
|
Chris@1639
|
512 s.add(c);
|
Chris@1639
|
513 s.add(d);
|
Chris@1639
|
514 s.add(a);
|
Chris@1639
|
515 s.add(cc);
|
Chris@1639
|
516 s.add(dd);
|
Chris@1639
|
517 s.add(e);
|
Chris@1639
|
518 QCOMPARE(s.getEventsStartingWithin(2, 7),
|
Chris@1639
|
519 EventVector({ b, c, cc, d, dd }));
|
Chris@1639
|
520 }
|
Chris@1639
|
521
|
Chris@1656
|
522 void eventPatternStartingAt() {
|
Chris@1656
|
523
|
Chris@1656
|
524 EventSeries s;
|
Chris@1656
|
525 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1656
|
526 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1656
|
527 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1656
|
528 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1656
|
529 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1656
|
530 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1656
|
531 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1656
|
532 s.add(b);
|
Chris@1656
|
533 s.add(c);
|
Chris@1656
|
534 s.add(d);
|
Chris@1656
|
535 s.add(a);
|
Chris@1656
|
536 s.add(cc);
|
Chris@1656
|
537 s.add(dd);
|
Chris@1656
|
538 s.add(e);
|
Chris@1656
|
539 QCOMPARE(s.getEventsStartingAt(2), EventVector());
|
Chris@1656
|
540 QCOMPARE(s.getEventsStartingAt(5), EventVector({ c, cc }));
|
Chris@1656
|
541 }
|
Chris@1656
|
542
|
Chris@1640
|
543 void eventPatternEndFrame() {
|
Chris@1640
|
544
|
Chris@1640
|
545 EventSeries s;
|
Chris@1640
|
546 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1640
|
547 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1640
|
548 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1640
|
549 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1640
|
550 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1640
|
551 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1640
|
552 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1640
|
553 s.add(b);
|
Chris@1640
|
554 s.add(c);
|
Chris@1640
|
555 s.add(d);
|
Chris@1640
|
556 s.add(a);
|
Chris@1640
|
557 s.add(cc);
|
Chris@1640
|
558 s.add(dd);
|
Chris@1640
|
559 s.add(e);
|
Chris@1711
|
560 QCOMPARE(s.getEndFrame(), sv_frame_t(18));
|
Chris@1640
|
561 }
|
Chris@1640
|
562
|
Chris@1616
|
563 void eventPatternAddRemove() {
|
Chris@1616
|
564
|
Chris@1616
|
565 // This is mostly here to exercise the innards of EventSeries
|
Chris@1616
|
566 // and check it doesn't crash out with any internal
|
Chris@1616
|
567 // consistency problems
|
Chris@1616
|
568
|
Chris@1616
|
569 EventSeries s;
|
Chris@1616
|
570 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1616
|
571 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1616
|
572 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1616
|
573 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1616
|
574 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1616
|
575 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1616
|
576 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1616
|
577 s.add(b);
|
Chris@1616
|
578 s.add(c);
|
Chris@1616
|
579 s.add(d);
|
Chris@1616
|
580 s.add(a);
|
Chris@1616
|
581 s.add(cc);
|
Chris@1616
|
582 s.add(dd);
|
Chris@1616
|
583 s.add(e);
|
Chris@1616
|
584 QCOMPARE(s.count(), 7);
|
Chris@1616
|
585 s.remove(d);
|
Chris@1616
|
586 QCOMPARE(s.getEventsCovering(8), EventVector({ a, b, dd }));
|
Chris@1711
|
587 QCOMPARE(s.getEndFrame(), sv_frame_t(18));
|
Chris@1616
|
588 s.remove(e);
|
Chris@1616
|
589 s.remove(a);
|
Chris@1616
|
590 QCOMPARE(s.getEventsCovering(8), EventVector({ b, dd }));
|
Chris@1711
|
591 QCOMPARE(s.getEndFrame(), sv_frame_t(16));
|
Chris@1616
|
592 s.remove(cc);
|
Chris@1616
|
593 s.remove(c);
|
Chris@1616
|
594 s.remove(dd);
|
Chris@1616
|
595 QCOMPARE(s.getEventsCovering(8), EventVector({ b }));
|
Chris@1711
|
596 QCOMPARE(s.getEndFrame(), sv_frame_t(9));
|
Chris@1616
|
597 s.remove(b);
|
Chris@1616
|
598 QCOMPARE(s.getEventsCovering(8), EventVector());
|
Chris@1616
|
599 QCOMPARE(s.count(), 0);
|
Chris@1616
|
600 QCOMPARE(s.isEmpty(), true);
|
Chris@1711
|
601 QCOMPARE(s.getEndFrame(), sv_frame_t(0));
|
Chris@1614
|
602 }
|
Chris@1632
|
603
|
Chris@1632
|
604 void preceding() {
|
Chris@1632
|
605
|
Chris@1632
|
606 EventSeries s;
|
Chris@1632
|
607 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1632
|
608 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1632
|
609 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1632
|
610 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1632
|
611 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1632
|
612 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1632
|
613 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1632
|
614 s.add(b);
|
Chris@1632
|
615 s.add(c);
|
Chris@1632
|
616 s.add(d);
|
Chris@1633
|
617 s.add(d); // again
|
Chris@1632
|
618 s.add(a);
|
Chris@1632
|
619 s.add(cc);
|
Chris@1632
|
620 s.add(dd);
|
Chris@1632
|
621 s.add(e);
|
Chris@1632
|
622 Event p;
|
Chris@1632
|
623 QCOMPARE(s.getEventPreceding(e, p), true);
|
Chris@1632
|
624 QCOMPARE(p, dd);
|
Chris@1632
|
625 QCOMPARE(s.getEventPreceding(p, p), true);
|
Chris@1632
|
626 QCOMPARE(p, d);
|
Chris@1632
|
627 QCOMPARE(s.getEventPreceding(p, p), true);
|
Chris@1632
|
628 QCOMPARE(p, cc);
|
Chris@1632
|
629 QCOMPARE(s.getEventPreceding(p, p), true);
|
Chris@1632
|
630 QCOMPARE(p, c);
|
Chris@1632
|
631 QCOMPARE(s.getEventPreceding(p, p), true);
|
Chris@1632
|
632 QCOMPARE(p, b);
|
Chris@1632
|
633 QCOMPARE(s.getEventPreceding(p, p), true);
|
Chris@1632
|
634 QCOMPARE(p, a);
|
Chris@1632
|
635 QCOMPARE(s.getEventPreceding(p, p), false);
|
Chris@1632
|
636 }
|
Chris@1632
|
637
|
Chris@1632
|
638 void following() {
|
Chris@1632
|
639
|
Chris@1632
|
640 EventSeries s;
|
Chris@1632
|
641 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1632
|
642 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1632
|
643 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1632
|
644 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1632
|
645 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1632
|
646 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1632
|
647 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1632
|
648 s.add(b);
|
Chris@1632
|
649 s.add(c);
|
Chris@1632
|
650 s.add(d);
|
Chris@1633
|
651 s.add(d); // again
|
Chris@1632
|
652 s.add(a);
|
Chris@1632
|
653 s.add(cc);
|
Chris@1632
|
654 s.add(dd);
|
Chris@1632
|
655 s.add(e);
|
Chris@1632
|
656 Event p;
|
Chris@1632
|
657 QCOMPARE(s.getEventFollowing(a, p), true);
|
Chris@1632
|
658 QCOMPARE(p, b);
|
Chris@1632
|
659 QCOMPARE(s.getEventFollowing(p, p), true);
|
Chris@1632
|
660 QCOMPARE(p, c);
|
Chris@1632
|
661 QCOMPARE(s.getEventFollowing(p, p), true);
|
Chris@1632
|
662 QCOMPARE(p, cc);
|
Chris@1632
|
663 QCOMPARE(s.getEventFollowing(p, p), true);
|
Chris@1632
|
664 QCOMPARE(p, d);
|
Chris@1632
|
665 QCOMPARE(s.getEventFollowing(p, p), true);
|
Chris@1632
|
666 QCOMPARE(p, dd);
|
Chris@1632
|
667 QCOMPARE(s.getEventFollowing(p, p), true);
|
Chris@1632
|
668 QCOMPARE(p, e);
|
Chris@1632
|
669 QCOMPARE(s.getEventFollowing(p, p), false);
|
Chris@1632
|
670 }
|
Chris@1653
|
671
|
Chris@1653
|
672 void matchingForward() {
|
Chris@1653
|
673
|
Chris@1653
|
674 EventSeries s;
|
Chris@1653
|
675 Event p;
|
Chris@1653
|
676 QCOMPARE(s.getNearestEventMatching
|
Chris@1654
|
677 (6, [](Event e) { return e.getDuration() < 4; },
|
Chris@1653
|
678 EventSeries::Forward, p), false);
|
Chris@1653
|
679 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1653
|
680 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1653
|
681 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1653
|
682 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1653
|
683 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1653
|
684 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1653
|
685 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1653
|
686 s.add(b);
|
Chris@1653
|
687 s.add(c);
|
Chris@1653
|
688 s.add(d);
|
Chris@1653
|
689 s.add(d); // again
|
Chris@1653
|
690 s.add(a);
|
Chris@1653
|
691 s.add(cc);
|
Chris@1653
|
692 s.add(dd);
|
Chris@1653
|
693 s.add(e);
|
Chris@1653
|
694 QCOMPARE(s.getNearestEventMatching
|
Chris@1654
|
695 (0, [](Event e) { return e.getDuration() < 4; },
|
Chris@1653
|
696 EventSeries::Forward, p), true);
|
Chris@1653
|
697 QCOMPARE(p, c);
|
Chris@1653
|
698 QCOMPARE(s.getNearestEventMatching
|
Chris@1654
|
699 (6, [](Event e) { return e.getDuration() < 4; },
|
Chris@1653
|
700 EventSeries::Forward, p), true);
|
Chris@1653
|
701 QCOMPARE(p, e);
|
Chris@1653
|
702 QCOMPARE(s.getNearestEventMatching
|
Chris@1654
|
703 (6, [](Event e) { return e.getDuration() > 4; },
|
Chris@1653
|
704 EventSeries::Forward, p), true);
|
Chris@1653
|
705 QCOMPARE(p, d);
|
Chris@1653
|
706 QCOMPARE(s.getNearestEventMatching
|
Chris@1654
|
707 (20, [](Event e) { return e.getDuration() > 4; },
|
Chris@1653
|
708 EventSeries::Forward, p), false);
|
Chris@1653
|
709 }
|
Chris@1653
|
710
|
Chris@1653
|
711 void matchingBackward() {
|
Chris@1653
|
712
|
Chris@1653
|
713 EventSeries s;
|
Chris@1653
|
714 Event p;
|
Chris@1653
|
715 QCOMPARE(s.getNearestEventMatching
|
Chris@1654
|
716 (6, [](Event e) { return e.getDuration() < 4; },
|
Chris@1653
|
717 EventSeries::Backward, p), false);
|
Chris@1653
|
718 Event a(0, 1.0f, 18, QString("a"));
|
Chris@1653
|
719 Event b(3, 2.0f, 6, QString("b"));
|
Chris@1653
|
720 Event c(5, 3.0f, 2, QString("c"));
|
Chris@1653
|
721 Event cc(5, 3.1f, 2, QString("cc"));
|
Chris@1653
|
722 Event d(6, 4.0f, 10, QString("d"));
|
Chris@1653
|
723 Event dd(6, 4.5f, 10, QString("dd"));
|
Chris@1653
|
724 Event e(14, 5.0f, 3, QString("e"));
|
Chris@1653
|
725 s.add(b);
|
Chris@1653
|
726 s.add(c);
|
Chris@1653
|
727 s.add(d);
|
Chris@1653
|
728 s.add(d); // again
|
Chris@1653
|
729 s.add(a);
|
Chris@1653
|
730 s.add(cc);
|
Chris@1653
|
731 s.add(dd);
|
Chris@1653
|
732 s.add(e);
|
Chris@1653
|
733 QCOMPARE(s.getNearestEventMatching
|
Chris@1654
|
734 (0, [](Event e) { return e.getDuration() < 4; },
|
Chris@1653
|
735 EventSeries::Backward, p), false);
|
Chris@1653
|
736 QCOMPARE(s.getNearestEventMatching
|
Chris@1654
|
737 (6, [](Event e) { return e.getDuration() > 4; },
|
Chris@1653
|
738 EventSeries::Backward, p), true);
|
Chris@1653
|
739 QCOMPARE(p, b);
|
Chris@1653
|
740 QCOMPARE(s.getNearestEventMatching
|
Chris@1654
|
741 (20, [](Event e) { return e.getDuration() > 4; },
|
Chris@1653
|
742 EventSeries::Backward, p), true);
|
Chris@1653
|
743 QCOMPARE(p, dd);
|
Chris@1653
|
744 }
|
Chris@1612
|
745 };
|
Chris@1612
|
746
|
Chris@1612
|
747 #endif
|