diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-10-05 12:17:55 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-10-05 12:17:55 +0100 |
commit | a9a2a4c8b5aad22d055c670c72eb41fc22b0d812 (patch) | |
tree | 560dff885db74ba91b319be785395b060777f884 /test/test-environment.cpp | |
parent | Add rotate_yp taking two separate parameters (diff) | |
download | ilt-a9a2a4c8b5aad22d055c670c72eb41fc22b0d812.tar.bz2 ilt-a9a2a4c8b5aad22d055c670c72eb41fc22b0d812.tar.xz ilt-a9a2a4c8b5aad22d055c670c72eb41fc22b0d812.zip |
Add LightDirection class
Diffstat (limited to 'test/test-environment.cpp')
-rw-r--r-- | test/test-environment.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/test-environment.cpp b/test/test-environment.cpp index b6e0e4f..76144a4 100644 --- a/test/test-environment.cpp +++ b/test/test-environment.cpp @@ -1,4 +1,5 @@ #define BOOST_TEST_MODULE environment +#include "testHelpers.h" #include <boost/test/data/test_case.hpp> #include <boost/test/unit_test.hpp> #include <cmath> @@ -7,9 +8,11 @@ #include <chronology.h> #include <config/types.h> #include <game/environment.h> +#include <gfx/lightDirection.h> #include <maths.h> using sunPosTestData = std::tuple<Direction2D, time_t, Direction2D>; +using sunDirTestData = std::tuple<Direction2D, Direction3D, float>; constexpr Direction2D Doncaster = {-1.1, 53.5}; constexpr Direction2D NewYork = {74.0, 40.7}; constexpr Direction2D Syndey = {-151.2, -33.9}; @@ -19,6 +22,7 @@ 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-02T06:30:00"_time_t, {113.12F, 6.05F}}, {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}}, @@ -33,3 +37,26 @@ BOOST_DATA_TEST_CASE(sun_position, BOOST_CHECK_CLOSE(sunPos.x, expSunPos.x, 1.F); BOOST_CHECK_CLOSE(sunPos.y, expSunPos.y, 1.F); } + +BOOST_DATA_TEST_CASE(sun_direction, + boost::unit_test::data::make<sunDirTestData>({ + {{0.F, 0.F}, south, 0.1F}, + {{90.F, 0.F}, west, 0.1F}, + {{-90.F, 0.F}, east, 0.1F}, + // From above + // EqGM midnight, sun below horizon, shining upwards + {{181.52F, -66.86F}, {-0.01F, 0.39F, 0.919F}, 0}, + // EqGM just before sunrise, mostly west, north a bit, up a bit + {{113.12F, -0.85F}, {-0.92F, 0.39F, 0.015F}, 0.085F}, + // EqGM just after sunrise, mostly west, north a bit, down a bit + {{113.12F, 6.05F}, {-0.92F, 0.39F, -0.015F}, 0.205F}, + // Doncaster noon, roughly from south to north, high in the sky, downward + {{176.34F, 59.64F}, {-0.03F, 0.5F, -0.86F}, 0.96F}, + }), + position, direction, vert) +{ + const LightDirection ld {position * degreesToRads}; + BOOST_CHECK_CLOSE_VEC(ld.vector(), direction); + BOOST_CHECK_CLOSE(glm::length(ld.vector()), 1.F, 1); + BOOST_CHECK_CLOSE(ld.vertical(), vert, 5); +} |