Procházet zdrojové kódy

JUnit for the class 'UnitTelemetryValidation'

Lukas Cerny před 1 rokem
rodič
revize
bdb364d567

+ 84 - 0
src/test/java/cz/senslog/telemetry/database/validation/UnitTelemetryValidationTest.java

@@ -1,20 +1,104 @@
 package cz.senslog.telemetry.database.validation;
 
+import cz.senslog.telemetry.database.domain.Campaign;
+import cz.senslog.telemetry.database.domain.Location;
+import cz.senslog.telemetry.database.domain.Sensor;
+import cz.senslog.telemetry.database.domain.UnitTelemetry;
+import io.vertx.core.json.JsonObject;
 import org.junit.jupiter.api.Test;
 
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
 import static org.junit.jupiter.api.Assertions.*;
 
 class UnitTelemetryValidationTest {
 
     @Test
     void isTelemetryWithinCampaign() {
+        OffsetDateTime baseTime = OffsetDateTime.now();
+        Location location = Location.of(0f, 0f);
+        JsonObject observedValues = JsonObject.of();
+
+        Campaign campaign = Campaign.of(1, null, baseTime, baseTime.plusMonths(1));
+        UnitTelemetry t1 = UnitTelemetry.of(1000L, baseTime, location, 0, observedValues);
+        UnitTelemetry t2 = UnitTelemetry.of(2000L, baseTime.plusMonths(1).minusSeconds(1), location, 0, observedValues);
+        UnitTelemetry t3 = UnitTelemetry.of(3000L, baseTime.plusMonths(1), location, 0, observedValues);
+        UnitTelemetry t4 = UnitTelemetry.of(4000L, baseTime.plusMonths(1).plusSeconds(1), location, 0, observedValues);
+
+        assertTrue(UnitTelemetryValidation.isTelemetryWithinCampaign(campaign, t1));
+        assertTrue(UnitTelemetryValidation.isTelemetryWithinCampaign(campaign, t2));
+        assertTrue(UnitTelemetryValidation.isTelemetryWithinCampaign(campaign, t3));
+        assertFalse(UnitTelemetryValidation.isTelemetryWithinCampaign(campaign, t4));
     }
 
     @Test
     void telemetriesWithinCampaign() {
+        OffsetDateTime baseTime = OffsetDateTime.now();
+        Location location = Location.of(0f, 0f);
+        JsonObject observedValues = JsonObject.of();
+
+        Campaign campaign = Campaign.of(1, null, baseTime, baseTime.plusMonths(1));
+
+        List<UnitTelemetry> telemetries = List.of(
+                UnitTelemetry.of(1000L, baseTime, location, 0, observedValues),
+                UnitTelemetry.of(2000L, baseTime.plusMinutes(1), location, 0, observedValues),
+                UnitTelemetry.of(3000L, baseTime.plusMinutes(1), location, 0, observedValues),
+                UnitTelemetry.of(4000L, baseTime.plusMonths(1).minusSeconds(1), location, 0, observedValues),
+                UnitTelemetry.of(5000L, baseTime.plusMonths(1), location, 0, observedValues),
+                UnitTelemetry.of(6000L, baseTime.plusMonths(1).plusSeconds(1), location, 0, observedValues)
+        );
+
+        List<UnitTelemetry> filteredTels = UnitTelemetryValidation.telemetriesWithinCampaign(campaign, telemetries);
+
+        assertEquals(5, filteredTels.size());
+        assertEquals(1000L, filteredTels.get(0).getUnitId());
+        assertEquals(5000L, filteredTels.get(4).getUnitId());
     }
 
     @Test
     void telemetriesAccToSensors() {
+
+        OffsetDateTime baseTimestamp = OffsetDateTime.now();
+        Location location = Location.of(0f, 0f);
+
+        Map<Long, List<Sensor>> sensorsByUnitId = Map.of(
+                1000L, List.of(
+                        Sensor.of(100, "Sensor Name 100"),
+                        Sensor.of(200, "Sensor Name 200")
+                ),
+                2000L, List.of(
+                        Sensor.of(100, "Sensor Name 100"),
+                        Sensor.of(300, "Sensor Name 300")
+                )
+        );
+
+        List<UnitTelemetry> telemetries = List.of(
+                UnitTelemetry.of(2000L, baseTimestamp, location, 0, JsonObject.of(
+                        "100", 0,
+                        "200", 0
+                )),
+                UnitTelemetry.of(1000L, baseTimestamp.plusHours(1), location, 0, JsonObject.of(
+                        "Sensor Name 100", 0,
+                        "Sensor Name 200", 0
+                )),
+                UnitTelemetry.of(3000, baseTimestamp, location, 0, JsonObject.of())
+        );
+
+        List<UnitTelemetry> filteredTels = UnitTelemetryValidation.telemetriesAccToSensors(sensorsByUnitId, telemetries);
+
+        assertEquals(2, filteredTels.size());
+
+        UnitTelemetry t1 = filteredTels.get(0);
+        assertEquals(2000L, t1.getUnitId());
+        assertEquals(1, t1.getObservedValues().size());
+        assertTrue(t1.getObservedValues().containsKey("100"));
+
+        UnitTelemetry t2 = filteredTels.get(1);
+        assertEquals(1000L, t2.getUnitId());
+        assertEquals(2, t2.getObservedValues().size());
+        assertTrue(t2.getObservedValues().containsKey("100"));
+        assertTrue(t2.getObservedValues().containsKey("200"));
     }
 }