1 /*******************************************************************************
2 * Copyright (c) 2016 Ericsson
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
10 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.ui
.tests
.widgets
.timegraph
.model
;
15 import static org
.junit
.Assert
.assertEquals
;
16 import static org
.junit
.Assert
.assertFalse
;
17 import static org
.junit
.Assert
.assertTrue
;
19 import java
.util
.Arrays
;
20 import java
.util
.Comparator
;
21 import java
.util
.Iterator
;
23 import org
.eclipse
.swt
.SWT
;
24 import org
.eclipse
.tracecompass
.tmf
.ui
.widgets
.timegraph
.model
.ITimeEvent
;
25 import org
.eclipse
.tracecompass
.tmf
.ui
.widgets
.timegraph
.model
.NullTimeEvent
;
26 import org
.eclipse
.tracecompass
.tmf
.ui
.widgets
.timegraph
.model
.TimeEvent
;
27 import org
.eclipse
.tracecompass
.tmf
.ui
.widgets
.timegraph
.model
.TimeGraphEntry
;
28 import org
.junit
.Test
;
30 import com
.google
.common
.collect
.Iterators
;
33 * Test the {@link TimeGraphEntry} class
35 public class TimeGraphEntryTest
{
37 private final static String NAME
= "name";
40 * Test method addEvent.
43 public void testAddEvent() {
44 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
45 ITimeEvent event1
= new TimeEvent(entry
, 0, 10, 1);
46 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
47 entry
.addEvent(event1
);
48 entry
.addEvent(event2
);
49 assertEquals(0, entry
.getStartTime());
50 assertEquals(20, entry
.getEndTime());
51 assertIteratorsEqual(Iterators
.forArray(event1
, event2
), entry
.getTimeEventsIterator());
55 * Test method addEvent with replaced last event.
58 public void testAddEventReplaceLast() {
59 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
60 ITimeEvent event1
= new TimeEvent(entry
, 0, 10, 1);
61 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
62 ITimeEvent event3a
= new TimeEvent(entry
, 20, 5, 3);
63 ITimeEvent event3
= new TimeEvent(entry
, 20, 10, 3);
64 entry
.addEvent(event1
);
65 entry
.addEvent(event2
);
66 entry
.addEvent(event3a
);
67 // last event is replaced
68 entry
.addEvent(event3
);
69 assertEquals(0, entry
.getStartTime());
70 assertEquals(30, entry
.getEndTime());
71 assertIteratorsEqual(Iterators
.forArray(event1
, event2
, event3
), entry
.getTimeEventsIterator());
75 * Test method addEvent with null events.
78 public void testAddEventNulls() {
79 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
80 ITimeEvent event1
= new NullTimeEvent(entry
, 0, 10);
81 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
82 ITimeEvent event3
= new NullTimeEvent(entry
, 20, 10);
83 // null events do not affect start and end time
84 entry
.addEvent(event1
);
85 entry
.addEvent(event2
);
86 entry
.addEvent(event3
);
87 assertEquals(10, entry
.getStartTime());
88 assertEquals(20, entry
.getEndTime());
89 assertIteratorsEqual(Iterators
.forArray(event1
, event2
, event3
), entry
.getTimeEventsIterator());
92 * Test method addZoomedEvent.
95 public void testaddZoomedEvent() {
96 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
97 ITimeEvent event1
= new TimeEvent(entry
, 0, 10, 1);
98 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
99 entry
.addZoomedEvent(event1
);
100 entry
.addZoomedEvent(event2
);
101 assertEquals(0, entry
.getStartTime());
102 assertEquals(20, entry
.getEndTime());
103 assertIteratorsEqual(Iterators
.forArray(event1
, event2
), entry
.getTimeEventsIterator());
107 * Test method addZoomedEvent with duplicates.
110 public void testaddZoomedEventDuplicate() {
111 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
112 ITimeEvent event1
= new TimeEvent(entry
, 0, 10, 1);
113 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
114 ITimeEvent event3
= new TimeEvent(entry
, 20, 10, 3);
115 entry
.addZoomedEvent(event1
);
116 entry
.addZoomedEvent(event2
);
117 // duplicate events are not added twice
118 entry
.addZoomedEvent(event1
);
119 entry
.addZoomedEvent(event2
);
120 entry
.addZoomedEvent(event3
);
121 assertEquals(0, entry
.getStartTime());
122 assertEquals(30, entry
.getEndTime());
123 assertIteratorsEqual(Iterators
.forArray(event1
, event2
, event3
), entry
.getTimeEventsIterator());
127 * Test method addZoomedEvent with replaced last event.
130 public void testaddZoomedEventReplaceLast() {
131 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
132 ITimeEvent event1
= new TimeEvent(entry
, 0, 10, 1);
133 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
134 ITimeEvent event3a
= new TimeEvent(entry
, 20, 5, 3);
135 ITimeEvent event3
= new TimeEvent(entry
, 20, 10, 3);
136 entry
.addZoomedEvent(event1
);
137 entry
.addZoomedEvent(event2
);
138 entry
.addZoomedEvent(event3a
);
139 entry
.addZoomedEvent(event1
);
140 entry
.addZoomedEvent(event2
);
141 // last event is replaced
142 entry
.addZoomedEvent(event3
);
143 assertEquals(0, entry
.getStartTime());
144 assertEquals(30, entry
.getEndTime());
145 assertIteratorsEqual(Iterators
.forArray(event1
, event2
, event3
), entry
.getTimeEventsIterator());
149 * Test method addZoomedEvent with null events.
152 public void testAddZoomedEventNulls() {
153 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
154 ITimeEvent event1
= new NullTimeEvent(entry
, 0, 10);
155 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
156 ITimeEvent event3
= new NullTimeEvent(entry
, 20, 10);
157 // null events do not affect start and end time
158 entry
.addZoomedEvent(event1
);
159 entry
.addZoomedEvent(event2
);
160 entry
.addZoomedEvent(event3
);
161 assertEquals(10, entry
.getStartTime());
162 assertEquals(20, entry
.getEndTime());
163 assertIteratorsEqual(Iterators
.forArray(event1
, event2
, event3
), entry
.getTimeEventsIterator());
167 * Test method addZoomedEvent with partial list restarted.
170 public void testaddZoomedEventPartialRestart() {
171 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
172 ITimeEvent event1
= new TimeEvent(entry
, 0, 10, 1);
173 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
174 ITimeEvent event3
= new TimeEvent(entry
, 20, 10, 3);
175 entry
.addZoomedEvent(event2
);
176 entry
.addZoomedEvent(event3
);
177 // zoomed list is cleared and restarted
178 entry
.addZoomedEvent(event1
);
179 entry
.addZoomedEvent(event2
);
180 entry
.addZoomedEvent(event3
);
181 assertEquals(0, entry
.getStartTime());
182 assertEquals(30, entry
.getEndTime());
183 assertIteratorsEqual(Iterators
.forArray(event1
, event2
, event3
), entry
.getTimeEventsIterator());
187 * Test method getTimeEventsIterator with event list and zoomed list.
190 public void testGetTimeEventsIteratorMixed() {
191 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
192 ITimeEvent event1
= new TimeEvent(entry
, 0, 10, 1);
193 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
194 ITimeEvent event3
= new TimeEvent(entry
, 20, 10, 3);
195 ITimeEvent event2a
= new TimeEvent(entry
, 10, 5, 4);
196 ITimeEvent event2b
= new TimeEvent(entry
, 15, 5, 5);
197 entry
.addEvent(event1
);
198 entry
.addEvent(event2
);
199 entry
.addEvent(event3
);
200 // zoomed events override normal events they overlap completely
201 entry
.addZoomedEvent(event2a
);
202 entry
.addZoomedEvent(event2b
);
203 assertEquals(0, entry
.getStartTime());
204 assertEquals(30, entry
.getEndTime());
205 assertIteratorsEqual(Iterators
.forArray(event1
, event2a
, event2b
, event3
), entry
.getTimeEventsIterator());
209 * Test method getTimeEventsIterator with event list and zoomed list partially overlapping.
212 public void testGetTimeEventsIteratorMixedSplit() {
213 TimeGraphEntry entry
= new TimeGraphEntry(NAME
, SWT
.DEFAULT
, SWT
.DEFAULT
);
214 ITimeEvent event1
= new TimeEvent(entry
, 0, 10, 1);
215 ITimeEvent event2
= new TimeEvent(entry
, 10, 10, 2);
216 ITimeEvent event3
= new TimeEvent(entry
, 20, 10, 3);
217 ITimeEvent event2a
= new TimeEvent(entry
, 5, 10, 4);
218 ITimeEvent event2b
= new TimeEvent(entry
, 15, 10, 5);
219 ITimeEvent event1s
= new TimeEvent(entry
, 0, 5, 1);
220 ITimeEvent event3s
= new TimeEvent(entry
, 25, 5, 3);
221 entry
.addEvent(event1
);
222 entry
.addEvent(event2
);
223 entry
.addEvent(event3
);
224 // zoomed events split and override normal events they overlap partially
225 entry
.addZoomedEvent(event2a
);
226 entry
.addZoomedEvent(event2b
);
227 assertEquals(0, entry
.getStartTime());
228 assertEquals(30, entry
.getEndTime());
229 assertIteratorsEqual(Iterators
.forArray(event1s
, event2a
, event2b
, event3s
), entry
.getTimeEventsIterator());
233 * Test method addChild.
236 public void testAddChild() {
237 TimeGraphEntry parent
= new TimeGraphEntry("parent", SWT
.DEFAULT
, SWT
.DEFAULT
);
238 TimeGraphEntry child
= new TimeGraphEntry("child", SWT
.DEFAULT
, SWT
.DEFAULT
);
239 parent
.addChild(child
);
240 assertEquals(null, parent
.getParent());
241 assertEquals(Arrays
.asList(child
), parent
.getChildren());
242 assertEquals(parent
, child
.getParent());
243 assertEquals(Arrays
.asList(), child
.getChildren());
247 * Test method addChild at specific position.
250 public void testAddChildAtPosition() {
251 TimeGraphEntry parent
= new TimeGraphEntry("parent", SWT
.DEFAULT
, SWT
.DEFAULT
);
252 TimeGraphEntry child1
= new TimeGraphEntry("child1", SWT
.DEFAULT
, SWT
.DEFAULT
);
253 TimeGraphEntry child2
= new TimeGraphEntry("child2", SWT
.DEFAULT
, SWT
.DEFAULT
);
254 parent
.addChild(0, child1
);
255 parent
.addChild(0, child2
);
256 assertEquals(null, parent
.getParent());
257 assertEquals(Arrays
.asList(child2
, child1
), parent
.getChildren());
258 assertEquals(parent
, child1
.getParent());
259 assertEquals(Arrays
.asList(), child1
.getChildren());
260 assertEquals(parent
, child2
.getParent());
261 assertEquals(Arrays
.asList(), child2
.getChildren());
265 * Test method addChild to same parent.
268 public void testAddChildSameParent() {
269 TimeGraphEntry parent
= new TimeGraphEntry("parent", SWT
.DEFAULT
, SWT
.DEFAULT
);
270 TimeGraphEntry child
= new TimeGraphEntry("child", SWT
.DEFAULT
, SWT
.DEFAULT
);
271 parent
.addChild(child
);
272 parent
.addChild(child
);
273 assertEquals(null, parent
.getParent());
274 assertEquals(Arrays
.asList(child
), parent
.getChildren());
275 assertEquals(parent
, child
.getParent());
276 assertEquals(Arrays
.asList(), child
.getChildren());
280 * Test method addChild to an other parent.
283 public void testAddChildOtherParent() {
284 TimeGraphEntry parent1
= new TimeGraphEntry("parent1", SWT
.DEFAULT
, SWT
.DEFAULT
);
285 TimeGraphEntry parent2
= new TimeGraphEntry("parent2", SWT
.DEFAULT
, SWT
.DEFAULT
);
286 TimeGraphEntry child
= new TimeGraphEntry("child", SWT
.DEFAULT
, SWT
.DEFAULT
);
287 parent1
.addChild(child
);
288 parent2
.addChild(child
);
289 assertEquals(null, parent1
.getParent());
290 assertEquals(Arrays
.asList(), parent1
.getChildren());
291 assertEquals(null, parent2
.getParent());
292 assertEquals(Arrays
.asList(child
), parent2
.getChildren());
293 assertEquals(parent2
, child
.getParent());
294 assertEquals(Arrays
.asList(), child
.getChildren());
298 * Test method removeChild.
301 public void testRemoveChild() {
302 TimeGraphEntry parent
= new TimeGraphEntry("parent", SWT
.DEFAULT
, SWT
.DEFAULT
);
303 TimeGraphEntry child
= new TimeGraphEntry("child", SWT
.DEFAULT
, SWT
.DEFAULT
);
304 parent
.addChild(child
);
305 parent
.removeChild(child
);
306 assertEquals(null, parent
.getParent());
307 assertEquals(Arrays
.asList(), parent
.getChildren());
308 assertEquals(null, child
.getParent());
309 assertEquals(Arrays
.asList(), child
.getChildren());
313 * Test method removeChild with child that has no parent.
316 public void testRemoveChildNoParent() {
317 TimeGraphEntry parent
= new TimeGraphEntry("parent", SWT
.DEFAULT
, SWT
.DEFAULT
);
318 TimeGraphEntry child
= new TimeGraphEntry("child", SWT
.DEFAULT
, SWT
.DEFAULT
);
319 parent
.removeChild(child
);
320 assertEquals(null, parent
.getParent());
321 assertEquals(Arrays
.asList(), parent
.getChildren());
322 assertEquals(null, child
.getParent());
323 assertEquals(Arrays
.asList(), child
.getChildren());
327 * Test method removeChild with child that has an other parent.
330 public void testRemoveChildOtherParent() {
331 TimeGraphEntry parent1
= new TimeGraphEntry("parent1", SWT
.DEFAULT
, SWT
.DEFAULT
);
332 TimeGraphEntry parent2
= new TimeGraphEntry("parent2", SWT
.DEFAULT
, SWT
.DEFAULT
);
333 TimeGraphEntry child
= new TimeGraphEntry("child", SWT
.DEFAULT
, SWT
.DEFAULT
);
334 parent1
.addChild(child
);
335 parent2
.removeChild(child
);
336 assertEquals(null, parent1
.getParent());
337 assertEquals(Arrays
.asList(child
), parent1
.getChildren());
338 assertEquals(null, parent2
.getParent());
339 assertEquals(Arrays
.asList(), parent2
.getChildren());
340 assertEquals(parent1
, child
.getParent());
341 assertEquals(Arrays
.asList(), child
.getChildren());
345 * Test method sortChildren.
348 public void testSortChildren() {
349 TimeGraphEntry parent
= new TimeGraphEntry("parent", SWT
.DEFAULT
, SWT
.DEFAULT
);
350 TimeGraphEntry child1
= new TimeGraphEntry("child1", 2, 2);
351 TimeGraphEntry child2
= new TimeGraphEntry("child2", 1, 1);
352 parent
.addChild(child1
);
353 parent
.addChild(child2
);
354 parent
.sortChildren(Comparator
.comparingLong(entry
-> entry
.getStartTime()));
355 assertEquals(null, parent
.getParent());
356 assertEquals(Arrays
.asList(child2
, child1
), parent
.getChildren());
357 assertEquals(parent
, child1
.getParent());
358 assertEquals(Arrays
.asList(), child1
.getChildren());
359 assertEquals(parent
, child2
.getParent());
360 assertEquals(Arrays
.asList(), child2
.getChildren());
364 * Test method sortChildren followed by addChild.
367 public void testSortChildrenThenAdd() {
368 TimeGraphEntry parent
= new TimeGraphEntry("parent", SWT
.DEFAULT
, SWT
.DEFAULT
);
369 TimeGraphEntry child1
= new TimeGraphEntry("child1", 2, 2);
370 TimeGraphEntry child2
= new TimeGraphEntry("child2", 1, 1);
371 parent
.sortChildren(Comparator
.comparingLong(entry
-> entry
.getStartTime()));
372 parent
.addChild(child1
);
373 parent
.addChild(child2
);
374 assertEquals(null, parent
.getParent());
375 assertEquals(Arrays
.asList(child2
, child1
), parent
.getChildren());
376 assertEquals(parent
, child1
.getParent());
377 assertEquals(Arrays
.asList(), child1
.getChildren());
378 assertEquals(parent
, child2
.getParent());
379 assertEquals(Arrays
.asList(), child2
.getChildren());
382 private static void assertIteratorsEqual(Iterator
<ITimeEvent
> expected
, Iterator
<ITimeEvent
> actual
) {
384 while (expected
.hasNext()) {
385 assertTrue("missing event at position " + i
, actual
.hasNext());
386 ITimeEvent e1
= expected
.next();
387 ITimeEvent e2
= actual
.next();
388 assertEquals("not equal events at position " + i
, e1
, e2
);
391 assertFalse("extra event at position " + i
, actual
.hasNext());
This page took 0.040577 seconds and 5 git commands to generate.