wtapi/src/test/java/eu/m724/wtapi/twilight/SimpleTwilightTimeTest.java
2024-09-24 18:38:22 +02:00

46 lines
2.2 KiB
Java

package eu.m724.wtapi.twilight;
import eu.m724.wtapi.object.Coordinates;
import eu.m724.wtapi.object.Twilight;
import eu.m724.wtapi.provider.twilight.SimpleTwilightTimeProvider;
import eu.m724.wtapi.provider.twilight.TwilightTimeProvider;
import org.junit.Test;
import java.time.LocalDate;
public class SimpleTwilightTimeTest {
/**
* Acceptable discrepancy in minutes
*/
public static final int ACCEPTABLE_DIFFERENCE = 10;
@Test
public void approximateTest() {
TwilightTimeProvider provider = new SimpleTwilightTimeProvider();
testLocation(provider, 26, 6, 2023, 53.123394, 23.0864867, 122, 1139);
testLocation(provider, 13, 11, 2040, 45.432427, -122.3899276, 907, 1481);
testLocation(provider, 23, 3, 2021, 55.5024161, 9.6801853, 315, 1061);
testLocation(provider, 6, 8,1990, -72.012117, 2.5240873, 600, 832);
// TODO this is broken so fix
//testLocation(provider, 6, 9,2021, 82.498665, -62.3458366, 74, 1351); // date not on purpose as this was the first sunset in that location. first sunset since 5th april
}
private void testLocation(TwilightTimeProvider provider, int day, int month, int year, double latitude, double longitude, int actualSunrise, int actualSunset) {
LocalDate date = LocalDate.of(year, month, day);
Coordinates coordinates = new Coordinates(latitude, longitude);
Twilight twilight = provider.calculateTwilightTime(date, coordinates);
System.out.println();
System.out.println(date);
System.out.println(coordinates.latitude + " " + coordinates.longitude);
System.out.println("Calculated sunrise: " + date.atStartOfDay().plus(twilight.sunrise));
System.out.println("Actual sunrise: " + date.atStartOfDay().plusMinutes(actualSunrise));
assert Math.abs(twilight.sunrise.toMinutes() - actualSunrise) < ACCEPTABLE_DIFFERENCE;
System.out.println("Calculated sunset: " + date.atStartOfDay().plus(twilight.sunset));
System.out.println("Actual sunset: " + date.atStartOfDay().plusMinutes(actualSunset));
assert Math.abs(twilight.sunset.toMinutes() - actualSunset) < ACCEPTABLE_DIFFERENCE;
}
}