1 /*******************************************************************************
2 * Copyright (c) 2014 Ericsson
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
10 * Matthew Khouzam - Initial implementation
11 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.core
.tests
.synchronization
;
15 import static org
.junit
.Assert
.assertEquals
;
17 import java
.math
.BigDecimal
;
19 import org
.eclipse
.jdt
.annotation
.NonNullByDefault
;
20 import org
.eclipse
.tracecompass
.common
.core
.NonNullUtils
;
21 import org
.eclipse
.tracecompass
.internal
.tmf
.core
.synchronization
.TmfConstantTransform
;
22 import org
.eclipse
.tracecompass
.tmf
.core
.synchronization
.ITmfTimestampTransform
;
23 import org
.eclipse
.tracecompass
.tmf
.core
.synchronization
.TimestampTransformFactory
;
24 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.ITmfTimestamp
;
25 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.TmfNanoTimestamp
;
26 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.TmfTimestamp
;
27 import org
.junit
.Test
;
30 * Timestamp transform tests
32 * @author Matthew Khouzam
36 public class TsTransformFactoryTest
{
37 private final ITmfTimestamp t0
= new TmfTimestamp(0);
38 private final ITmfTimestamp t100
= new TmfTimestamp(100);
39 private final ITmfTimestamp t1e2
= new TmfTimestamp(1, 2);
40 private final ITmfTimestamp t1e3
= new TmfTimestamp(1, 3);
41 private final ITmfTimestamp tn0
= new TmfNanoTimestamp(0);
42 private final ITmfTimestamp tn100
= new TmfNanoTimestamp(100);
43 private final ITmfTimestamp tn1
= new TmfNanoTimestamp(1);
44 private final ITmfTimestampTransform identity1
= TimestampTransformFactory
.createLinear(1.0, new TmfNanoTimestamp(0));
45 private final ITmfTimestampTransform offset1
= TimestampTransformFactory
.createWithOffset(100);
46 private final ITmfTimestampTransform offset2
= TimestampTransformFactory
.createLinear(NonNullUtils
.checkNotNull(BigDecimal
.ONE
), NonNullUtils
.checkNotNull(new BigDecimal(100)));
47 private final ITmfTimestampTransform offset3
= TimestampTransformFactory
.createLinear(1.0, 100);
48 private final ITmfTimestampTransform offset4
= TimestampTransformFactory
.createLinear(1.0, new TmfNanoTimestamp(100));
54 public void transformIdentity() {
55 final ITmfTimestampTransform identity
= TimestampTransformFactory
.createWithOffset(0);
56 final ITmfTimestampTransform innefficientIdentity
= new TmfConstantTransform();
57 final ITmfTimestampTransform compositeInnefficientIdentity
= identity
.composeWith(innefficientIdentity
);
58 final ITmfTimestampTransform compositeInnefficientIdentity2
= innefficientIdentity
.composeWith(innefficientIdentity
);
59 final ITmfTimestampTransform compositeInnefficientIdentity3
= innefficientIdentity
.composeWith(identity
);
60 assertEquals(t0
, identity
.transform(t0
));
61 assertEquals(tn0
, identity
.transform(tn0
));
62 assertEquals(t100
, identity
.transform(t100
));
63 assertEquals(t1e2
, identity
.transform(t100
));
64 assertEquals(t1e2
, identity
.transform(t1e2
));
65 assertEquals(t1e3
, identity
.transform(t1e3
));
66 assertEquals(tn100
, identity
.transform(tn100
));
67 assertEquals(t0
, innefficientIdentity
.transform(t0
)); // bad practice
68 assertEquals(t0
, compositeInnefficientIdentity
.transform(t0
)); // bad
70 assertEquals(t0
, compositeInnefficientIdentity2
.transform(t0
)); // bad
72 assertEquals(t0
, compositeInnefficientIdentity3
.transform(t0
)); // bad
77 * Test with an offset of 100
80 public void transformOffset() {
81 final ITmfTimestampTransform offset
= offset1
;
82 final ITmfTimestampTransform compositeTransform
= offset
.composeWith(TimestampTransformFactory
.createWithOffset(new TmfNanoTimestamp(-100)));
83 assertEquals(tn100
, offset
.transform(t0
));
84 assertEquals(tn100
, offset
.transform(tn0
));
85 assertEquals(tn0
, compositeTransform
.transform(tn0
));
86 assertEquals(t0
, compositeTransform
.transform(t0
));
87 assertEquals(200, offset1
.transform(100));
88 assertEquals(200, offset2
.transform(100));
89 assertEquals(200, offset3
.transform(100));
90 assertEquals(200, offset4
.transform(100));
97 public void transformSlope() {
98 final ITmfTimestampTransform slope
= TimestampTransformFactory
.createLinear(10, 0);
99 final ITmfTimestampTransform slope1
= TimestampTransformFactory
.createLinear(10.0, new TmfNanoTimestamp(0));
100 assertEquals(t1e3
, slope
.transform(t1e2
));
101 assertEquals(tn100
, slope
.transform(new TmfNanoTimestamp(10)));
102 assertEquals(tn100
, slope
.transform(slope
.transform(tn1
)));
103 assertEquals(tn100
, slope
.composeWith(slope
).transform(tn1
));
104 assertEquals(tn100
, slope1
.transform(new TmfNanoTimestamp(10)));
111 public void testToString() {
112 final String expectedLinear
= "TmfTimestampTransformLinearFast [ slope = 314.0, offset = 0.0 ]";
113 final String expectedLinearBigDec
= "TmfTimestampTransformLinearFast [ slope = 314, offset = 0 ]";
114 final String expectedOffset
= "TmfConstantTransform [ offset = 314 ]";
115 final String expectedIdentity
= "TmfTimestampTransform [ IDENTITY ]";
116 final String expectedOffset100
= "TmfConstantTransform [ offset = 100 ]";
117 assertEquals(expectedLinear
, TimestampTransformFactory
.createLinear(314, 0).toString());
118 assertEquals(expectedLinearBigDec
, TimestampTransformFactory
.createLinear(NonNullUtils
.checkNotNull(BigDecimal
.valueOf(314)), NonNullUtils
.checkNotNull(BigDecimal
.ZERO
)).toString());
119 assertEquals(expectedOffset
, TimestampTransformFactory
.createLinear(1, 314).toString());
120 assertEquals(expectedOffset
, TimestampTransformFactory
.createWithOffset(314).toString());
121 assertEquals(expectedOffset
, TimestampTransformFactory
.createWithOffset(14).composeWith(TimestampTransformFactory
.createWithOffset(300)).toString());
122 assertEquals(expectedIdentity
, TimestampTransformFactory
.createWithOffset(314).composeWith(TimestampTransformFactory
.createWithOffset(-314)).toString());
123 assertEquals(expectedIdentity
, TimestampTransformFactory
.createWithOffset(0).toString());
124 assertEquals(expectedIdentity
, identity1
.toString());
125 assertEquals(expectedOffset100
, offset1
.toString());
126 assertEquals(expectedOffset100
, offset2
.toString());
127 assertEquals(expectedOffset100
, offset3
.toString());
128 assertEquals(expectedOffset100
, offset4
.toString());