#define BOOST_TEST_MODULE environment #include #include #include #include #include #include #include #include using sunPosTestData = std::tuple; 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({ {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); }