Commit | Line | Data |
---|---|---|
866e5b51 FC |
1 | package org.eclipse.linuxtools.ctf.core.tests.trace; |
2 | ||
ce2388e0 | 3 | import static org.junit.Assert.assertEquals; |
866e5b51 FC |
4 | import static org.junit.Assert.assertFalse; |
5 | import static org.junit.Assert.assertNotNull; | |
6 | import static org.junit.Assert.assertTrue; | |
7 | ||
8 | import org.eclipse.linuxtools.ctf.core.event.EventDefinition; | |
9 | import org.eclipse.linuxtools.ctf.core.tests.TestParams; | |
10 | import org.eclipse.linuxtools.ctf.core.trace.CTFReaderException; | |
11 | import org.eclipse.linuxtools.ctf.core.trace.CTFTrace; | |
12 | import org.eclipse.linuxtools.ctf.core.trace.CTFTraceReader; | |
13 | import org.junit.After; | |
14 | import org.junit.Before; | |
15 | import org.junit.Test; | |
16 | ||
17 | /** | |
18 | * The class <code>CTFTraceReaderTest</code> contains tests for the class | |
19 | * <code>{@link CTFTraceReader}</code>. | |
20 | * | |
21 | * @author ematkho | |
22 | * @version $Revision: 1.0 $ | |
23 | */ | |
24 | public class CTFTraceReaderTest { | |
25 | ||
26 | CTFTraceReader fixture; | |
27 | ||
28 | /** | |
29 | * Launch the test. | |
30 | * | |
31 | * @param args | |
32 | * the command line arguments | |
33 | */ | |
34 | public static void main(String[] args) { | |
35 | new org.junit.runner.JUnitCore().run(CTFTraceReaderTest.class); | |
36 | } | |
37 | ||
38 | /** | |
39 | * Perform pre-test initialization. | |
bfe038ff | 40 | * |
ce2388e0 | 41 | * @throws CTFReaderException |
866e5b51 FC |
42 | */ |
43 | @Before | |
13be1a8f | 44 | public void setUp() throws CTFReaderException { |
866e5b51 FC |
45 | fixture = new CTFTraceReader(TestParams.createTrace()); |
46 | } | |
47 | ||
48 | /** | |
49 | * Perform post-test clean-up. | |
50 | */ | |
51 | @After | |
52 | public void tearDown() { | |
53 | // Add additional tear down code here | |
54 | } | |
55 | ||
56 | /** | |
57 | * Run the CTFTraceReader(CTFTrace) constructor test. Open a known good | |
58 | * trace. | |
bfe038ff | 59 | * |
ce2388e0 | 60 | * @throws CTFReaderException |
866e5b51 FC |
61 | */ |
62 | @Test | |
13be1a8f | 63 | public void testOpen_existing() throws CTFReaderException { |
866e5b51 FC |
64 | CTFTrace trace = TestParams.createTrace(); |
65 | ||
66 | CTFTraceReader result = new CTFTraceReader(trace); | |
67 | assertNotNull(result); | |
68 | } | |
69 | ||
70 | /** | |
71 | * Run the CTFTraceReader(CTFTrace) constructor test. Open a non-existing | |
72 | * trace, expect the exception. | |
73 | * | |
74 | * @throws CTFReaderException | |
75 | */ | |
76 | @Test(expected = org.eclipse.linuxtools.ctf.core.trace.CTFReaderException.class) | |
77 | public void testOpen_nonexisting() throws CTFReaderException { | |
78 | CTFTrace trace = new CTFTrace("badfile.bad"); //$NON-NLS-1$ | |
79 | ||
80 | CTFTraceReader result = new CTFTraceReader(trace); | |
81 | assertNotNull(result); | |
82 | } | |
83 | ||
84 | /** | |
85 | * Run the CTFTraceReader(CTFTrace) constructor test. Try to pen an invalid | |
86 | * path, expect exception. | |
87 | * | |
88 | * @throws CTFReaderException | |
89 | */ | |
90 | @Test(expected = org.eclipse.linuxtools.ctf.core.trace.CTFReaderException.class) | |
91 | public void testOpen_invalid() throws CTFReaderException { | |
92 | CTFTrace trace = new CTFTrace(""); //$NON-NLS-1$ | |
93 | ||
94 | CTFTraceReader result = new CTFTraceReader(trace); | |
95 | assertNotNull(result); | |
96 | } | |
97 | ||
98 | /** | |
99 | * Run the boolean advance() method test. Test advancing normally. | |
100 | */ | |
101 | @Test | |
102 | public void testAdvance_normal() { | |
103 | boolean result = fixture.advance(); | |
104 | assertTrue(result); | |
105 | } | |
106 | ||
107 | /** | |
108 | * Run the boolean advance() method test. Test advancing when we're at the | |
109 | * end, so we expect that there is no more events. | |
866e5b51 FC |
110 | */ |
111 | @Test | |
bfe038ff MK |
112 | public void testAdvance_end() { |
113 | int i = 0; | |
114 | boolean result = fixture.advance(); | |
115 | while (result) { | |
116 | result = fixture.advance(); | |
117 | i++; | |
118 | } | |
119 | fixture.seek(0); | |
120 | fixture.advance(); | |
866e5b51 | 121 | fixture.goToLastEvent(); |
bfe038ff MK |
122 | i = 1; |
123 | result = fixture.advance(); | |
124 | while (result) { | |
125 | result = fixture.advance(); | |
126 | i++; | |
866e5b51 | 127 | } |
866e5b51 | 128 | assertFalse(result); |
bfe038ff | 129 | assertEquals(i, 1); |
866e5b51 FC |
130 | } |
131 | ||
132 | /** | |
133 | * Run the CTFTraceReader copy constructor test. | |
134 | */ | |
135 | @Test | |
136 | public void testCopyFrom() { | |
137 | CTFTraceReader result = fixture.copyFrom(); | |
138 | assertNotNull(result); | |
139 | } | |
140 | ||
141 | /** | |
142 | * Test the hashCode method. | |
143 | */ | |
144 | @Test | |
145 | public void testHash() { | |
146 | int result = fixture.hashCode(); | |
147 | assertTrue(0 != result); | |
148 | } | |
149 | ||
150 | /** | |
151 | * Test the equals method. Uses the class-wide 'fixture' and another | |
152 | * method-local 'fixture2', which both point to the same trace. | |
153 | * | |
154 | * Both trace reader are different objects, so they shouldn't "equals" each | |
155 | * other. | |
bfe038ff | 156 | * |
ce2388e0 | 157 | * @throws CTFReaderException |
866e5b51 FC |
158 | */ |
159 | @Test | |
13be1a8f | 160 | public void testEquals() throws CTFReaderException { |
866e5b51 | 161 | CTFTraceReader fixture2 = new CTFTraceReader(TestParams.createTrace()); |
bfe038ff | 162 | assertEquals(fixture, fixture2); |
866e5b51 FC |
163 | } |
164 | ||
165 | /** | |
166 | * Run the getCurrentEventDef() method test. Get the first event's | |
167 | * definition. | |
168 | */ | |
169 | @Test | |
170 | public void testGetCurrentEventDef_first() { | |
171 | EventDefinition result = fixture.getCurrentEventDef(); | |
172 | assertNotNull(result); | |
173 | } | |
174 | ||
175 | /** | |
176 | * Run the getCurrentEventDef() method test. Get the last event's | |
177 | * definition. | |
866e5b51 FC |
178 | */ |
179 | @Test | |
bfe038ff | 180 | public void testGetCurrentEventDef_last() { |
866e5b51 FC |
181 | fixture.goToLastEvent(); |
182 | EventDefinition result = fixture.getCurrentEventDef(); | |
183 | assertNotNull(result); | |
184 | } | |
185 | ||
186 | /** | |
187 | * Run the long getEndTime() method test. | |
188 | */ | |
189 | @Test | |
190 | public void testGetEndTime() { | |
191 | long result = fixture.getEndTime(); | |
192 | assertTrue(0L < result); | |
193 | } | |
194 | ||
195 | /** | |
196 | * Run the long getStartTime() method test. | |
197 | */ | |
198 | @Test | |
199 | public void testGetStartTime() { | |
200 | long result = fixture.getStartTime(); | |
201 | assertTrue(0L < result); | |
202 | } | |
203 | ||
204 | /** | |
205 | * Run the void goToLastEvent() method test. | |
206 | * | |
207 | * @throws CTFReaderException | |
208 | */ | |
209 | @Test | |
210 | public void testGoToLastEvent() throws CTFReaderException { | |
211 | fixture.goToLastEvent(); | |
ce2388e0 | 212 | long ts1 = getTimestamp(); |
866e5b51 | 213 | long ts2 = fixture.getEndTime(); |
bfe038ff | 214 | assertEquals(ts1, ts2); |
866e5b51 FC |
215 | } |
216 | ||
217 | /** | |
218 | * Run the boolean hasMoreEvents() method test. | |
219 | * | |
220 | * @throws CTFReaderException | |
221 | */ | |
222 | @Test | |
223 | public void testHasMoreEvents() { | |
224 | boolean result = fixture.hasMoreEvents(); | |
225 | assertTrue(result); | |
226 | } | |
227 | ||
228 | /** | |
229 | * Run the void printStats() method test with no 'width' parameter. | |
230 | */ | |
231 | @Test | |
232 | public void testPrintStats_noparam() { | |
233 | fixture.advance(); | |
234 | fixture.printStats(); | |
235 | } | |
236 | ||
237 | /** | |
238 | * Run the void printStats(int) method test with width = 0. | |
239 | */ | |
240 | @Test | |
241 | public void testPrintStats_width0() { | |
242 | fixture.advance(); | |
243 | fixture.printStats(0); | |
244 | } | |
245 | ||
246 | /** | |
247 | * Run the void printStats(int) method test with width = 1. | |
248 | */ | |
249 | @Test | |
250 | public void testPrintStats_width1() { | |
251 | fixture.advance(); | |
252 | fixture.printStats(1); | |
253 | } | |
254 | ||
255 | /** | |
256 | * Run the void printStats(int) method test with width = 2. | |
257 | */ | |
258 | @Test | |
259 | public void testPrintStats_width2() { | |
260 | fixture.advance(); | |
261 | fixture.printStats(2); | |
262 | } | |
263 | ||
264 | /** | |
265 | * Run the void printStats(int) method test with width = 10. | |
266 | */ | |
267 | @Test | |
268 | public void testPrintStats_width10() { | |
269 | fixture.advance(); | |
270 | fixture.printStats(10); | |
271 | } | |
272 | ||
273 | /** | |
274 | * Run the void printStats(int) method test with width = 100. | |
275 | */ | |
276 | @Test | |
277 | public void testPrintStats_100() { | |
278 | for (int i = 0; i < 1000; i++) { | |
279 | fixture.advance(); | |
280 | } | |
281 | fixture.printStats(100); | |
282 | } | |
283 | ||
284 | /** | |
285 | * Run the boolean seek(long) method test. | |
286 | */ | |
287 | @Test | |
288 | public void testSeek() { | |
289 | long timestamp = 1L; | |
290 | boolean result = fixture.seek(timestamp); | |
291 | assertTrue(result); | |
292 | } | |
ce2388e0 FC |
293 | |
294 | ||
ce2388e0 FC |
295 | |
296 | /** | |
297 | * @return | |
298 | */ | |
299 | private long getTimestamp() { | |
bfe038ff MK |
300 | if (fixture.getCurrentEventDef() != null) { |
301 | return fixture.getCurrentEventDef().getTimestamp()+ this.fixture.getTrace().getOffset(); | |
302 | } | |
303 | return -1; | |
ce2388e0 | 304 | } |
866e5b51 | 305 | } |