mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-18 11:49:09 +00:00
cleaned up ORC certificate (de-)serialization tests and strengthened verdicts
This commit is contained in:
+8
-9
@@ -50,10 +50,10 @@ public class ORCCertificateJsonDeserializer implements JsonDeserializer<ORCCerti
|
||||
Map<Speed, Speed> longDistanceSpeedPredictionPerTrueWindSpeed = new HashMap<>();
|
||||
Map<Speed, Speed> circularRandomSpeedPredictionPerTrueWindSpeed = new HashMap<>();
|
||||
Map<Speed, Speed> nonSpinnakerSpeedPredictionPerTrueWindSpeed = new HashMap<>();
|
||||
Speed[] trueWindSpeeds = convertJsonArrayOfDoublesToArrayOfObjectsOrReturnDefault(json.get(ORCCertificateJsonSerializer.ORC_CERTIFICATE_TRUE_WIND_ANGLES_IN_TRUE_DEGREES),
|
||||
ORCCertificate.ALLOWANCES_TRUE_WIND_SPEEDS, speedInKnots->new KnotSpeedImpl(speedInKnots));
|
||||
Bearing[] trueWindAngles = convertJsonArrayOfDoublesToArrayOfObjectsOrReturnDefault(json.get(ORCCertificateJsonSerializer.ORC_CERTIFICATE_TRUE_WIND_SPEEDS_IN_KNOTS),
|
||||
ORCCertificate.ALLOWANCES_TRUE_WIND_ANGLES, twaInTrueDegrees->new DegreeBearingImpl(twaInTrueDegrees));
|
||||
Speed[] trueWindSpeeds = convertJsonArrayOfDoublesToArrayOfObjectsOrReturnDefault(json.get(ORCCertificateJsonSerializer.ORC_CERTIFICATE_TRUE_WIND_SPEEDS_IN_KNOTS),
|
||||
ORCCertificate.ALLOWANCES_TRUE_WIND_SPEEDS, speedInKnots->new KnotSpeedImpl(speedInKnots), new Speed[0]);
|
||||
Bearing[] trueWindAngles = convertJsonArrayOfDoublesToArrayOfObjectsOrReturnDefault(json.get(ORCCertificateJsonSerializer.ORC_CERTIFICATE_TRUE_WIND_ANGLES_IN_TRUE_DEGREES),
|
||||
ORCCertificate.ALLOWANCES_TRUE_WIND_ANGLES, twaInTrueDegrees->new DegreeBearingImpl(twaInTrueDegrees), new Bearing[0]);
|
||||
for (Speed tws : trueWindSpeeds) {
|
||||
String twsKey = ORCCertificateJsonSerializer.speedToKnotsString(tws);
|
||||
beatAngles.put(tws, new DegreeBearingImpl(
|
||||
@@ -113,19 +113,18 @@ public class ORCCertificateJsonDeserializer implements JsonDeserializer<ORCCerti
|
||||
return certificate;
|
||||
}
|
||||
|
||||
private <T> T[] convertJsonArrayOfDoublesToArrayOfObjectsOrReturnDefault(final Object windAnglesObject,
|
||||
final T[] defaults, final Function<Double, T> constructor) {
|
||||
private <T> T[] convertJsonArrayOfDoublesToArrayOfObjectsOrReturnDefault(final Object supposedJsonArray,
|
||||
final T[] defaults, final Function<Double, T> constructor, T[] array) {
|
||||
final T[] result;
|
||||
final JSONArray windAnglesJsonArray;
|
||||
if (windAnglesObject == null || !(windAnglesObject instanceof JSONArray) || (windAnglesJsonArray=(JSONArray) windAnglesObject).isEmpty()) {
|
||||
if (supposedJsonArray == null || !(supposedJsonArray instanceof JSONArray) || (windAnglesJsonArray=(JSONArray) supposedJsonArray).isEmpty()) {
|
||||
result = defaults;
|
||||
} else {
|
||||
final List<T> resultList = new ArrayList<>();
|
||||
for (final Object number : windAnglesJsonArray) {
|
||||
resultList.add(constructor.apply((Double) number));
|
||||
}
|
||||
@SuppressWarnings("unchecked")
|
||||
final T[] tArray = (T[]) resultList.toArray();
|
||||
final T[] tArray = resultList.toArray(array);
|
||||
result = tArray;
|
||||
}
|
||||
return result;
|
||||
|
||||
+2
-2
@@ -141,8 +141,8 @@ public class ORCCertificateJsonSerializer implements JsonSerializer<ORCCertifica
|
||||
} else if (speed.equals(ORCCertificate.ALLOWANCES_TRUE_WIND_SPEEDS[6])) {
|
||||
result = ORC_CERTIFICATE_TWS_20KT;
|
||||
} else {
|
||||
String speedKnots =String.valueOf(speed.getKnots());
|
||||
speedKnots =speedKnots.replace(".", "P");
|
||||
String speedKnots = String.valueOf(speed.getKnots());
|
||||
speedKnots = speedKnots.replace(".", "P");
|
||||
result = MessageFormat.format(ORC_CERTIFICATE_TWS_KNOTS, speedKnots);
|
||||
}
|
||||
return result;
|
||||
|
||||
+20
-3
@@ -8,6 +8,7 @@ import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
@@ -15,22 +16,27 @@ import org.json.simple.parser.ParseException;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
|
||||
import com.sap.sailing.domain.common.orc.ORCCertificate;
|
||||
import com.sap.sailing.domain.orc.ORCCertificatesCollection;
|
||||
import com.sap.sailing.domain.orc.ORCCertificatesImporter;
|
||||
import com.sap.sailing.server.gateway.deserialization.racelog.impl.ORCCertificateJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.ORCCertificateJsonSerializer;
|
||||
import com.sap.sse.common.Bearing;
|
||||
import com.sap.sse.common.Speed;
|
||||
import com.sap.sse.common.impl.DegreeBearingImpl;
|
||||
|
||||
public class ORCCertificateJsonDeserializerTest {
|
||||
private ORCCertificateJsonSerializer serializer;
|
||||
private ORCCertificateJsonDeserializer deserializer;
|
||||
private static final String RESOURCES = "resources/rms/";
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
deserializer = new ORCCertificateJsonDeserializer();
|
||||
serializer = new ORCCertificateJsonSerializer();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testNewFormateOrcCertificateDeserializer() throws FileNotFoundException, IOException, ParseException {
|
||||
File fileGER = new File(RESOURCES + "newFormatCertificate.json");
|
||||
@@ -38,10 +44,17 @@ public class ORCCertificateJsonDeserializerTest {
|
||||
Iterator<ORCCertificate> iterator = importer.getCertificates().iterator();
|
||||
assertTrue(iterator.hasNext());
|
||||
ORCCertificate certificate = iterator.next();
|
||||
JSONObject serializedCertificate =serializer.serialize(certificate);
|
||||
final Speed[] expectedTrueWindSpeeds = { new KnotSpeedImpl(6.1), new KnotSpeedImpl(8.2), new KnotSpeedImpl(10.6), new KnotSpeedImpl(12.1), new KnotSpeedImpl(14.9), new KnotSpeedImpl(16.7), new KnotSpeedImpl(20.1) };
|
||||
assertTrue(Arrays.equals(expectedTrueWindSpeeds, certificate.getTrueWindSpeeds()));
|
||||
final Bearing[] expectedTrueWindAngles = { new DegreeBearingImpl(52.7), new DegreeBearingImpl(64.4), new DegreeBearingImpl(75), new DegreeBearingImpl(90),
|
||||
new DegreeBearingImpl(110), new DegreeBearingImpl(120), new DegreeBearingImpl(135), new DegreeBearingImpl(150) };
|
||||
assertTrue(Arrays.equals(expectedTrueWindAngles, certificate.getTrueWindAngles()));
|
||||
JSONObject serializedCertificate = serializer.serialize(certificate);
|
||||
assertNotNull(serializedCertificate);
|
||||
ORCCertificate certificateAfterDeserialize = deserializer.deserialize(serializedCertificate);
|
||||
assertEquals(certificate.getId(), certificateAfterDeserialize.getId());
|
||||
assertTrue(Arrays.equals(expectedTrueWindSpeeds, certificateAfterDeserialize.getTrueWindSpeeds()));
|
||||
assertTrue(Arrays.equals(expectedTrueWindAngles, certificateAfterDeserialize.getTrueWindAngles()));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -51,9 +64,13 @@ public class ORCCertificateJsonDeserializerTest {
|
||||
Iterator<ORCCertificate> iterator = importer.getCertificates().iterator();
|
||||
assertTrue(iterator.hasNext());
|
||||
ORCCertificate certificate = iterator.next();
|
||||
JSONObject serializedCertificate =serializer.serialize(certificate);
|
||||
assertTrue(Arrays.equals(ORCCertificate.ALLOWANCES_TRUE_WIND_SPEEDS, certificate.getTrueWindSpeeds()));
|
||||
assertTrue(Arrays.equals(ORCCertificate.ALLOWANCES_TRUE_WIND_ANGLES, certificate.getTrueWindAngles()));
|
||||
JSONObject serializedCertificate = serializer.serialize(certificate);
|
||||
assertNotNull(serializedCertificate);
|
||||
ORCCertificate certificateAfterDeserialize = deserializer.deserialize(serializedCertificate);
|
||||
assertEquals(certificate.getId(), certificateAfterDeserialize.getId());
|
||||
assertTrue(Arrays.equals(ORCCertificate.ALLOWANCES_TRUE_WIND_SPEEDS, certificateAfterDeserialize.getTrueWindSpeeds()));
|
||||
assertTrue(Arrays.equals(ORCCertificate.ALLOWANCES_TRUE_WIND_ANGLES, certificateAfterDeserialize.getTrueWindAngles()));
|
||||
}
|
||||
}
|
||||
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.ParseException;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.common.orc.ORCCertificate;
|
||||
import com.sap.sailing.domain.orc.ORCCertificatesCollection;
|
||||
import com.sap.sailing.domain.orc.ORCCertificatesImporter;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.ORCCertificateJsonSerializer;
|
||||
|
||||
public class ORCCertificateJsonSerializerTest {
|
||||
private ORCCertificateJsonSerializer serializer;
|
||||
private static final String RESOURCES = "resources/rms/";
|
||||
@Before
|
||||
public void setUp() {
|
||||
serializer = new ORCCertificateJsonSerializer();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOrcCertificateNewFormatSerializer() throws IOException, ParseException {
|
||||
File fileGER = new File(RESOURCES + "newFormatCertificate.json");
|
||||
ORCCertificatesCollection importer = ORCCertificatesImporter.INSTANCE.read(new FileInputStream(fileGER));
|
||||
Iterator<ORCCertificate> iterator = importer.getCertificates().iterator();
|
||||
assertTrue(iterator.hasNext());
|
||||
ORCCertificate certificate = iterator.next();
|
||||
JSONObject serializedCertificate =serializer.serialize(certificate);
|
||||
assertNotNull(serializedCertificate);
|
||||
}
|
||||
@Test
|
||||
public void testOrcCertificateOldFormatSerializer() throws IOException, ParseException {
|
||||
File fileGER = new File(RESOURCES + "oldFormatCertificate.json");
|
||||
ORCCertificatesCollection importer = ORCCertificatesImporter.INSTANCE.read(new FileInputStream(fileGER));
|
||||
Iterator<ORCCertificate> iterator = importer.getCertificates().iterator();
|
||||
assertTrue(iterator.hasNext());
|
||||
ORCCertificate certificate = iterator.next();
|
||||
JSONObject serializedCertificate =serializer.serialize(certificate);
|
||||
assertNotNull(serializedCertificate);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user