diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/Jamfile.jam | 1 | ||||
-rw-r--r-- | test/test-environment.cpp | 35 | ||||
-rw-r--r-- | test/test-render.cpp | 8 |
3 files changed, 44 insertions, 0 deletions
diff --git a/test/Jamfile.jam b/test/Jamfile.jam index 0b830a8..3ab4c4c 100644 --- a/test/Jamfile.jam +++ b/test/Jamfile.jam @@ -63,6 +63,7 @@ run test-instancing.cpp : -- : test-glContainer : <library>test ; run perf-instancing.cpp : \< : test-instancing : <library>benchmark <library>test ; run test-glContainer.cpp : : : <library>test ; run test-pack.cpp : : : <library>test ; +run test-environment.cpp : : : <library>test ; compile test-static-enumDetails.cpp ; compile test-static-stream_support.cpp ; explicit perf-assetFactory ; diff --git a/test/test-environment.cpp b/test/test-environment.cpp new file mode 100644 index 0000000..b6e0e4f --- /dev/null +++ b/test/test-environment.cpp @@ -0,0 +1,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); +} diff --git a/test/test-render.cpp b/test/test-render.cpp index bb5a137..0a92689 100644 --- a/test/test-render.cpp +++ b/test/test-render.cpp @@ -1,3 +1,4 @@ +#include "game/environment.h" #define BOOST_TEST_MODULE test_render #include "testHelpers.h" @@ -32,6 +33,7 @@ class TestScene : public SceneProvider { std::shared_ptr<Plant> plant1; RailLinks rail; std::shared_ptr<GeoData> gd = std::make_shared<GeoData>(GeoData::createFlat({0, 0}, {1000000, 1000000}, 1)); + std::shared_ptr<Environment> env = std::make_shared<Environment>(); Terrain terrain {gd}; Water water {gd}; @@ -71,6 +73,12 @@ public: } void + environment(const SceneShader &, const SceneRenderer & r) const override + { + env->render(r, *this); + } + + void shadows(const ShadowMapper & shadowMapper) const override { terrain.shadows(shadowMapper); |