diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-02-07 23:50:50 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-02-12 20:27:16 +0000 |
commit | ca276ca5471a4e7a137f68a81feb150282eae62f (patch) | |
tree | 6ae3825a7cb5ce3deffe42468bbf9682c0a70e99 /test | |
parent | Merge branch 'glcontainer-fix' (diff) | |
download | ilt-ca276ca5471a4e7a137f68a81feb150282eae62f.tar.bz2 ilt-ca276ca5471a4e7a137f68a81feb150282eae62f.tar.xz ilt-ca276ca5471a4e7a137f68a81feb150282eae62f.zip |
Add stripiter
A generic iterator wrapper returning a tuple of 3 references to the original values, as
processed in the fashion of an OpenGL triangle strip.
Diffstat (limited to 'test')
-rw-r--r-- | test/test-lib.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/test-lib.cpp b/test/test-lib.cpp index 58b769a..5f0b5e5 100644 --- a/test/test-lib.cpp +++ b/test/test-lib.cpp @@ -4,6 +4,7 @@ #include <boost/test/data/test_case.hpp> #include <boost/test/unit_test.hpp> +#include <collections.h> #include <glArrays.h> #include <glad/gl.h> #include <set> @@ -49,3 +50,22 @@ BOOST_AUTO_TEST_CASE(generate_move_and_delete) } BOOST_CHECK(active.empty()); } + +constexpr std::array TRIANGLE_STRIP_IN {0, 1, 2, 3, 4, 5}; +static_assert(std::distance(strip_begin(TRIANGLE_STRIP_IN), strip_end(TRIANGLE_STRIP_IN)) == 4); + +BOOST_AUTO_TEST_CASE(triangle_strip_iter) +{ + constexpr std::array TRIANGLE_STRIP_EXPECTED {0, 1, 2, 2, 1, 3, 2, 3, 4, 4, 3, 5}; + + std::vector<int> out; + std::for_each(strip_begin(TRIANGLE_STRIP_IN), strip_end(TRIANGLE_STRIP_IN), [&out](const auto & t) { + const auto [a, b, c] = t; + out.push_back(a); + out.push_back(b); + out.push_back(c); + }); + BOOST_REQUIRE_EQUAL(out.size(), (TRIANGLE_STRIP_IN.size() - 2) * 3); + BOOST_CHECK_EQUAL_COLLECTIONS( + out.begin(), out.end(), TRIANGLE_STRIP_EXPECTED.begin(), TRIANGLE_STRIP_EXPECTED.end()); +} |