X-Git-Url: http://git.scottworley.com/slidingtile/blobdiff_plain/2bf3412d1ed0c9da3c83d9ca276a7c91e4356d6a..e86755d75f4040ae6619702a6501325ea81b03e1:/sliding_tile_lib_test.cc diff --git a/sliding_tile_lib_test.cc b/sliding_tile_lib_test.cc new file mode 100644 index 0000000..2050896 --- /dev/null +++ b/sliding_tile_lib_test.cc @@ -0,0 +1,34 @@ +#include "sliding_tile_lib.h" + +#include "gtest/gtest.h" +#include "gmock/gmock.h" +#include + +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 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 actual; + for (int j = 0; adjacent[i][j] >= 0; j++) { + actual.push_back(adjacent[i][j]); + } + EXPECT_THAT(actual, testing::UnorderedElementsAreArray(expected)); + } +}