Commit | Line | Data |
---|---|---|
c392540b FC |
1 | /******************************************************************************* |
2 | * Copyright (c) 2011 Ericsson | |
3 | * | |
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 | |
8 | * | |
9 | * Contributors: | |
10 | * Francois Chouinard - Initial API and implementation | |
11 | *******************************************************************************/ | |
12 | ||
13 | package org.eclipse.linuxtools.lttng.ui.tests.histogram; | |
14 | ||
15 | import static org.junit.Assert.assertTrue; | |
16 | ||
17 | import org.eclipse.linuxtools.lttng.ui.views.histogram.HistogramDataModel; | |
18 | import org.eclipse.linuxtools.lttng.ui.views.histogram.HistogramScaledData; | |
19 | import org.junit.After; | |
20 | import org.junit.Before; | |
21 | import org.junit.Test; | |
22 | ||
23 | /** | |
24 | * <b><u>HistogramDataModelTest</u></b> | |
25 | * <p> | |
26 | * Unit tests for the HistogramDataModel class. | |
27 | */ | |
28 | public class HistogramDataModelTest { | |
29 | ||
30 | // ------------------------------------------------------------------------ | |
31 | // Test data | |
32 | // ------------------------------------------------------------------------ | |
33 | ||
34 | // ------------------------------------------------------------------------ | |
35 | // Housekeeping | |
36 | // ------------------------------------------------------------------------ | |
37 | ||
38 | @Before | |
39 | public void setUp() throws Exception { | |
40 | } | |
41 | ||
42 | @After | |
43 | public void tearDown() throws Exception { | |
44 | } | |
45 | ||
46 | // ------------------------------------------------------------------------ | |
47 | // Tests | |
48 | // ------------------------------------------------------------------------ | |
49 | ||
50 | /** | |
51 | * Test method for | |
52 | * {@link org.eclipse.linuxtools.tmf.HistogramDataModel.views.histogram.TmfHistogramDataModel#HistogramDataModel()} | |
53 | * . | |
54 | */ | |
55 | @Test | |
56 | public void testHistogramDataModel() { | |
57 | HistogramDataModel model = new HistogramDataModel(); | |
58 | assertTrue(model.getNbBuckets() == HistogramDataModel.DEFAULT_NUMBER_OF_BUCKETS); | |
59 | assertTrue(model.getNbEvents() == 0); | |
60 | assertTrue(model.getBucketDuration() == 1); | |
61 | assertTrue(model.getStartTime() == 0); | |
62 | assertTrue(model.getEndTime() == 0); | |
63 | assertTrue(model.getTimeLimit() == HistogramDataModel.DEFAULT_NUMBER_OF_BUCKETS); | |
64 | } | |
65 | ||
66 | /** | |
67 | * Test method for | |
68 | * {@link org.eclipse.linuxtools.tmf.HistogramDataModel.views.histogram.TmfHistogramDataModel#HistogramDataModel(int)} | |
69 | * . | |
70 | */ | |
71 | @Test | |
72 | public void testHistogramDataModelInt() { | |
73 | final int nbBuckets = 5 * 1000; | |
74 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
75 | assertTrue(model.getNbEvents() == 0); | |
76 | assertTrue(model.getNbBuckets() == nbBuckets); | |
77 | assertTrue(model.getBucketDuration() == 1); | |
78 | assertTrue(model.getStartTime() == 0); | |
79 | assertTrue(model.getEndTime() == 0); | |
80 | assertTrue(model.getTimeLimit() == nbBuckets); | |
81 | } | |
82 | ||
83 | /** | |
84 | * Test methods for | |
85 | * {@link org.eclipse.linuxtools.tmf.HistogramDataModel.views.histogram.TmfHistogramDataModel#countEvent(long)} | |
86 | * . | |
87 | */ | |
88 | @Test | |
89 | public void testClear() { | |
90 | final int nbBuckets = 100; | |
91 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
92 | model.countEvent(-1); | |
93 | ||
94 | assertTrue(model.getNbEvents() == 0); | |
95 | assertTrue(model.getNbBuckets() == nbBuckets); | |
96 | assertTrue(model.getBucketDuration() == 1); | |
97 | assertTrue(model.getStartTime() == 0); | |
98 | assertTrue(model.getEndTime() == 0); | |
99 | assertTrue(model.getTimeLimit() == nbBuckets); | |
100 | } | |
101 | ||
102 | /** | |
103 | * Test methods for | |
104 | * {@link org.eclipse.linuxtools.tmf.HistogramDataModel.views.histogram.TmfHistogramDataModel#countEvent(long)} | |
105 | * . | |
106 | */ | |
107 | @Test | |
108 | public void testCountEvent_0() { | |
109 | final int nbBuckets = 100; | |
110 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
111 | model.countEvent(-1); | |
112 | ||
113 | assertTrue(model.getNbEvents() == 0); | |
114 | assertTrue(model.getNbBuckets() == nbBuckets); | |
115 | assertTrue(model.getBucketDuration() == 1); | |
116 | assertTrue(model.getStartTime() == 0); | |
117 | assertTrue(model.getEndTime() == 0); | |
118 | assertTrue(model.getTimeLimit() == nbBuckets); | |
119 | } | |
120 | ||
121 | @Test | |
122 | public void testCountEvent_1() { | |
123 | final int nbBuckets = 100; | |
124 | final int maxHeight = 10; | |
125 | ||
126 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
127 | ||
128 | HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight); | |
129 | for (int i = 0; i < result.fData.length; i++) { | |
130 | assertTrue(result.fData[i] == 0); | |
131 | } | |
132 | ||
133 | assertTrue(model.getNbEvents() == 0); | |
134 | assertTrue(model.getNbBuckets() == nbBuckets); | |
135 | assertTrue(model.getBucketDuration() == 1); | |
136 | assertTrue(model.getStartTime() == 0); | |
137 | assertTrue(model.getEndTime() == 0); | |
138 | assertTrue(model.getTimeLimit() == nbBuckets); | |
139 | } | |
140 | ||
141 | @Test | |
142 | public void testCountEvent_2() { | |
143 | final int nbBuckets = 100; | |
144 | final int maxHeight = 10; | |
145 | ||
146 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
147 | model.countEvent(1); | |
148 | ||
149 | HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight); | |
150 | assertTrue(result.fData[0] == 1); | |
151 | for (int i = 1; i < result.fData.length; i++) { | |
152 | assertTrue(result.fData[i] == 0); | |
153 | } | |
154 | ||
155 | assertTrue(model.getNbEvents() == 1); | |
156 | assertTrue(model.getNbBuckets() == nbBuckets); | |
157 | assertTrue(model.getBucketDuration() == 1); | |
158 | assertTrue(model.getStartTime() == 1); | |
159 | assertTrue(model.getEndTime() == 1); | |
160 | assertTrue(model.getTimeLimit() == nbBuckets + 1); | |
161 | } | |
162 | ||
163 | @Test | |
164 | public void testCountEvent_3() { | |
165 | final int nbBuckets = 100; | |
166 | final int maxHeight = 10; | |
167 | ||
168 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
169 | for (int i = 0; i < nbBuckets; i++) { | |
170 | model.countEvent(i); | |
171 | } | |
172 | ||
173 | HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight); | |
174 | for (int i = 0; i < result.fData.length; i++) { | |
175 | assertTrue(result.fData[i] == 1); | |
176 | } | |
177 | ||
178 | assertTrue(model.getNbEvents() == nbBuckets); | |
179 | assertTrue(model.getNbBuckets() == nbBuckets); | |
180 | assertTrue(model.getBucketDuration() == 1); | |
181 | assertTrue(model.getStartTime() == 0); | |
182 | assertTrue(model.getEndTime() == nbBuckets - 1); | |
183 | assertTrue(model.getTimeLimit() == nbBuckets); | |
184 | } | |
185 | ||
186 | @Test | |
187 | public void testCountEvent_4() { | |
188 | final int nbBuckets = 100; | |
189 | final int maxHeight = 10; | |
190 | ||
191 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
192 | for (int i = 0; i < nbBuckets; i++) { | |
193 | model.countEvent(i); | |
194 | model.countEvent(i); | |
195 | } | |
196 | ||
197 | HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight); | |
198 | for (int i = 0; i < result.fData.length; i++) { | |
199 | assertTrue(result.fData[i] == 2); | |
200 | } | |
201 | ||
202 | assertTrue(model.getNbEvents() == 2 * nbBuckets); | |
203 | assertTrue(model.getNbBuckets() == nbBuckets); | |
204 | assertTrue(model.getBucketDuration() == 1); | |
205 | assertTrue(model.getStartTime() == 0); | |
206 | assertTrue(model.getEndTime() == nbBuckets - 1); | |
207 | assertTrue(model.getTimeLimit() == nbBuckets); | |
208 | } | |
209 | ||
210 | @Test | |
211 | public void testCountEvent_5() { | |
212 | final int nbBuckets = 100; | |
213 | final int startTime = 25; | |
214 | final int maxHeight = 10; | |
215 | ||
216 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
217 | for (int i = startTime; i < startTime + nbBuckets; i++) { | |
218 | model.countEvent(i); | |
219 | } | |
220 | ||
221 | HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight); | |
222 | for (int i = 0; i < result.fData.length; i++) { | |
223 | assertTrue(result.fData[i] == 1); | |
224 | } | |
225 | ||
226 | assertTrue(model.getNbEvents() == nbBuckets); | |
227 | assertTrue(model.getNbBuckets() == nbBuckets); | |
228 | assertTrue(model.getBucketDuration() == 1); | |
229 | assertTrue(model.getStartTime() == startTime); | |
230 | assertTrue(model.getEndTime() == startTime + nbBuckets - 1); | |
231 | assertTrue(model.getTimeLimit() == startTime + nbBuckets); | |
232 | } | |
233 | ||
234 | /** | |
235 | * Test method for | |
236 | * {@link org.eclipse.linuxtools.tmf.HistogramDataModel.views.histogram.TmfHistogramDataModel#scaleTo(int,int)} | |
237 | * . | |
238 | */ | |
239 | @Test | |
240 | public void testScaleTo_1() { | |
241 | final int nbBuckets = 10; | |
242 | final int maxHeight = 10; | |
243 | final int nbEvents = nbBuckets / 2; | |
244 | final int[] expectedResult = new int[] { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }; | |
245 | ||
246 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
247 | for (int i = 0; i < nbEvents; i++) { | |
248 | model.countEvent(i); | |
249 | } | |
250 | ||
251 | HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight); | |
252 | for (int i = 0; i < result.fData.length; i++) { | |
253 | assertTrue(result.fData[i] == expectedResult[i]); | |
254 | } | |
255 | ||
256 | assertTrue(model.getNbEvents() == nbEvents); | |
257 | assertTrue(model.getNbBuckets() == nbBuckets); | |
258 | assertTrue(model.getBucketDuration() == 1); | |
259 | assertTrue(model.getStartTime() == 0); | |
260 | assertTrue(model.getEndTime() == nbEvents - 1); | |
261 | assertTrue(model.getTimeLimit() == nbBuckets); | |
262 | } | |
263 | ||
264 | @Test | |
265 | public void testScaleTo_2() { | |
266 | final int nbBuckets = 10; | |
267 | final int maxHeight = 10; | |
268 | final int nbEvents = nbBuckets; | |
269 | final int[] expectedResult = new int[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; | |
270 | ||
271 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
272 | for (int i = 0; i < nbEvents; i++) { | |
273 | model.countEvent(i); | |
274 | } | |
275 | ||
276 | HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight); | |
277 | for (int i = 0; i < result.fData.length; i++) { | |
278 | assertTrue(result.fData[i] == expectedResult[i]); | |
279 | } | |
280 | ||
281 | assertTrue(model.getNbEvents() == nbEvents); | |
282 | assertTrue(model.getNbBuckets() == nbBuckets); | |
283 | assertTrue(model.getBucketDuration() == 1); | |
284 | assertTrue(model.getStartTime() == 0); | |
285 | assertTrue(model.getEndTime() == nbEvents - 1); | |
286 | assertTrue(model.getTimeLimit() == nbBuckets); | |
287 | } | |
288 | ||
289 | @Test | |
290 | public void testScaleTo_3() { | |
291 | final int nbBuckets = 10; | |
292 | final int maxHeight = 10; | |
293 | final int nbEvents = 2 * nbBuckets; | |
294 | final int[] expectedResult = new int[] { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; | |
295 | ||
296 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
297 | for (int i = 0; i < nbEvents; i++) { | |
298 | model.countEvent(i); | |
299 | } | |
300 | ||
301 | HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight); | |
302 | for (int i = 0; i < result.fData.length; i++) { | |
303 | assertTrue(result.fData[i] == expectedResult[i]); | |
304 | } | |
305 | ||
306 | assertTrue(model.getNbEvents() == nbEvents); | |
307 | assertTrue(model.getNbBuckets() == nbBuckets); | |
308 | assertTrue(model.getBucketDuration() == 2); | |
309 | assertTrue(model.getStartTime() == 0); | |
310 | assertTrue(model.getEndTime() == nbEvents - 1); | |
311 | assertTrue(model.getTimeLimit() == 2 * nbBuckets); | |
312 | } | |
313 | ||
314 | @Test | |
315 | public void testScaleTo_4() { | |
316 | final int nbBuckets = 10; | |
317 | final int maxHeight = 10; | |
318 | final int nbEvents = 3 * nbBuckets; | |
319 | final int[] expectedResult = new int[] { 4, 4, 4, 4, 4, 4, 4, 2, 0, 0 }; | |
320 | ||
321 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
322 | for (int i = 0; i < nbEvents; i++) { | |
323 | model.countEvent(i); | |
324 | } | |
325 | ||
326 | HistogramScaledData result = model.scaleTo(nbBuckets, maxHeight); | |
327 | for (int i = 0; i < result.fData.length; i++) { | |
328 | assertTrue(result.fData[i] == expectedResult[i]); | |
329 | } | |
330 | ||
331 | assertTrue(model.getNbEvents() == nbEvents); | |
332 | assertTrue(model.getNbBuckets() == nbBuckets); | |
333 | assertTrue(model.getBucketDuration() == 4); | |
334 | assertTrue(model.getStartTime() == 0); | |
335 | assertTrue(model.getEndTime() == nbEvents - 1); | |
336 | assertTrue(model.getTimeLimit() == 4 * nbBuckets); | |
337 | } | |
338 | ||
339 | @Test | |
340 | public void testScaleTo_5() { | |
341 | final int nbBuckets = 100; | |
342 | final int maxHeight = 20; | |
343 | final int nbEvents = 2 * nbBuckets; | |
344 | final int[] expectedResult = new int[] { 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; | |
345 | ||
346 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
347 | for (int i = 0; i < nbEvents; i++) { | |
348 | model.countEvent(i); | |
349 | } | |
350 | ||
351 | HistogramScaledData result = model.scaleTo(10, maxHeight); | |
352 | for (int i = 0; i < result.fData.length; i++) { | |
353 | assertTrue(result.fData[i] == expectedResult[i]); | |
354 | } | |
355 | ||
356 | assertTrue(model.getNbEvents() == nbEvents); | |
357 | assertTrue(model.getNbBuckets() == nbBuckets); | |
358 | assertTrue(model.getBucketDuration() == 2); | |
359 | assertTrue(model.getStartTime() == 0); | |
360 | assertTrue(model.getEndTime() == nbEvents - 1); | |
361 | assertTrue(model.getTimeLimit() == 2 * nbBuckets); | |
362 | } | |
363 | ||
364 | @Test | |
365 | public void testScaleTo_6() { | |
366 | final int nbBuckets = 100; | |
367 | final int maxHeight = 24; | |
368 | final int nbEvents = 2 * nbBuckets + 1; | |
369 | final int[] expectedResult = new int[] { 24, 24, 24, 24, 24, 24, 24, 24, 9, 0 }; | |
370 | ||
371 | HistogramDataModel model = new HistogramDataModel(nbBuckets); | |
372 | for (int i = 0; i < nbEvents; i++) { | |
373 | model.countEvent(i); | |
374 | } | |
375 | ||
376 | HistogramScaledData result = model.scaleTo(10, maxHeight); | |
377 | for (int i = 0; i < result.fData.length; i++) { | |
378 | assertTrue(result.fData[i] == expectedResult[i]); | |
379 | } | |
380 | ||
381 | assertTrue(model.getNbEvents() == nbEvents); | |
382 | assertTrue(model.getNbBuckets() == nbBuckets); | |
383 | assertTrue(model.getBucketDuration() == 4); | |
384 | assertTrue(model.getStartTime() == 0); | |
385 | assertTrue(model.getEndTime() == nbEvents - 1); | |
386 | assertTrue(model.getTimeLimit() == 4 * nbBuckets); | |
387 | } | |
388 | ||
389 | } |