tmf: Port tmf.ui unit tests to JUnit4
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui.tests / src / org / eclipse / linuxtools / tmf / ui / tests / histogram / HistogramDataModelTest.java
CommitLineData
c392540b 1/*******************************************************************************
90ed5958 2 * Copyright (c) 2011, 2013 Ericsson
64636df8 3 *
c392540b
FC
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
64636df8 8 *
c392540b
FC
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
422f0fb8 11 * Bernd Hufmann - Adapt to junit.framework.TestCase
90ed5958 12 * Alexandre Montplaisir - Port to JUnit4
c392540b
FC
13 *******************************************************************************/
14
e0752744 15package org.eclipse.linuxtools.tmf.ui.tests.histogram;
c392540b 16
90ed5958
AM
17import static org.junit.Assert.assertEquals;
18import static org.junit.Assert.assertTrue;
19import static org.junit.Assert.fail;
c392540b 20
e0752744
FC
21import org.eclipse.linuxtools.tmf.ui.views.histogram.HistogramDataModel;
22import org.eclipse.linuxtools.tmf.ui.views.histogram.HistogramScaledData;
23import org.eclipse.linuxtools.tmf.ui.views.histogram.IHistogramModelListener;
90ed5958 24import org.junit.Test;
c392540b
FC
25
26/**
c392540b
FC
27 * Unit tests for the HistogramDataModel class.
28 */
90ed5958 29public class HistogramDataModelTest {
c392540b 30
90ed5958 31 private static final double DELTA = 1e-15;
c392540b
FC
32
33 /**
90ed5958 34 * Test method for {@link HistogramDataModel#HistogramDataModel()}.
c392540b 35 */
90ed5958 36 @Test
c392540b
FC
37 public void testHistogramDataModel() {
38 HistogramDataModel model = new HistogramDataModel();
39 assertTrue(model.getNbBuckets() == HistogramDataModel.DEFAULT_NUMBER_OF_BUCKETS);
40 assertTrue(model.getNbEvents() == 0);
41 assertTrue(model.getBucketDuration() == 1);
fbd124dd 42 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
43 assertTrue(model.getStartTime() == 0);
44 assertTrue(model.getEndTime() == 0);
45 assertTrue(model.getTimeLimit() == HistogramDataModel.DEFAULT_NUMBER_OF_BUCKETS);
46 }
47
48 /**
90ed5958 49 * Test method for {@link HistogramDataModel#HistogramDataModel(int)}.
c392540b 50 */
90ed5958 51 @Test
c392540b
FC
52 public void testHistogramDataModelInt() {
53 final int nbBuckets = 5 * 1000;
54 HistogramDataModel model = new HistogramDataModel(nbBuckets);
55 assertTrue(model.getNbEvents() == 0);
56 assertTrue(model.getNbBuckets() == nbBuckets);
57 assertTrue(model.getBucketDuration() == 1);
fbd124dd 58 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
59 assertTrue(model.getStartTime() == 0);
60 assertTrue(model.getEndTime() == 0);
61 assertTrue(model.getTimeLimit() == nbBuckets);
62 }
63
64 /**
90ed5958 65 * Test methods for {@link HistogramDataModel#countEvent(long,long)}.
c392540b 66 */
90ed5958 67 @Test
c392540b
FC
68 public void testClear() {
69 final int nbBuckets = 100;
70 HistogramDataModel model = new HistogramDataModel(nbBuckets);
fbd124dd 71 model.countEvent(0, -1);
c392540b
FC
72
73 assertTrue(model.getNbEvents() == 0);
74 assertTrue(model.getNbBuckets() == nbBuckets);
75 assertTrue(model.getBucketDuration() == 1);
fbd124dd 76 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
77 assertTrue(model.getStartTime() == 0);
78 assertTrue(model.getEndTime() == 0);
79 assertTrue(model.getTimeLimit() == nbBuckets);
80 }
81
82 /**
90ed5958 83 * Test methods for {@link HistogramDataModel#countEvent(long,long)}.
c392540b 84 */
90ed5958 85 @Test
c392540b
FC
86 public void testCountEvent_0() {
87 final int nbBuckets = 100;
88 HistogramDataModel model = new HistogramDataModel(nbBuckets);
fbd124dd 89 model.countEvent(0, -1);
c392540b
FC
90
91 assertTrue(model.getNbEvents() == 0);
92 assertTrue(model.getNbBuckets() == nbBuckets);
93 assertTrue(model.getBucketDuration() == 1);
fbd124dd 94 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
95 assertTrue(model.getStartTime() == 0);
96 assertTrue(model.getEndTime() == 0);
97 assertTrue(model.getTimeLimit() == nbBuckets);
98 }
99
64636df8 100 /**
90ed5958
AM
101 * Test methods for {@link HistogramDataModel#countEvent(long,long)} and
102 * {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 103 */
90ed5958 104 @Test
c392540b
FC
105 public void testCountEvent_1() {
106 final int nbBuckets = 100;
107 final int maxHeight = 10;
108
109 HistogramDataModel model = new HistogramDataModel(nbBuckets);
110
fbd124dd 111 HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight, 1);
c392540b
FC
112 for (int i = 0; i < result.fData.length; i++) {
113 assertTrue(result.fData[i] == 0);
114 }
115
116 assertTrue(model.getNbEvents() == 0);
117 assertTrue(model.getNbBuckets() == nbBuckets);
118 assertTrue(model.getBucketDuration() == 1);
fbd124dd 119 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
120 assertTrue(model.getStartTime() == 0);
121 assertTrue(model.getEndTime() == 0);
122 assertTrue(model.getTimeLimit() == nbBuckets);
123 }
124
64636df8 125 /**
90ed5958
AM
126 * Test methods for {@link HistogramDataModel#countEvent(long,long)} and
127 * {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 128 */
90ed5958 129 @Test
c392540b
FC
130 public void testCountEvent_2() {
131 final int nbBuckets = 100;
132 final int maxHeight = 10;
133
134 HistogramDataModel model = new HistogramDataModel(nbBuckets);
fbd124dd 135 model.countEvent(0, 1);
c392540b 136
fbd124dd 137 HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight, 1);
c392540b
FC
138 assertTrue(result.fData[0] == 1);
139 for (int i = 1; i < result.fData.length; i++) {
140 assertTrue(result.fData[i] == 0);
141 }
142
143 assertTrue(model.getNbEvents() == 1);
144 assertTrue(model.getNbBuckets() == nbBuckets);
145 assertTrue(model.getBucketDuration() == 1);
fbd124dd 146 assertTrue(model.getFirstBucketTime() == 1);
c392540b
FC
147 assertTrue(model.getStartTime() == 1);
148 assertTrue(model.getEndTime() == 1);
149 assertTrue(model.getTimeLimit() == nbBuckets + 1);
150 }
151
64636df8 152 /**
90ed5958
AM
153 * Test methods for {@link HistogramDataModel#countEvent(long,long)} and
154 * {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 155 */
90ed5958 156 @Test
c392540b
FC
157 public void testCountEvent_3() {
158 final int nbBuckets = 100;
159 final int maxHeight = 10;
160
161 HistogramDataModel model = new HistogramDataModel(nbBuckets);
162 for (int i = 0; i < nbBuckets; i++) {
fbd124dd 163 model.countEvent(i, i);
c392540b
FC
164 }
165
fbd124dd 166 HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight, 1);
c392540b
FC
167 for (int i = 0; i < result.fData.length; i++) {
168 assertTrue(result.fData[i] == 1);
169 }
170
171 assertTrue(model.getNbEvents() == nbBuckets);
172 assertTrue(model.getNbBuckets() == nbBuckets);
173 assertTrue(model.getBucketDuration() == 1);
fbd124dd 174 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
175 assertTrue(model.getStartTime() == 0);
176 assertTrue(model.getEndTime() == nbBuckets - 1);
177 assertTrue(model.getTimeLimit() == nbBuckets);
178 }
179
64636df8 180 /**
90ed5958
AM
181 * Test methods for {@link HistogramDataModel#countEvent(long,long)} and
182 * {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 183 */
90ed5958 184 @Test
c392540b
FC
185 public void testCountEvent_4() {
186 final int nbBuckets = 100;
187 final int maxHeight = 10;
188
189 HistogramDataModel model = new HistogramDataModel(nbBuckets);
190 for (int i = 0; i < nbBuckets; i++) {
fbd124dd
BH
191 model.countEvent(i, i);
192 model.countEvent(i+1, i);
c392540b
FC
193 }
194
fbd124dd 195 HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight, 1);
c392540b
FC
196 for (int i = 0; i < result.fData.length; i++) {
197 assertTrue(result.fData[i] == 2);
198 }
199
200 assertTrue(model.getNbEvents() == 2 * nbBuckets);
201 assertTrue(model.getNbBuckets() == nbBuckets);
202 assertTrue(model.getBucketDuration() == 1);
fbd124dd 203 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
204 assertTrue(model.getStartTime() == 0);
205 assertTrue(model.getEndTime() == nbBuckets - 1);
206 assertTrue(model.getTimeLimit() == nbBuckets);
207 }
208
64636df8 209 /**
90ed5958
AM
210 * Test methods for {@link HistogramDataModel#countEvent(long,long)} and
211 * {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 212 */
90ed5958 213 @Test
c392540b
FC
214 public void testCountEvent_5() {
215 final int nbBuckets = 100;
216 final int startTime = 25;
217 final int maxHeight = 10;
218
219 HistogramDataModel model = new HistogramDataModel(nbBuckets);
220 for (int i = startTime; i < startTime + nbBuckets; i++) {
fbd124dd 221 model.countEvent(i, i);
c392540b
FC
222 }
223
fbd124dd 224 HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight, 1);
c392540b
FC
225 for (int i = 0; i < result.fData.length; i++) {
226 assertTrue(result.fData[i] == 1);
227 }
228
229 assertTrue(model.getNbEvents() == nbBuckets);
230 assertTrue(model.getNbBuckets() == nbBuckets);
231 assertTrue(model.getBucketDuration() == 1);
fbd124dd 232 assertTrue(model.getFirstBucketTime() == startTime);
c392540b
FC
233 assertTrue(model.getStartTime() == startTime);
234 assertTrue(model.getEndTime() == startTime + nbBuckets - 1);
235 assertTrue(model.getTimeLimit() == startTime + nbBuckets);
236 }
237
238 /**
90ed5958 239 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
c392540b 240 */
90ed5958 241 @Test
40890fec
FC
242 public void testScaleTo_0() {
243 HistogramDataModel model = new HistogramDataModel(10);
244 try {
fbd124dd 245 model.scaleTo(10, 0, 1);
40890fec
FC
246 }
247 catch (AssertionError e1) {
248 try {
fbd124dd 249 model.scaleTo(0, 10, 1);
40890fec
FC
250 }
251 catch (AssertionError e2) {
252 try {
fbd124dd 253 model.scaleTo(0, 0, 1);
40890fec
FC
254 }
255 catch (AssertionError e3) {
256 return;
257 }
258 }
259 }
422f0fb8 260 fail("Uncaught assertion error"); //$NON-NLS-1$
40890fec
FC
261 }
262
64636df8 263 /**
90ed5958 264 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 265 */
90ed5958 266 @Test
c392540b
FC
267 public void testScaleTo_1() {
268 final int nbBuckets = 10;
269 final int maxHeight = 10;
270 final int nbEvents = nbBuckets / 2;
271 final int[] expectedResult = new int[] { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
272
273 HistogramDataModel model = new HistogramDataModel(nbBuckets);
274 for (int i = 0; i < nbEvents; i++) {
fbd124dd 275 model.countEvent(i, i);
c392540b
FC
276 }
277
fbd124dd 278 HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight, 1);
c392540b
FC
279 for (int i = 0; i < result.fData.length; i++) {
280 assertTrue(result.fData[i] == expectedResult[i]);
281 }
282
283 assertTrue(model.getNbEvents() == nbEvents);
284 assertTrue(model.getNbBuckets() == nbBuckets);
285 assertTrue(model.getBucketDuration() == 1);
fbd124dd 286 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
287 assertTrue(model.getStartTime() == 0);
288 assertTrue(model.getEndTime() == nbEvents - 1);
289 assertTrue(model.getTimeLimit() == nbBuckets);
290 }
291
64636df8 292 /**
90ed5958 293 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 294 */
90ed5958 295 @Test
c392540b
FC
296 public void testScaleTo_2() {
297 final int nbBuckets = 10;
298 final int maxHeight = 10;
299 final int nbEvents = nbBuckets;
300 final int[] expectedResult = new int[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
301
302 HistogramDataModel model = new HistogramDataModel(nbBuckets);
303 for (int i = 0; i < nbEvents; i++) {
fbd124dd 304 model.countEvent(i, i);
c392540b
FC
305 }
306
fbd124dd 307 HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight, 1);
c392540b
FC
308 for (int i = 0; i < result.fData.length; i++) {
309 assertTrue(result.fData[i] == expectedResult[i]);
310 }
311
312 assertTrue(model.getNbEvents() == nbEvents);
313 assertTrue(model.getNbBuckets() == nbBuckets);
314 assertTrue(model.getBucketDuration() == 1);
fbd124dd 315 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
316 assertTrue(model.getStartTime() == 0);
317 assertTrue(model.getEndTime() == nbEvents - 1);
318 assertTrue(model.getTimeLimit() == nbBuckets);
319 }
320
64636df8 321 /**
90ed5958 322 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 323 */
90ed5958 324 @Test
c392540b
FC
325 public void testScaleTo_3() {
326 final int nbBuckets = 10;
327 final int maxHeight = 10;
328 final int nbEvents = 2 * nbBuckets;
329 final int[] expectedResult = new int[] { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
330
331 HistogramDataModel model = new HistogramDataModel(nbBuckets);
332 for (int i = 0; i < nbEvents; i++) {
fbd124dd 333 model.countEvent(i, i);
c392540b
FC
334 }
335
fbd124dd 336 HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight, 1);
c392540b
FC
337 for (int i = 0; i < result.fData.length; i++) {
338 assertTrue(result.fData[i] == expectedResult[i]);
339 }
340
341 assertTrue(model.getNbEvents() == nbEvents);
342 assertTrue(model.getNbBuckets() == nbBuckets);
343 assertTrue(model.getBucketDuration() == 2);
fbd124dd 344 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
345 assertTrue(model.getStartTime() == 0);
346 assertTrue(model.getEndTime() == nbEvents - 1);
347 assertTrue(model.getTimeLimit() == 2 * nbBuckets);
348 }
349
64636df8 350 /**
90ed5958 351 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 352 */
90ed5958 353 @Test
c392540b
FC
354 public void testScaleTo_4() {
355 final int nbBuckets = 10;
356 final int maxHeight = 10;
357 final int nbEvents = 3 * nbBuckets;
358 final int[] expectedResult = new int[] { 4, 4, 4, 4, 4, 4, 4, 2, 0, 0 };
359
360 HistogramDataModel model = new HistogramDataModel(nbBuckets);
361 for (int i = 0; i < nbEvents; i++) {
fbd124dd 362 model.countEvent(i, i);
c392540b
FC
363 }
364
fbd124dd 365 HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight, 1);
c392540b
FC
366 for (int i = 0; i < result.fData.length; i++) {
367 assertTrue(result.fData[i] == expectedResult[i]);
368 }
369
370 assertTrue(model.getNbEvents() == nbEvents);
371 assertTrue(model.getNbBuckets() == nbBuckets);
372 assertTrue(model.getBucketDuration() == 4);
fbd124dd 373 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
374 assertTrue(model.getStartTime() == 0);
375 assertTrue(model.getEndTime() == nbEvents - 1);
376 assertTrue(model.getTimeLimit() == 4 * nbBuckets);
377 }
378
64636df8 379 /**
90ed5958 380 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 381 */
90ed5958 382 @Test
c392540b
FC
383 public void testScaleTo_5() {
384 final int nbBuckets = 100;
385 final int maxHeight = 20;
386 final int nbEvents = 2 * nbBuckets;
387 final int[] expectedResult = new int[] { 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 };
388
389 HistogramDataModel model = new HistogramDataModel(nbBuckets);
390 for (int i = 0; i < nbEvents; i++) {
fbd124dd 391 model.countEvent(i, i);
c392540b
FC
392 }
393
fbd124dd 394 HistogramScaledData result = model.scaleTo(10, maxHeight, 1);
c392540b
FC
395 for (int i = 0; i < result.fData.length; i++) {
396 assertTrue(result.fData[i] == expectedResult[i]);
397 }
398
399 assertTrue(model.getNbEvents() == nbEvents);
400 assertTrue(model.getNbBuckets() == nbBuckets);
401 assertTrue(model.getBucketDuration() == 2);
fbd124dd 402 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
403 assertTrue(model.getEndTime() == nbEvents - 1);
404 assertTrue(model.getTimeLimit() == 2 * nbBuckets);
405 }
406
64636df8 407 /**
90ed5958 408 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 409 */
90ed5958 410 @Test
c392540b
FC
411 public void testScaleTo_6() {
412 final int nbBuckets = 100;
413 final int maxHeight = 24;
414 final int nbEvents = 2 * nbBuckets + 1;
415 final int[] expectedResult = new int[] { 24, 24, 24, 24, 24, 24, 24, 24, 9, 0 };
416
417 HistogramDataModel model = new HistogramDataModel(nbBuckets);
418 for (int i = 0; i < nbEvents; i++) {
fbd124dd 419 model.countEvent(i, i);
c392540b
FC
420 }
421
fbd124dd 422 HistogramScaledData result = model.scaleTo(10, maxHeight, 1);
c392540b
FC
423 for (int i = 0; i < result.fData.length; i++) {
424 assertTrue(result.fData[i] == expectedResult[i]);
425 }
426
427 assertTrue(model.getNbEvents() == nbEvents);
428 assertTrue(model.getNbBuckets() == nbBuckets);
429 assertTrue(model.getBucketDuration() == 4);
fbd124dd 430 assertTrue(model.getFirstBucketTime() == 0);
c392540b
FC
431 assertTrue(model.getStartTime() == 0);
432 assertTrue(model.getEndTime() == nbEvents - 1);
433 assertTrue(model.getTimeLimit() == 4 * nbBuckets);
434 }
64636df8
BH
435
436 /**
90ed5958 437 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 438 */
90ed5958 439 @Test
fbd124dd
BH
440 public void testScaleTo_7() {
441 // verify scaleTo with barWidth > 1
442 final int nbBuckets = 100;
443 final int maxHeight = 24;
444 final int width = 10;
445 final int barWidth = 4;
446 final int nbEvents = 2 * nbBuckets + 1;
64636df8
BH
447
448 // (int)(width / barWith) = 2
449 // -> 2 bars -> expected result needs two buckets (scaled data)
450 //
fbd124dd 451 // buckets (in model) per bar = last bucket id / nbBars + 1 (plus 1 to cover all used buckets)
64636df8 452 // -> buckets per bar = 50 / 2 + 1 = 26
fbd124dd
BH
453 // -> first entry in expected result is 26 * 4 = 104
454 // -> second entry in expected result is 22 * 4 + 9 = 97
455 final int[] expectedResult = new int[] { 104, 97 };
64636df8 456
fbd124dd
BH
457 HistogramDataModel model = new HistogramDataModel(nbBuckets);
458 for (int i = 0; i < nbEvents; i++) {
459 model.countEvent(i, i);
460 }
461
462 // verify scaled data
463 HistogramScaledData result = model.scaleTo(width, maxHeight, barWidth);
64636df8 464
fbd124dd
BH
465 assertEquals(4 * 26, result.fBucketDuration);
466 assertEquals(0, result.fCurrentBucket);
467 assertEquals(0, result.fFirstBucketTime);
468 assertEquals(0, result.fFirstEventTime);
469 assertEquals(1, result.fLastBucket);
470 assertEquals(104, result.fMaxValue);
90ed5958 471 assertEquals((double)maxHeight/104, result.fScalingFactor, DELTA);
fbd124dd
BH
472 assertEquals(maxHeight, result.fHeight);
473 assertEquals(width, result.fWidth);
474 assertEquals(barWidth, result.fBarWidth);
475
476 for (int i = 0; i < result.fData.length; i++) {
477 assertEquals(expectedResult[i], result.fData[i]);
478 }
64636df8 479
fbd124dd
BH
480 // verify model
481 assertEquals(nbEvents, model.getNbEvents());
482 assertEquals(nbBuckets, model.getNbBuckets());
483 assertEquals(4, model.getBucketDuration());
484 assertEquals(0, model.getFirstBucketTime());
485 assertEquals(0, model.getStartTime());
486 assertEquals(nbEvents - 1, model.getEndTime());
487 assertEquals(4 * nbBuckets, model.getTimeLimit());
488 }
c392540b 489
64636df8 490 /**
90ed5958 491 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 492 */
90ed5958 493 @Test
fbd124dd
BH
494 public void testScaleToReverse_1() {
495 final int nbBuckets = 100;
496 final int maxHeight = 24;
497 final int width = 10;
498 final int barWidth = 1;
499 final int nbEvents = 2 * nbBuckets + 1;
64636df8
BH
500
501 // (int)(width / barWith) = 10
502 // -> 10 bars -> expected result needs 10 buckets (scaled data)
503 //
fbd124dd 504 // buckets in (model) per bar = last bucket id / nbBars + 1 (plus 1 to cover all used buckets)
64636df8 505 // -> buckets per bar = 50 / 10 + 1 = 6
fbd124dd 506 final int[] expectedResult = new int[] { 21, 24, 24, 24, 24, 24, 24, 24, 12, 0 };
64636df8 507
fbd124dd
BH
508 HistogramDataModel model = new HistogramDataModel(nbBuckets);
509 for (int i = nbEvents - 1; i >= 0; i--) {
510 model.countEvent(i, i);
511 }
512
513 // verify scaled data
514 HistogramScaledData result = model.scaleTo(width, maxHeight, barWidth);
64636df8 515
fbd124dd
BH
516 assertEquals(4 * 6, result.fBucketDuration);
517 assertEquals(0, result.fCurrentBucket);
518 assertEquals(-3, result.fFirstBucketTime); // negative is correct, can happen when reverse
519 assertEquals(0, result.fFirstEventTime);
520 assertEquals(9, result.fLastBucket);
521 assertEquals(24, result.fMaxValue);
90ed5958 522 assertEquals((double)maxHeight/24, result.fScalingFactor, DELTA);
fbd124dd
BH
523 assertEquals(maxHeight, result.fHeight);
524 assertEquals(width, result.fWidth);
525 assertEquals(barWidth, result.fBarWidth);
526
527 for (int i = 0; i < result.fData.length; i++) {
528 assertEquals(expectedResult[i], result.fData[i]);
529 }
64636df8 530
fbd124dd
BH
531 // verify model
532 assertEquals(nbEvents, model.getNbEvents());
533 assertEquals(nbBuckets, model.getNbBuckets());
534 assertEquals(4, model.getBucketDuration());
535 assertEquals(-3, model.getFirstBucketTime());
536 assertEquals(0, model.getStartTime());
537 assertEquals(nbEvents - 1, model.getEndTime());
538 assertEquals(-3 + 4 * nbBuckets, model.getTimeLimit());
539 }
540
64636df8 541 /**
90ed5958 542 * Test method for {@link HistogramDataModel#scaleTo(int,int,int)}.
64636df8 543 */
90ed5958 544 @Test
64636df8 545 public void testScaleToReverse_2() {
fbd124dd
BH
546 final int nbBuckets = 100;
547 final int maxHeight = 24;
548 final int width = 10;
549 final int barWidth = 1;
64636df8 550
fbd124dd
BH
551 final int nbEvents = 2 * nbBuckets;
552
553 HistogramDataModel model = new HistogramDataModel(nbBuckets);
554 for (int i = 0; i < nbEvents; i++) {
555 model.countEvent(i, i);
556 }
557
558 HistogramScaledData result = model.scaleTo(width, maxHeight, barWidth);
559
560 model.clear();
64636df8 561
fbd124dd
BH
562 for (int i = nbEvents -1; i >= 0; i--) {
563 model.countEvent(i, i);
564 }
64636df8 565
fbd124dd 566 HistogramScaledData revResult = model.scaleTo(width, maxHeight, barWidth);
64636df8 567
fbd124dd
BH
568 assertEquals(nbEvents, model.getNbEvents());
569 assertEquals(nbBuckets, model.getNbBuckets());
570 assertEquals(2, model.getBucketDuration());
571 assertEquals(0, model.getFirstBucketTime());
572 assertEquals(0, model.getStartTime());
573 assertEquals(nbEvents - 1, model.getEndTime());
574 assertEquals(2 * nbBuckets, model.getTimeLimit());
64636df8
BH
575
576 // For the above number of events, result and revResult are exactly the same.
fbd124dd
BH
577 assertEquals(result.fBucketDuration, revResult.fBucketDuration);
578 assertEquals(result.fCurrentBucket, revResult.fCurrentBucket);
579 assertEquals(result.fFirstBucketTime, revResult.fFirstBucketTime);
580 assertEquals(result.fMaxValue, revResult.fMaxValue);
90ed5958 581 assertEquals(result.fScalingFactor, revResult.fScalingFactor, DELTA);
fbd124dd
BH
582 assertEquals(result.fLastBucket, revResult.fLastBucket);
583 assertEquals(result.getBucketEndTime(0), revResult.getBucketEndTime(0));
584 assertEquals(result.getBucketStartTime(0), revResult.getBucketStartTime(0));
64636df8 585
fbd124dd
BH
586 for (int i = 0; i < result.fData.length; i++) {
587 assertTrue(result.fData[i] == revResult.fData[i]);
588 }
589 }
64636df8
BH
590
591 /**
592 * Test method for testing model listener.
593 */
90ed5958 594 @Test
fbd124dd
BH
595 public void testModelListener() {
596 final int nbBuckets = 2000;
597 final int nbEvents = 10 * nbBuckets + 256;
598 final int[] count = new int[1];
599 count [0] = 0;
600
601 // Test add listener and call of listener
602 IHistogramModelListener listener = new IHistogramModelListener() {
603 @Override
604 public void modelUpdated() {
605 count[0]++;
606 }
607 };
608
609 // Test that the listener interface is called every 16000 events.
610 HistogramDataModel model = new HistogramDataModel(nbBuckets);
611 model.addHistogramListener(listener);
612 for (int i = 0; i < nbEvents; i++) {
613 model.countEvent(i+1, i);
614 }
615
616 assertTrue(count[0] == 1);
617
618 // Test that the listener interface is called when complete is called.
619 model.complete();
620 assertTrue(count[0] == 2);
621
622 // Test that clear triggers call of listener interface
623 model.clear();
624 assertTrue(count[0] == 3);
625
626 // Test remove listener
627 count[0] = 0;
628 model.removeHistogramListener(listener);
64636df8 629
fbd124dd
BH
630 for (int i = 0; i < nbEvents; i++) {
631 model.countEvent(i, i);
632 }
633 model.complete();
634 assertTrue(count[0] == 0);
635 }
c392540b 636}
This page took 0.062454 seconds and 5 git commands to generate.