mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-20 04:35:32 +00:00
"greened" the tests for bug 4063
Change-Id: I81f9a0705bfe6ec0aaf510921e2146e950767711
This commit is contained in:
+40
-2
@@ -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();
|
||||
}
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
+7
-20
@@ -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;
|
||||
}
|
||||
}
|
||||
+6
-15
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
-5
@@ -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);
|
||||
}
|
||||
|
||||
+3
-3
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user