Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/test/multi_table_test.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /source/test/multi_table_test.cpp
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'source/test/multi_table_test.cpp')
-rw-r--r--source/test/multi_table_test.cpp61
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);
+}