Commit | Line | Data |
---|---|---|
7656d70a | 1 | /******************************************************************************* |
6e1886bc | 2 | * Copyright (c) 2012, 2013 Ericsson |
54a7a54c | 3 | * |
7656d70a 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 | |
54a7a54c | 8 | * |
7656d70a FC |
9 | * Contributors: |
10 | * Francois Chouinard - Initial API and implementation | |
6e1886bc | 11 | * Alexandre Montplaisir - Port to JUnit4 |
7656d70a FC |
12 | *******************************************************************************/ |
13 | ||
14 | package org.eclipse.linuxtools.tmf.core.tests.event; | |
15 | ||
6e1886bc AM |
16 | import static org.junit.Assert.assertEquals; |
17 | import static org.junit.Assert.assertFalse; | |
18 | import static org.junit.Assert.assertTrue; | |
19 | import static org.junit.Assert.fail; | |
20 | ||
0b47ff0e MK |
21 | import java.text.DateFormat; |
22 | import java.text.SimpleDateFormat; | |
23 | import java.util.Date; | |
24 | ||
3bd46eef AM |
25 | import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp; |
26 | import org.eclipse.linuxtools.tmf.core.timestamp.TmfSimpleTimestamp; | |
27 | import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimestamp; | |
6e1886bc | 28 | import org.junit.Test; |
7656d70a FC |
29 | |
30 | /** | |
7656d70a FC |
31 | * Test suite for the TmfSimpleTimestampTest class. |
32 | */ | |
6e1886bc AM |
33 | @SuppressWarnings({"nls", "javadoc"}) |
34 | public class TmfSimpleTimestampTest { | |
7656d70a | 35 | |
085d898f FC |
36 | // ------------------------------------------------------------------------ |
37 | // Variables | |
38 | // ------------------------------------------------------------------------ | |
7656d70a | 39 | |
085d898f FC |
40 | private final ITmfTimestamp ts0 = new TmfSimpleTimestamp(); |
41 | private final ITmfTimestamp ts1 = new TmfSimpleTimestamp(12345); | |
7656d70a FC |
42 | private final ITmfTimestamp ts2 = new TmfSimpleTimestamp(-1234); |
43 | ||
085d898f FC |
44 | // ------------------------------------------------------------------------ |
45 | // Constructors | |
46 | // ------------------------------------------------------------------------ | |
7656d70a | 47 | |
6e1886bc | 48 | @Test |
54a7a54c | 49 | public void testDefaultConstructor() { |
7656d70a FC |
50 | assertEquals("getValue", 0, ts0.getValue()); |
51 | assertEquals("getscale", 0, ts0.getScale()); | |
52 | assertEquals("getPrecision", 0, ts0.getPrecision()); | |
53 | } | |
54 | ||
6e1886bc | 55 | @Test |
54a7a54c | 56 | public void testFullConstructor() { |
7656d70a FC |
57 | assertEquals("getValue", 12345, ts1.getValue()); |
58 | assertEquals("getscale", 0, ts1.getScale()); | |
59 | assertEquals("getPrecision", 0, ts1.getPrecision()); | |
60 | } | |
61 | ||
6e1886bc | 62 | @Test |
54a7a54c | 63 | public void testCopyConstructor() { |
085d898f | 64 | final ITmfTimestamp copy = new TmfSimpleTimestamp(ts1); |
7656d70a FC |
65 | |
66 | assertEquals("getValue", ts1.getValue(), copy.getValue()); | |
67 | assertEquals("getscale", ts1.getScale(), copy.getScale()); | |
68 | assertEquals("getPrecision", ts1.getPrecision(), copy.getPrecision()); | |
69 | ||
70 | assertEquals("getValue", 12345, copy.getValue()); | |
71 | assertEquals("getscale", 0, copy.getScale()); | |
72 | assertEquals("getPrecision", 0, copy.getPrecision()); | |
73 | } | |
74 | ||
6e1886bc | 75 | @Test |
54a7a54c | 76 | public void testCopyBadTimestamp() { |
7656d70a | 77 | try { |
6e85c58d | 78 | new TmfSimpleTimestamp(null); |
75d42a16 | 79 | fail("TmfSimpleTimestamp: null argument"); |
4593bd5b | 80 | } catch (final NullPointerException e) { |
9ee9135e | 81 | } |
9ee9135e FC |
82 | } |
83 | ||
7656d70a FC |
84 | // ------------------------------------------------------------------------ |
85 | // equals | |
86 | // ------------------------------------------------------------------------ | |
87 | ||
6e1886bc | 88 | @Test |
54a7a54c | 89 | public void testEqualsReflexivity() { |
7656d70a FC |
90 | assertTrue("equals", ts0.equals(ts0)); |
91 | assertTrue("equals", ts1.equals(ts1)); | |
92 | assertTrue("equals", ts2.equals(ts2)); | |
93 | ||
94 | assertTrue("equals", !ts0.equals(ts1)); | |
95 | assertTrue("equals", !ts0.equals(ts2)); | |
96 | ||
97 | assertTrue("equals", !ts1.equals(ts0)); | |
98 | assertTrue("equals", !ts1.equals(ts2)); | |
99 | ||
100 | assertTrue("equals", !ts2.equals(ts0)); | |
101 | assertTrue("equals", !ts2.equals(ts1)); | |
102 | } | |
103 | ||
6e1886bc | 104 | @Test |
54a7a54c | 105 | public void testEqualsSymmetry() { |
085d898f | 106 | final ITmfTimestamp ts0copy = new TmfSimpleTimestamp(ts0); |
7656d70a FC |
107 | assertTrue("equals", ts0.equals(ts0copy)); |
108 | assertTrue("equals", ts0copy.equals(ts0)); | |
109 | ||
085d898f | 110 | final ITmfTimestamp ts1copy = new TmfSimpleTimestamp(ts1); |
7656d70a FC |
111 | assertTrue("equals", ts1.equals(ts1copy)); |
112 | assertTrue("equals", ts1copy.equals(ts1)); | |
113 | } | |
114 | ||
6e1886bc | 115 | @Test |
54a7a54c | 116 | public void testEqualsTransivity() { |
085d898f FC |
117 | final ITmfTimestamp ts0copy1 = new TmfSimpleTimestamp(ts0); |
118 | final ITmfTimestamp ts0copy2 = new TmfSimpleTimestamp(ts0copy1); | |
7656d70a FC |
119 | assertTrue("equals", ts0.equals(ts0copy1)); |
120 | assertTrue("equals", ts0copy1.equals(ts0copy2)); | |
121 | assertTrue("equals", ts0.equals(ts0copy2)); | |
122 | ||
085d898f FC |
123 | final ITmfTimestamp ts1copy1 = new TmfSimpleTimestamp(ts1); |
124 | final ITmfTimestamp ts1copy2 = new TmfSimpleTimestamp(ts1copy1); | |
7656d70a FC |
125 | assertTrue("equals", ts1.equals(ts1copy1)); |
126 | assertTrue("equals", ts1copy1.equals(ts1copy2)); | |
127 | assertTrue("equals", ts1.equals(ts1copy2)); | |
128 | } | |
129 | ||
6e1886bc | 130 | @Test |
54a7a54c | 131 | public void testEqualsNull() { |
7656d70a FC |
132 | assertTrue("equals", !ts0.equals(null)); |
133 | assertTrue("equals", !ts1.equals(null)); | |
134 | assertTrue("equals", !ts2.equals(null)); | |
135 | } | |
136 | ||
6e1886bc | 137 | @Test |
54a7a54c | 138 | public void testEqualsNonTimestamp() { |
7656d70a FC |
139 | assertFalse("equals", ts0.equals(ts0.toString())); |
140 | } | |
141 | ||
7656d70a FC |
142 | // ------------------------------------------------------------------------ |
143 | // toString | |
144 | // ------------------------------------------------------------------------ | |
145 | ||
6e1886bc | 146 | @Test |
54a7a54c | 147 | public void testToString() { |
0b47ff0e MK |
148 | DateFormat df = new SimpleDateFormat("HH:mm:ss.SSS"); |
149 | Date d0 = new Date(ts0.getValue()*1000); | |
150 | Date d1 = new Date(ts1.getValue()*1000); | |
151 | Date d2 = new Date(ts2.getValue()*1000); | |
152 | assertEquals("toString", df.format(d0) + " 000 000", ts0.toString()); | |
153 | assertEquals("toString", df.format(d1) + " 000 000", ts1.toString()); | |
154 | assertEquals("toString", df.format(d2) + " 000 000", ts2.toString()); | |
7656d70a FC |
155 | } |
156 | ||
157 | // ------------------------------------------------------------------------ | |
158 | // hashCode | |
159 | // ------------------------------------------------------------------------ | |
160 | ||
6e1886bc | 161 | @Test |
54a7a54c | 162 | public void testHashCode() { |
085d898f FC |
163 | final ITmfTimestamp ts0copy = new TmfTimestamp(ts0); |
164 | final ITmfTimestamp ts1copy = new TmfTimestamp(ts1); | |
165 | final ITmfTimestamp ts2copy = new TmfTimestamp(ts2); | |
7656d70a FC |
166 | |
167 | assertTrue("hashCode", ts0.hashCode() == ts0copy.hashCode()); | |
168 | assertTrue("hashCode", ts1.hashCode() == ts1copy.hashCode()); | |
169 | assertTrue("hashCode", ts2.hashCode() == ts2copy.hashCode()); | |
170 | ||
171 | assertTrue("hashCode", ts0.hashCode() != ts1.hashCode()); | |
172 | } | |
173 | ||
174 | // ------------------------------------------------------------------------ | |
175 | // normalize | |
176 | // ------------------------------------------------------------------------ | |
177 | ||
6e1886bc | 178 | @Test |
54a7a54c | 179 | public void testNormalizeScale0() { |
7656d70a FC |
180 | ITmfTimestamp ts = ts0.normalize(0, 0); |
181 | assertEquals("getValue", 0, ts.getValue()); | |
182 | assertEquals("getscale", 0, ts.getScale()); | |
183 | assertEquals("getPrecision", 0, ts.getPrecision()); | |
184 | ||
185 | ts = ts0.normalize(12345, 0); | |
186 | assertEquals("getValue", 12345, ts.getValue()); | |
187 | assertEquals("getscale", 0, ts.getScale()); | |
188 | assertEquals("getPrecision", 0, ts.getPrecision()); | |
189 | ||
190 | ts = ts0.normalize(10, 0); | |
191 | assertEquals("getValue", 10, ts.getValue()); | |
192 | assertEquals("getscale", 0, ts.getScale()); | |
193 | assertEquals("getPrecision", 0, ts.getPrecision()); | |
194 | ||
195 | ts = ts0.normalize(-10, 0); | |
196 | assertEquals("getValue", -10, ts.getValue()); | |
197 | assertEquals("getscale", 0, ts.getScale()); | |
198 | assertEquals("getPrecision", 0, ts.getPrecision()); | |
199 | } | |
200 | ||
6e1886bc | 201 | @Test |
54a7a54c | 202 | public void testNormalizeScaleNot0() { |
7656d70a FC |
203 | ITmfTimestamp ts = ts0.normalize(0, 1); |
204 | assertEquals("getValue", 0, ts.getValue()); | |
205 | assertEquals("getscale", 1, ts.getScale()); | |
206 | assertEquals("getPrecision", 0, ts.getPrecision()); | |
207 | ||
208 | ts = ts0.normalize(12345, 1); | |
209 | assertEquals("getValue", 12345, ts.getValue()); | |
210 | assertEquals("getscale", 1, ts.getScale()); | |
211 | assertEquals("getPrecision", 0, ts.getPrecision()); | |
212 | ||
213 | ts = ts0.normalize(10, 1); | |
214 | assertEquals("getValue", 10, ts.getValue()); | |
215 | assertEquals("getscale", 1, ts.getScale()); | |
216 | assertEquals("getPrecision", 0, ts.getPrecision()); | |
217 | ||
218 | ts = ts0.normalize(-10, 1); | |
219 | assertEquals("getValue", -10, ts.getValue()); | |
220 | assertEquals("getscale", 1, ts.getScale()); | |
221 | assertEquals("getPrecision", 0, ts.getPrecision()); | |
222 | } | |
223 | ||
224 | // ------------------------------------------------------------------------ | |
225 | // compareTo | |
226 | // ------------------------------------------------------------------------ | |
227 | ||
6e1886bc | 228 | @Test |
54a7a54c FC |
229 | public void testBasicCompareTo() { |
230 | final ITmfTimestamp tstamp1 = new TmfSimpleTimestamp(900); | |
231 | final ITmfTimestamp tstamp2 = new TmfSimpleTimestamp(1000); | |
232 | final ITmfTimestamp tstamp3 = new TmfSimpleTimestamp(1100); | |
7656d70a | 233 | |
54a7a54c | 234 | assertTrue(tstamp1.compareTo(tstamp1) == 0); |
7656d70a | 235 | |
54a7a54c FC |
236 | assertTrue("CompareTo", tstamp1.compareTo(tstamp2) < 0); |
237 | assertTrue("CompareTo", tstamp1.compareTo(tstamp3) < 0); | |
7656d70a | 238 | |
54a7a54c FC |
239 | assertTrue("CompareTo", tstamp2.compareTo(tstamp1) > 0); |
240 | assertTrue("CompareTo", tstamp2.compareTo(tstamp3) < 0); | |
7656d70a | 241 | |
54a7a54c FC |
242 | assertTrue("CompareTo", tstamp3.compareTo(tstamp1) > 0); |
243 | assertTrue("CompareTo", tstamp3.compareTo(tstamp2) > 0); | |
7656d70a FC |
244 | } |
245 | ||
6e1886bc | 246 | @Test |
54a7a54c | 247 | public void testCompareTo() { |
085d898f FC |
248 | final ITmfTimestamp ts0a = new TmfTimestamp(0, 2, 0); |
249 | final ITmfTimestamp ts1a = new TmfTimestamp(123450, -1); | |
250 | final ITmfTimestamp ts2a = new TmfTimestamp(-12340, -1); | |
7656d70a FC |
251 | |
252 | assertTrue(ts1.compareTo(ts1) == 0); | |
253 | ||
254 | assertTrue("CompareTo", ts0.compareTo(ts0a) == 0); | |
255 | assertTrue("CompareTo", ts1.compareTo(ts1a) == 0); | |
256 | assertTrue("CompareTo", ts2.compareTo(ts2a) == 0); | |
257 | } | |
258 | ||
259 | // ------------------------------------------------------------------------ | |
260 | // getDelta | |
261 | // ------------------------------------------------------------------------ | |
085d898f | 262 | |
6e1886bc | 263 | @Test |
54a7a54c | 264 | public void testDelta() { |
7656d70a | 265 | // Delta for same scale and precision (delta > 0) |
54a7a54c FC |
266 | TmfTimestamp tstamp0 = new TmfSimpleTimestamp(10); |
267 | TmfTimestamp tstamp1 = new TmfSimpleTimestamp(5); | |
268 | TmfTimestamp expectd = new TmfSimpleTimestamp(5); | |
7656d70a | 269 | |
54a7a54c FC |
270 | ITmfTimestamp delta = tstamp0.getDelta(tstamp1); |
271 | assertEquals("getDelta", 0, delta.compareTo(expectd, false)); | |
7656d70a FC |
272 | |
273 | // Delta for same scale and precision (delta < 0) | |
54a7a54c FC |
274 | tstamp0 = new TmfTimestamp(5); |
275 | tstamp1 = new TmfTimestamp(10); | |
276 | expectd = new TmfTimestamp(-5); | |
7656d70a | 277 | |
54a7a54c FC |
278 | delta = tstamp0.getDelta(tstamp1); |
279 | assertEquals("getDelta", 0, delta.compareTo(expectd, false)); | |
7656d70a FC |
280 | } |
281 | ||
6e1886bc | 282 | @Test |
54a7a54c | 283 | public void testDelta2() { |
7656d70a | 284 | // Delta for different scale and same precision (delta > 0) |
54a7a54c FC |
285 | final TmfTimestamp tstamp0 = new TmfSimpleTimestamp(10); |
286 | final TmfTimestamp tstamp1 = new TmfTimestamp(1, 1); | |
287 | final TmfTimestamp expectd = new TmfTimestamp(0, 0); | |
7656d70a | 288 | |
54a7a54c FC |
289 | final ITmfTimestamp delta = tstamp0.getDelta(tstamp1); |
290 | assertEquals("getDelta", 0, delta.compareTo(expectd, false)); | |
7656d70a FC |
291 | } |
292 | ||
293 | } |