Commit | Line | Data |
---|---|---|
741f4099 MK |
1 | /******************************************************************************* |
2 | * Copyright (c) 2014 Ericsson | |
3 | * | |
4 | * All rights reserved. This program and the accompanying materials are made | |
5 | * 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 | * Matthew Khouzam - Initial implementation | |
11 | *******************************************************************************/ | |
12 | ||
2bdf0193 | 13 | package org.eclipse.tracecompass.tmf.core.tests.synchronization; |
741f4099 MK |
14 | |
15 | import static org.junit.Assert.assertEquals; | |
16 | ||
17 | import java.math.BigDecimal; | |
18 | ||
2bdf0193 AM |
19 | import org.eclipse.tracecompass.internal.tmf.core.synchronization.TmfConstantTransform; |
20 | import org.eclipse.tracecompass.tmf.core.synchronization.ITmfTimestampTransform; | |
21 | import org.eclipse.tracecompass.tmf.core.synchronization.TimestampTransformFactory; | |
22 | import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp; | |
23 | import org.eclipse.tracecompass.tmf.core.timestamp.TmfNanoTimestamp; | |
24 | import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp; | |
741f4099 MK |
25 | import org.junit.Test; |
26 | ||
27 | /** | |
28 | * Timestamp transform tests | |
29 | * | |
30 | * @author Matthew Khouzam | |
31 | * | |
32 | */ | |
33 | public class TsTransformFactoryTest { | |
34 | private final ITmfTimestamp t0 = new TmfTimestamp(0); | |
35 | private final ITmfTimestamp t100 = new TmfTimestamp(100); | |
36 | private final ITmfTimestamp t1e2 = new TmfTimestamp(1, 2); | |
37 | private final ITmfTimestamp t1e3 = new TmfTimestamp(1, 3); | |
38 | private final ITmfTimestamp tn0 = new TmfNanoTimestamp(0); | |
39 | private final ITmfTimestamp tn100 = new TmfNanoTimestamp(100); | |
40 | private final ITmfTimestamp tn1 = new TmfNanoTimestamp(1); | |
9ffcda7d GB |
41 | private final ITmfTimestampTransform identity1 = TimestampTransformFactory.createLinear(1.0, new TmfNanoTimestamp(0)); |
42 | private final ITmfTimestampTransform offset1 = TimestampTransformFactory.createWithOffset(100); | |
43 | private final ITmfTimestampTransform offset2 = TimestampTransformFactory.createLinear(BigDecimal.ONE, new BigDecimal(100)); | |
44 | private final ITmfTimestampTransform offset3 = TimestampTransformFactory.createLinear(1.0, 100); | |
45 | private final ITmfTimestampTransform offset4 = TimestampTransformFactory.createLinear(1.0, new TmfNanoTimestamp(100)); | |
741f4099 MK |
46 | |
47 | /** | |
48 | * Test with identity | |
49 | */ | |
50 | @Test | |
51 | public void transformIdenity() { | |
9ffcda7d | 52 | final ITmfTimestampTransform identity = TimestampTransformFactory.createWithOffset(0); |
741f4099 MK |
53 | final ITmfTimestampTransform innefficientIdentity = new TmfConstantTransform(); |
54 | final ITmfTimestampTransform compositeInnefficientIdentity = identity.composeWith(innefficientIdentity); | |
55 | final ITmfTimestampTransform compositeInnefficientIdentity2 = innefficientIdentity.composeWith(innefficientIdentity); | |
56 | final ITmfTimestampTransform compositeInnefficientIdentity3 = innefficientIdentity.composeWith(identity); | |
57 | assertEquals(t0, identity.transform(t0)); | |
58 | assertEquals(tn0, identity.transform(tn0)); | |
59 | assertEquals(t100, identity.transform(t100)); | |
60 | assertEquals(t1e2, identity.transform(t100)); | |
61 | assertEquals(t1e2, identity.transform(t1e2)); | |
62 | assertEquals(t1e3, identity.transform(t1e3)); | |
63 | assertEquals(tn100, identity.transform(tn100)); | |
64 | assertEquals(t0, innefficientIdentity.transform(t0)); // bad practice | |
65 | assertEquals(t0, compositeInnefficientIdentity.transform(t0)); // bad | |
66 | // practice | |
67 | assertEquals(t0, compositeInnefficientIdentity2.transform(t0)); // bad | |
68 | // practice | |
69 | assertEquals(t0, compositeInnefficientIdentity3.transform(t0)); // bad | |
70 | // practice | |
71 | } | |
72 | ||
73 | /** | |
74 | * Test with an offset of 100 | |
75 | */ | |
76 | @Test | |
77 | public void transformOffset() { | |
78 | final ITmfTimestampTransform offset = offset1; | |
9ffcda7d | 79 | final ITmfTimestampTransform compositeTransform = offset.composeWith(TimestampTransformFactory.createWithOffset(new TmfNanoTimestamp(-100))); |
741f4099 MK |
80 | assertEquals(tn100, offset.transform(t0)); |
81 | assertEquals(tn100, offset.transform(tn0)); | |
82 | assertEquals(tn0, compositeTransform.transform(tn0)); | |
83 | assertEquals(t0, compositeTransform.transform(t0)); | |
84 | assertEquals(200, offset1.transform(100)); | |
85 | assertEquals(200, offset2.transform(100)); | |
86 | assertEquals(200, offset3.transform(100)); | |
87 | assertEquals(200, offset4.transform(100)); | |
88 | } | |
89 | ||
90 | /** | |
91 | * Test with a slope | |
92 | */ | |
93 | @Test | |
94 | public void transformSlope() { | |
9ffcda7d GB |
95 | final ITmfTimestampTransform slope = TimestampTransformFactory.createLinear(10, 0); |
96 | final ITmfTimestampTransform slope1 = TimestampTransformFactory.createLinear(10.0, new TmfNanoTimestamp(0)); | |
741f4099 MK |
97 | assertEquals(t1e3, slope.transform(t1e2)); |
98 | assertEquals(tn100, slope.transform(new TmfNanoTimestamp(10))); | |
99 | assertEquals(tn100, slope.transform(slope.transform(tn1))); | |
100 | assertEquals(tn100, slope.composeWith(slope).transform(tn1)); | |
101 | assertEquals(tn100, slope1.transform(new TmfNanoTimestamp(10))); | |
102 | } | |
103 | ||
104 | /** | |
105 | * Test toStrings | |
106 | */ | |
107 | @Test | |
108 | public void testToString() { | |
5745c0a3 FG |
109 | final String expectedLinear = "TmfTimestampTransformLinearFast [ slope = 314.0, offset = 0.0 ]"; |
110 | final String expectedLinearBigDec = "TmfTimestampTransformLinearFast [ slope = 314, offset = 0 ]"; | |
741f4099 MK |
111 | final String expectedOffset = "TmfConstantTransform [ offset = 314 ]"; |
112 | final String expectedIdentity = "TmfTimestampTransform [ IDENTITY ]"; | |
113 | final String expectedOffset100 = "TmfConstantTransform [ offset = 100 ]"; | |
9ffcda7d GB |
114 | assertEquals(expectedLinear, TimestampTransformFactory.createLinear(314, 0).toString()); |
115 | assertEquals(expectedLinearBigDec, TimestampTransformFactory.createLinear(BigDecimal.valueOf(314), BigDecimal.ZERO).toString()); | |
116 | assertEquals(expectedOffset, TimestampTransformFactory.createLinear(1, 314).toString()); | |
117 | assertEquals(expectedOffset, TimestampTransformFactory.createWithOffset(314).toString()); | |
118 | assertEquals(expectedOffset, TimestampTransformFactory.createWithOffset(14).composeWith(TimestampTransformFactory.createWithOffset(300)).toString()); | |
119 | assertEquals(expectedIdentity, TimestampTransformFactory.createWithOffset(314).composeWith(TimestampTransformFactory.createWithOffset(-314)).toString()); | |
120 | assertEquals(expectedIdentity, TimestampTransformFactory.createWithOffset(0).toString()); | |
741f4099 MK |
121 | assertEquals(expectedIdentity, identity1.toString()); |
122 | assertEquals(expectedOffset100, offset1.toString()); | |
123 | assertEquals(expectedOffset100, offset2.toString()); | |
124 | assertEquals(expectedOffset100, offset3.toString()); | |
125 | assertEquals(expectedOffset100, offset4.toString()); | |
126 | } | |
127 | } |