"greened" the tests for bug 4063

Change-Id: I81f9a0705bfe6ec0aaf510921e2146e950767711
This commit is contained in:
Axel Uhl
2017-02-15 11:42:23 +01:00
parent 7998fc2895
commit d7f02212af
6 changed files with 57 additions and 46 deletions
@@ -1,6 +1,7 @@
package com.sap.sailing.domain.test;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -8,7 +9,11 @@ import org.junit.Before;
import org.junit.Test;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.Wind;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.WindImpl;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.impl.CombinedWindAsNavigableSet;
import com.sap.sailing.domain.tracking.impl.CombinedWindTrackImpl;
@@ -41,6 +46,9 @@ public class VirtualWindFixesTest {
when(race.getName()).thenReturn("Race Name");
when(trackedRace.getRace()).thenReturn(race);
when(trackedRace.getStartOfRace()).thenReturn(oddStart);
when(trackedRace.getWind(any(), any())).thenAnswer(invocation->new WindImpl(
(Position) invocation.getArguments()[0], (TimePoint) invocation.getArguments()[1],
new KnotSpeedWithBearingImpl(12, new DegreeBearingImpl(123))));
windTrack = new CombinedWindTrackImpl(trackedRace, /* baseConfidence */ 0.9) {
private static final long serialVersionUID = 123L;
@@ -59,7 +67,37 @@ public class VirtualWindFixesTest {
};
}
@Test
public void testSubsetWithInclusiveEnd() {
windTrack.lockForRead();
try {
final Iterable<Wind> fixes = windTrack.getFixes(evenStart, /* fromInclusive */ true,
evenStart.plus(virtualSet.getResolutionInMilliseconds()), /* toInclusive */ true);
assertEquals(2, Util.size(fixes));
Wind wind1 = fixes.iterator().next();
assertEquals(evenStart, wind1.getTimePoint());
Wind wind2 = Util.get(fixes, 1);
assertEquals(evenStart.plus(virtualSet.getResolutionInMilliseconds()), wind2.getTimePoint());
} finally {
windTrack.unlockAfterRead();
}
}
@Test
public void testSubsetWithInclusiveEndAndExclusiveStart() {
windTrack.lockForRead();
try {
final Iterable<Wind> fixes = windTrack.getFixes(evenStart, /* fromInclusive */ false,
evenStart.plus(virtualSet.getResolutionInMilliseconds()), /* toInclusive */ true);
assertEquals(1, Util.size(fixes));
Wind wind1 = fixes.iterator().next();
assertEquals(evenStart.plus(virtualSet.getResolutionInMilliseconds()), wind1.getTimePoint());
} finally {
windTrack.unlockAfterRead();
}
}
@Test
public void testSubset() {
windTrack.lockForRead();
@@ -68,7 +106,7 @@ public class VirtualWindFixesTest {
evenStart.plus(virtualSet.getResolutionInMilliseconds()), /* toInclusive */ false);
assertEquals(1, Util.size(fixes));
Wind wind = fixes.iterator().next();
assertEquals(oddStart.plus(virtualSet.getResolutionInMilliseconds()), wind.getTimePoint());
assertEquals(evenStart, wind.getTimePoint());
} finally {
windTrack.unlockAfterRead();
}
@@ -122,7 +122,7 @@ public abstract class VirtualWindFixesAsNavigableSet extends AbstractUnmodifiabl
protected TimePoint higherToResolution(TimePoint timePoint) {
TimePoint result;
final TimePoint startOfTracking = getTrackedRace().getStartOfTracking();
if (startOfTracking == null && timePoint.compareTo(startOfTracking) < 0) {
if (startOfTracking != null && timePoint.compareTo(startOfTracking) < 0) {
result = higherToResolution(startOfTracking);
} else {
result = new MillisecondsTimePoint((timePoint.asMillis() / getResolutionInMilliseconds() + 1)
@@ -18,24 +18,23 @@ public class DefaultWindTrackJsonSerializer implements WindTrackJsonSerializer {
public static final String FIELD_PUBLICATION_URL = "publicationUrl";
public static final String FIELD_VENUE = "venue";
private TimePoint fromTime;
private TimePoint toTime;
private WindSource windSource;
private final TimePoint fromTime;
private final TimePoint toTime;
private final WindSource windSource;
/**
* -1 means unlimited.
*/
private final int maxNumberOfFixes;
public DefaultWindTrackJsonSerializer(int maxNumberOfFixes) {
public DefaultWindTrackJsonSerializer(int maxNumberOfFixes, TimePoint fromTime, TimePoint toTime, WindSource windSource) {
super();
this.maxNumberOfFixes = maxNumberOfFixes;
this.fromTime = fromTime;
this.toTime = toTime;
this.windSource = windSource;
}
public DefaultWindTrackJsonSerializer() {
this(-1);
}
public JSONObject serialize(WindTrack windTrack) {
JSONObject result = new JSONObject();
JSONArray jsonWindFixes = new JSONArray();
@@ -74,16 +73,4 @@ public class DefaultWindTrackJsonSerializer implements WindTrackJsonSerializer {
result.put(windSource.getType() + (windSource.getId() != null ? "-"+windSource.getId().toString() : ""), jsonWindFixes);
return result;
}
public void setFromTime(TimePoint fromTime) {
this.fromTime = fromTime;
}
public void setToTime(TimePoint toTime) {
this.toTime = toTime;
}
public void setWindSource(WindSource windSource) {
this.windSource = windSource;
}
}
@@ -2,6 +2,7 @@ package com.sap.sailing.server.gateway.serialization.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
@@ -12,7 +13,6 @@ import com.sap.sailing.domain.common.impl.WindSourceImpl;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.WindTrack;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
import com.sap.sse.common.TimePoint;
public class TrackedRaceJsonSerializer implements JsonSerializer<TrackedRace> {
public static final String FIELD_ID = "id";
@@ -24,16 +24,12 @@ public class TrackedRaceJsonSerializer implements JsonSerializer<TrackedRace> {
private final String windSourceToSerialize;
private final String windSourceIdToSerialize;
private final TimePoint fromTime;
private final TimePoint toTime;
private final WindTrackJsonSerializer windTrackSerializer;
private final Function<WindSource, WindTrackJsonSerializer> windTrackSerializerProducer;
public TrackedRaceJsonSerializer(WindTrackJsonSerializer windTrackSerializer, String windSourceToSerialize, String windSourceIdToSerialize, TimePoint fromTime, TimePoint toTime) {
this.windTrackSerializer = windTrackSerializer;
public TrackedRaceJsonSerializer(Function<WindSource, WindTrackJsonSerializer> windTrackSerializer, String windSourceToSerialize, String windSourceIdToSerialize) {
this.windTrackSerializerProducer = windTrackSerializer;
this.windSourceToSerialize = windSourceToSerialize;
this.windSourceIdToSerialize = windSourceIdToSerialize;
this.fromTime = fromTime;
this.toTime = toTime;
windSourceToSerialize = WindSourceType.COMBINED.name();
}
@@ -43,7 +39,7 @@ public class TrackedRaceJsonSerializer implements JsonSerializer<TrackedRace> {
jsonRace.put(FIELD_NAME, trackedRace.getRace().getName());
jsonRace.put(FIELD_REGATTA, trackedRace.getRaceIdentifier().getRegattaName());
if(windTrackSerializer != null) {
if (windTrackSerializerProducer != null) {
JSONArray windTracks = new JSONArray();
List<WindSource> windSources = getAvailableWindSources(trackedRace);
@@ -60,18 +56,13 @@ public class TrackedRaceJsonSerializer implements JsonSerializer<TrackedRace> {
if (windSourceIdToSerialize != null && windSource.getId() != null && !windSource.getId().toString().equalsIgnoreCase(windSourceIdToSerialize)) {
continue;
}
windTrackSerializer.setFromTime(fromTime);
windTrackSerializer.setToTime(toTime);
windTrackSerializer.setWindSource(windSource);
WindTrack windTrack = trackedRace.getOrCreateWindTrack(windSource);
JSONObject jsonWindTrack = windTrackSerializer.serialize(windTrack);
JSONObject jsonWindTrack = windTrackSerializerProducer.apply(windSource).serialize(windTrack);
windTracks.add(jsonWindTrack);
}
}
jsonRace.put(FIELD_WINDSOURCES, windTracks);
}
return jsonRace;
}
@@ -1,12 +1,7 @@
package com.sap.sailing.server.gateway.serialization.impl;
import com.sap.sailing.domain.common.WindSource;
import com.sap.sailing.domain.tracking.WindTrack;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
import com.sap.sse.common.TimePoint;
public interface WindTrackJsonSerializer extends JsonSerializer<WindTrack> {
void setFromTime(TimePoint fromTime);
void setToTime(TimePoint toTime);
void setWindSource(WindSource windSource);
}
@@ -758,10 +758,10 @@ public class RegattasResource extends AbstractSailingServerResource {
.type(MediaType.TEXT_PLAIN).build();
}
// Crop request interval to startOfTracking / [endOfTracking|timePointOfLastEvent]
from = Util.getLatestOfTimePoints(from, trackedRace.getStartOfTracking());
to = Util.getEarliestOfTimePoints(to, Util.getEarliestOfTimePoints(trackedRace.getEndOfTracking(), trackedRace.getTimePointOfNewestEvent()));
final TimePoint finalFrom = Util.getLatestOfTimePoints(from, trackedRace.getStartOfTracking());
final TimePoint finalTo = Util.getEarliestOfTimePoints(to, Util.getEarliestOfTimePoints(trackedRace.getEndOfTracking(), trackedRace.getTimePointOfNewestEvent()));
TrackedRaceJsonSerializer serializer = new TrackedRaceJsonSerializer(
new DefaultWindTrackJsonSerializer(/* maxNumberOfFixes */ 10000), windSource, windSourceId, from, to);
ws->new DefaultWindTrackJsonSerializer(/* maxNumberOfFixes */ 10000, finalFrom, finalTo, ws), windSource, windSourceId);
JSONObject jsonWindTracks = serializer.serialize(trackedRace);
String json = jsonWindTracks.toJSONString();