]>
Commit | Line | Data |
---|---|---|
e86755d7 SW |
1 | #include "sliding_tile_lib.h" |
2 | ||
3 | #include "gtest/gtest.h" | |
4 | #include "gmock/gmock.h" | |
5 | #include <vector> | |
6 | ||
7 | TEST(Adjacency, Adjacency) { | |
8 | const signed char LEFT = -1; | |
9 | const signed char RIGHT = +1; | |
10 | const signed char UP = -BOARD_DIM; | |
11 | const signed char DOWN = +BOARD_DIM; | |
12 | for (int i = 0; i < BOARD_SIZE; i++) { | |
13 | SCOPED_TRACE(i); | |
14 | std::vector<signed char> expected; | |
15 | if (i >= BOARD_DIM) { | |
16 | expected.push_back(i + UP); | |
17 | } | |
18 | if (i < BOARD_SIZE - BOARD_DIM) { | |
19 | expected.push_back(i + DOWN); | |
20 | } | |
21 | if (i % BOARD_DIM != 0) { | |
22 | expected.push_back(i + LEFT); | |
23 | } | |
24 | if (i % BOARD_DIM != BOARD_DIM - 1) { | |
25 | expected.push_back(i + RIGHT); | |
26 | } | |
27 | ||
28 | std::vector<signed char> actual; | |
29 | for (int j = 0; adjacent[i][j] >= 0; j++) { | |
30 | actual.push_back(adjacent[i][j]); | |
31 | } | |
32 | EXPECT_THAT(actual, testing::UnorderedElementsAreArray(expected)); | |
33 | } | |
34 | } | |
32688d85 SW |
35 | |
36 | TEST(Board, GoodInput) { | |
37 | std::istringstream is{"15,14,9,13,3,1,12,8,0,11,6,4,7,5,2,10"}; | |
38 | Board b; | |
39 | is >> b; | |
40 | EXPECT_FALSE(is.fail()); | |
41 | EXPECT_TRUE(is.eof()); | |
42 | EXPECT_THAT(b, testing::ElementsAreArray({15,14,9,13,3,1,12,8,0,11,6,4,7,5,2,10})); | |
43 | } | |
44 | ||
45 | TEST(Board, ShortInput) { | |
46 | std::istringstream is{"15,14,9,13,3,1,12,8,0,11,6,4,7,5,2"}; | |
47 | Board b; | |
48 | is >> b; | |
49 | EXPECT_TRUE(is.fail()); | |
50 | } | |
51 | ||
52 | TEST(Board, NonNumericInput) { | |
53 | std::istringstream is{"15,14,foo,13,3,1,12,8,0,11,6,4,7,5,2,10"}; | |
54 | Board b; | |
55 | is >> b; | |
56 | EXPECT_TRUE(is.fail()); | |
57 | } |