summaryrefslogtreecommitdiff
path: root/test/test-environment.cpp
blob: b6e0e4f2e4d6b88ce07349d9575e42c67bd4f893 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#define BOOST_TEST_MODULE environment
#include <boost/test/data/test_case.hpp>
#include <boost/test/unit_test.hpp>
#include <cmath>
#include <stream_support.h>

#include <chronology.h>
#include <config/types.h>
#include <game/environment.h>
#include <maths.h>

using sunPosTestData = std::tuple<Direction2D, time_t, Direction2D>;
constexpr Direction2D Doncaster = {-1.1, 53.5};
constexpr Direction2D NewYork = {74.0, 40.7};
constexpr Direction2D Syndey = {-151.2, -33.9};
constexpr Direction2D EqGM = {};

BOOST_DATA_TEST_CASE(sun_position,
		boost::unit_test::data::make<sunPosTestData>({
				{EqGM, "2024-01-02T00:00:00"_time_t, {181.52F, -66.86F}},
				{EqGM, "2024-01-02T06:00:00"_time_t, {113.12F, -0.85F}},
				{EqGM, "2024-01-02T12:00:00"_time_t, {177.82F, 66.97F}},
				{EqGM, "2024-01-02T18:00:00"_time_t, {246.99F, 0.90F}},
				{EqGM, "2024-01-03T00:00:00"_time_t, {181.52F, -67.04F}},
				{EqGM, "2024-06-29T12:00:00"_time_t, {2.1F, 66.80F}},
				{Doncaster, "2024-06-29T12:00:00"_time_t, {176.34F, 59.64F}},
				{NewYork, "2024-06-29T12:00:00"_time_t, {278.04F, 27.34F}},
				{Syndey, "2024-06-29T12:00:00"_time_t, {106.13F, -63.29F}},
		}),
		position, timeOfYear, expSunPos)
{
	const auto sunPos = Environment::getSunPos(position * degreesToRads, timeOfYear) / degreesToRads;
	BOOST_CHECK_CLOSE(sunPos.x, expSunPos.x, 1.F);
	BOOST_CHECK_CLOSE(sunPos.y, expSunPos.y, 1.F);
}