diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
commit | 6352e8e3196f78388b6c771073f9e03eaa612673 (patch) | |
tree | e23772f79a7fbc41bc9108951e9e136857484bf4 /source/test/multi_table_test.cpp | |
parent | 6741a057e5639280d85d0f88ba26f000baa58f61 (diff) |
everything everywhere
all at once
Diffstat (limited to 'source/test/multi_table_test.cpp')
-rw-r--r-- | source/test/multi_table_test.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
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<int, 2> 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<int, 3> 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); +} |