]> git.scottworley.com Git - slidingtile/blobdiff - sliding_tile_lib_test.cc
Switch from Go to C++
[slidingtile] / sliding_tile_lib_test.cc
diff --git a/sliding_tile_lib_test.cc b/sliding_tile_lib_test.cc
new file mode 100644 (file)
index 0000000..2050896
--- /dev/null
@@ -0,0 +1,34 @@
+#include "sliding_tile_lib.h"
+
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include <vector>
+
+TEST(Adjacency, Adjacency) {
+       const signed char LEFT  = -1;
+       const signed char RIGHT = +1;
+       const signed char UP    = -BOARD_DIM;
+       const signed char DOWN  = +BOARD_DIM;
+  for (int i = 0; i < BOARD_SIZE; i++) {
+    SCOPED_TRACE(i);
+    std::vector<signed char> expected;
+         if (i >= BOARD_DIM) {
+                 expected.push_back(i + UP);
+         }
+         if (i < BOARD_SIZE - BOARD_DIM) {
+                 expected.push_back(i + DOWN);
+         }
+         if (i % BOARD_DIM != 0) {
+                 expected.push_back(i + LEFT);
+         }
+         if (i % BOARD_DIM != BOARD_DIM - 1) {
+                 expected.push_back(i + RIGHT);
+         }
+
+    std::vector<signed char> actual;
+    for (int j = 0; adjacent[i][j] >= 0; j++) {
+      actual.push_back(adjacent[i][j]);
+    }
+    EXPECT_THAT(actual, testing::UnorderedElementsAreArray(expected));
+  }
+}