ctf.core: Support traces with empty packets before the end
[deliverable/tracecompass.git] / ctf / org.eclipse.tracecompass.ctf.core.tests / src / org / eclipse / tracecompass / ctf / core / tests / trace / CTFStreamInputPacketIndexTest.java
1 /*******************************************************************************
2 * Copyright (c) 2013, 2014 Ericsson
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * Matthew Khouzam - Initial API and implementation
10 *******************************************************************************/
11
12 package org.eclipse.tracecompass.ctf.core.tests.trace;
13
14 import static org.junit.Assert.assertEquals;
15 import static org.junit.Assert.assertFalse;
16 import static org.junit.Assert.assertNotNull;
17 import static org.junit.Assert.assertTrue;
18
19 import org.eclipse.tracecompass.ctf.core.CTFException;
20 import org.eclipse.tracecompass.ctf.core.trace.ICTFPacketDescriptor;
21 import org.eclipse.tracecompass.internal.ctf.core.trace.StreamInputPacketIndex;
22 import org.eclipse.tracecompass.internal.ctf.core.trace.StreamInputPacketIndexEntry;
23 import org.junit.Before;
24 import org.junit.Test;
25
26 /**
27 * The class <code>StreamInputPacketIndexTest</code> contains tests for the
28 * class <code>{@link StreamInputPacketIndex}</code>.
29 *
30 * @author Matthew Khouzam
31 */
32 @SuppressWarnings("javadoc")
33 public class CTFStreamInputPacketIndexTest {
34
35 private StreamInputPacketIndex fFixture;
36
37 /**
38 * Perform pre-test initialization.
39 *
40 * @throws CTFException
41 */
42 @Before
43 public void setUp() {
44 fFixture = new StreamInputPacketIndex();
45 }
46
47 @Test
48 public void testStreamInputPacketIndex() {
49 assertNotNull(fFixture);
50 assertTrue(fFixture.append(new StreamInputPacketIndexEntry(0, 1L)));
51 assertTrue(fFixture.append(new PacketStub(1, 0, 0)));
52 }
53
54 /**
55 * Run the StreamInputPacketIndex() constructor test.
56 */
57 @Test
58 public void testStreamInputPacketIndexGet() {
59 assertNotNull(fFixture);
60 ICTFPacketDescriptor first = new StreamInputPacketIndexEntry(0, 1L);
61 ICTFPacketDescriptor second = new PacketStub(1, 0, 0);
62 assertTrue(fFixture.append(first));
63 assertTrue(fFixture.append(second));
64
65 assertEquals(first, fFixture.getElement(0));
66 assertEquals(second, fFixture.getElement(1));
67 }
68
69 /**
70 * Test on a contiguous set
71 */
72 @Test
73 public void testStreamInputPacketIndexContiguous() {
74 assertTrue(fFixture.append(new PacketStub(0, 0, 1)));
75 assertTrue(fFixture.append(new PacketStub(1, 2, 3)));
76 assertTrue(fFixture.append(new PacketStub(2, 4, 5)));
77 assertTrue(fFixture.append(new PacketStub(3, 6, 6)));
78
79 assertEquals(2, fFixture.search(5));
80 }
81
82 @Test
83 public void testStreamInputPacketIndexDisjoint() {
84 assertTrue(fFixture.append(new PacketStub(0, 0, 1)));
85 assertTrue(fFixture.append(new PacketStub(1, 2, 3)));
86 assertTrue(fFixture.append(new PacketStub(2, 6, 6)));
87
88 assertEquals(1, fFixture.search(5));
89 assertEquals(1, fFixture.search(3));
90 }
91
92 @Test
93 public void testStreamInputPacketIndexOverlapping() {
94 assertTrue(fFixture.append(new PacketStub(0, 0, 1)));
95 assertTrue(fFixture.append(new PacketStub(1, 2, 3)));
96 assertTrue(fFixture.append(new PacketStub(2, 6, 6)));
97 assertTrue(fFixture.append(new PacketStub(3, 6, 6)));
98 assertTrue(fFixture.append(new PacketStub(4, 6, 6)));
99 assertTrue(fFixture.append(new PacketStub(5, 6, 6)));
100 assertTrue(fFixture.append(new PacketStub(6, 6, 6)));
101 assertTrue(fFixture.append(new PacketStub(7, 6, 6)));
102 assertTrue(fFixture.append(new PacketStub(8, 6, 6)));
103 assertTrue(fFixture.append(new PacketStub(9, 6, 6)));
104
105 assertEquals(1, fFixture.search(5));
106 assertEquals(2, fFixture.search(6));
107 }
108
109 @Test
110 public void testStreamInputPacketIndexOverlappingBothSides() {
111 assertTrue(fFixture.append(new PacketStub(0, 0, 3)));
112 assertTrue(fFixture.append(new PacketStub(1, 0, 3)));
113 assertTrue(fFixture.append(new PacketStub(2, 0, 3)));
114 assertTrue(fFixture.append(new PacketStub(3, 7, 9)));
115 assertTrue(fFixture.append(new PacketStub(4, 7, 9)));
116 assertTrue(fFixture.append(new PacketStub(5, 7, 9)));
117 assertEquals(0, fFixture.search(3));
118 assertEquals(2, fFixture.search(6));
119 assertEquals(3, fFixture.search(8));
120 }
121
122 @Test
123 public void testStreamInputPacketIndexLargeOverlapping() {
124 assertTrue(fFixture.append(new PacketStub(0, Long.MIN_VALUE, Long.MAX_VALUE)));
125 assertTrue(fFixture.append(new PacketStub(1, Long.MIN_VALUE, Long.MAX_VALUE)));
126 assertTrue(fFixture.append(new PacketStub(2, Long.MIN_VALUE, Long.MAX_VALUE)));
127 assertTrue(fFixture.append(new PacketStub(3, Long.MIN_VALUE, Long.MAX_VALUE)));
128 assertTrue(fFixture.append(new PacketStub(4, Long.MIN_VALUE, Long.MAX_VALUE)));
129
130 assertEquals(0, fFixture.search(5));
131 assertEquals(0, fFixture.search(6));
132 }
133
134 @Test
135 public void testStreamInputPacketIndexInvalidAppend() {
136 fFixture = new StreamInputPacketIndex();
137 assertTrue(fFixture.append(new PacketStub(0, 0, 1)));
138 assertFalse("Same offset", fFixture.append(new PacketStub(0, 1, 2)));
139 assertFalse("Before", fFixture.append(new PacketStub(1, -1, 0)));
140 assertFalse("Empty", fFixture.append(new PacketStub(2, 3, 4) {
141 @Override
142 public long getContentSizeBits() {
143 return 0;
144 }
145
146 @Override
147 public long getPayloadStartBits() {
148 return 0;
149 }
150 }));
151 }
152
153 }
This page took 0.033054 seconds and 5 git commands to generate.