46 lines
2.2 KiB
Java
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;
|
|
}
|
|
}
|