#include #include struct Square { char file; // engelskt namn på kolumnen int rank; // engelskt namn på raden std::pair diff(Square s) const { return { abs(s.file - file), abs(s.rank - rank) }; } }; #include "catch.hpp" TEST_CASE("Pawn movement") { Chess_Piece pawn { {'A', 2}, new Pawn_Behavior }; pawn.move({'A', 4}); CHECK(pawn.position().rank == 4); pawn.move({'A', 6}); // felaktig CHECK(pawn.position().rank == 4); pawn.move({'B', 4}); CHECK(pawn.position().rank == 4); CHECK(pawn.position().file == 'A'); } TEST_CASE("Rook movement") { Chess_Piece rook { {'A', 1}, new Rook_Behavior }; rook.move({'A', 4}); CHECK(rook.position().rank == 4); rook.move({'D', 4}); CHECK(rook.position().rank == 4); CHECK(rook.position().file == 'D'); rook.move({'B', 5}); // felaktig CHECK(rook.position().rank == 4); } TEST_CASE("Queen movement") { Chess_Piece queen { {'D', 1}, new Queen_Behavior }; queen.move({'A', 4}); CHECK(queen.position().rank == 4); queen.move({'A', 6}); CHECK(queen.position().rank == 6); queen.move({'B', 6}); CHECK(queen.position().rank == 6); CHECK(queen.position().file == 'B'); }