From 6352e8e3196f78388b6c771073f9e03eaa612673 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Tue, 20 Jun 2023 14:33:09 +1000 Subject: everything everywhere all at once --- source/test/multi_table_test.cpp | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 source/test/multi_table_test.cpp (limited to 'source/test/multi_table_test.cpp') diff --git a/source/test/multi_table_test.cpp b/source/test/multi_table_test.cpp new file mode 100644 index 0000000..ffedb80 --- /dev/null +++ b/source/test/multi_table_test.cpp @@ -0,0 +1,61 @@ +#include "StarMultiTable.hpp" + +#include "gtest/gtest.h" + +using namespace Star; + +TEST(MultiArrayTest, All) { + MultiArray table(10, 12); + table.forEach([](Array2S const& index, int& val) { + val = (index[0] + 1) * index[1]; + }); + + EXPECT_EQ(table(3, 4), 16); + EXPECT_EQ(table(5, 2), 12); + EXPECT_EQ(table(0, 9), 9); + EXPECT_EQ(table(8, 1), 9); + EXPECT_EQ(table(0, 1), 1); + EXPECT_EQ(table(8, 9), 81); + + MultiArray table3(5, 6, 7); + table3.forEach([](Array3S const& index, int& val) { + val = index[0] + index[1] + index[2]; + }); + + EXPECT_EQ(table3(0, 0, 0), 0); + EXPECT_EQ(table3(1, 1, 0), 2); + EXPECT_EQ(table3(2, 0, 2), 4); + EXPECT_EQ(table3(1, 1, 1), 3); + EXPECT_EQ(table3(0, 1, 0), 1); + EXPECT_EQ(table3(2, 2, 2), 6); + EXPECT_EQ(table3(3, 3, 3), 9); + EXPECT_EQ(table3(4, 4, 4), 12); + + table3.forEach({3, 3, 3}, {2, 2, 2}, [](Array3S const&, int& val) { + val = 42; + }); + + EXPECT_EQ(table3(2, 2, 2), 6); + EXPECT_EQ(table3(3, 3, 4), 42); + EXPECT_EQ(table3(4, 4, 4), 42); +} + +TEST(MultiTableTest, All) { + MultiTable2F table; + table.setRanges({MultiTable2F::Range{0, 2, 4, 6, 8, 10}, MultiTable2F::Range{0, 5, 10}}); + table.setInterpolationMode(InterpolationMode::Linear); + table.setBoundMode(BoundMode::Clamp); + table.eval([](Array2F const& index) { + return index[0] * index[1]; + }); + + EXPECT_LT(fabs(table.interpolate({1.0f, 1.0f}) - 1.0f), 0.001f); + EXPECT_LT(fabs(table.interpolate({9.0f, 9.0f}) - 81.0f), 0.001f); + EXPECT_LT(fabs(table.interpolate({6.0f, 10.0f}) - 60.0f), 0.001f); + EXPECT_LT(fabs(table.interpolate({6.0f, 11.0f}) - 60.0f), 0.001f); + EXPECT_LT(fabs(table.get({1, 1}) - 10.0f), 0.001f); + + table.setInterpolationMode(InterpolationMode::HalfStep); + EXPECT_LT(fabs(table.interpolate({0.5f, 0.5f}) - 0.0f), 0.001f); + EXPECT_LT(fabs(table.interpolate({4.0, 4.0}) - 20.0f), 0.001f); +} -- cgit v1.2.3