]> git.scottworley.com Git - slidingtile/commitdiff
Board equality operator
authorScott Worley <scottworley@scottworley.com>
Sat, 9 Jan 2016 09:48:08 +0000 (01:48 -0800)
committerScott Worley <scottworley@scottworley.com>
Sat, 9 Jan 2016 09:48:08 +0000 (01:48 -0800)
sliding_tile_lib.cc
sliding_tile_lib.h
sliding_tile_lib_test.cc

index 82402a5a185cd49453f17318705c9a81a805da77..6b42f284690069e13f0f2371aeb6525018fa0674 100644 (file)
@@ -49,6 +49,19 @@ bool Board::is_valid() const {
   return true;
 }
 
+bool Board::operator==(const Board& o) const {
+  for (int i = 0; i < BOARD_SIZE; i++) {
+    if (board[i] != o.board[i]) {
+      return false;
+    }
+  }
+  return true;
+}
+
+bool Board::operator!=(const Board& o) const {
+  return !operator==(o);
+}
+
 std::istream& operator>>(std::istream& is, Board& board) {
   for (int i = 0; i < BOARD_SIZE; i++) {
     if (!is.good()) {
index c92676175647c664baf9d9b804ecdda54b72beb5..300ecdd6de243964e2bd066eec37bdbfa5b060ed 100644 (file)
@@ -20,6 +20,8 @@ struct Board {
   InvertedBoard invert() const;
   int distance(const Board& o) const;
   int distance(const InvertedBoard& invo) const;
+  bool operator==(const Board& o) const;
+  bool operator!=(const Board& o) const;
 };
 std::istream& operator>>(std::istream& is, Board& board);
 std::ostream& operator<<(std::ostream& os, const Board& board);
index 8e6cb89b96b1e8b58f0fca65f6994fd54da2964e..a27361da85126602bbfda6b3ee22d42e41258c2c 100644 (file)
@@ -37,6 +37,22 @@ TEST(Step, Adjacency) {
   }
 }
 
+TEST(Board, Equal) {
+  Board b1{{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0}};
+  Board b2{{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0}};
+  EXPECT_TRUE(b1 == b2);
+  EXPECT_FALSE(b1 != b2);
+  EXPECT_EQ(b1, b2);
+}
+
+TEST(Board, NotEqual) {
+  Board b1{{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0}};
+  Board b2{{1,2,3,4,5,6,7,8,10,9,11,12,13,14,15,0}};
+  EXPECT_FALSE(b1 == b2);
+  EXPECT_TRUE(b1 != b2);
+  EXPECT_NE(b1, b2);
+}
+
 TEST(Board, GoodInput) {
   std::istringstream is{"15,14,9,13,3,1,12,8,0,11,6,4,7,5,2,10"};
   Board b;