]> git.scottworley.com Git - slidingtile/commitdiff
operator< for Board
authorScott Worley <scottworley@scottworley.com>
Sat, 9 Jan 2016 10:22:49 +0000 (02:22 -0800)
committerScott Worley <scottworley@scottworley.com>
Sat, 9 Jan 2016 10:22:49 +0000 (02:22 -0800)
sliding_tile_lib.cc
sliding_tile_lib.h
sliding_tile_lib_test.cc

index 6b42f284690069e13f0f2371aeb6525018fa0674..e4f2f12723591ac320a56813eb8b3b306eaace30 100644 (file)
@@ -62,6 +62,17 @@ bool Board::operator!=(const Board& o) const {
   return !operator==(o);
 }
 
+bool Board::operator<(const Board& o) const {
+  for (int i = 0; i < BOARD_SIZE; i++) {
+    if (board[i] < o.board[i]) {
+      return true;
+    } else if (board[i] > o.board[i]) {
+      return false;
+    }
+  }
+  return false;
+}
+
 std::istream& operator>>(std::istream& is, Board& board) {
   for (int i = 0; i < BOARD_SIZE; i++) {
     if (!is.good()) {
index 300ecdd6de243964e2bd066eec37bdbfa5b060ed..772817ea5ea57d84d28aafa6f6d0a9d607e39187 100644 (file)
@@ -22,6 +22,7 @@ struct Board {
   int distance(const InvertedBoard& invo) const;
   bool operator==(const Board& o) 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 54d7db627acada21e6a1d3905aefe2f6fea35dbd..5597a1b3bcb1b638fec2b1041a4cccdd10336177 100644 (file)
@@ -42,6 +42,8 @@ TEST(Board, Equal) {
   EXPECT_TRUE(b1 == b2);
   EXPECT_FALSE(b1 != b2);
   EXPECT_EQ(b1, b2);
+  EXPECT_FALSE(b1 < b2);
+  EXPECT_FALSE(b2 < b1);
 }
 
 TEST(Board, NotEqual) {
@@ -50,6 +52,8 @@ TEST(Board, NotEqual) {
   EXPECT_FALSE(b1 == b2);
   EXPECT_TRUE(b1 != b2);
   EXPECT_NE(b1, b2);
+  EXPECT_TRUE(b1 < b2);
+  EXPECT_FALSE(b2 < b1);
 }
 
 TEST(Board, GoodInput) {