summaryrefslogtreecommitdiff
path: root/tests/fen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fen.cpp')
-rw-r--r--tests/fen.cpp99
1 files changed, 62 insertions, 37 deletions
diff --git a/tests/fen.cpp b/tests/fen.cpp
index 47a148b..7441786 100644
--- a/tests/fen.cpp
+++ b/tests/fen.cpp
@@ -3,48 +3,36 @@
using namespace chessarbiter;
-TEST_CASE("Serializer", "[fen/serialize]") {
+TEST_CASE("Parse", "[fen/parse]") {
FEN f;
- f.board = "p p p"
- "p p"
- " "
- "QQQQQQQQ"
- "kpkpkpkp"
- " "
- "p p r b "
- " R";
- REQUIRE(FENParser::Serialize(f) ==
- "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R w KQkq - 0 1");
-
- f.white_castle_short = false;
- f.white_castle_long = false;
- f.black_castle_short = false;
- f.black_castle_long = false;
- REQUIRE(FENParser::Serialize(f) ==
- "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R w - - 0 1");
+ // Start game FEN
+ REQUIRE_NOTHROW(FENParser::Parse(
+ "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"));
- f.en_passant = "a3";
- REQUIRE(FENParser::Serialize(f) ==
- "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R w - a3 0 1");
-
- f.player = true;
- REQUIRE(FENParser::Serialize(f) ==
- "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R b - a3 0 1");
+ // Throw tests
+ REQUIRE_THROWS_AS(
+ FENParser::Parse(
+ "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR z KQkq - 0 1"),
+ InvalidFEN);
+ REQUIRE_THROWS_AS(
+ FENParser::Parse(
+ "rnbqkbnr/ppppppp2/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"),
+ InvalidFEN);
+ REQUIRE_THROWS_AS(
+ FENParser::Parse(
+ "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w pQkq - 0 1"),
+ InvalidFEN);
+ REQUIRE_THROWS_AS(
+ FENParser::Parse("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP w KQkq - 0 1"),
+ InvalidFEN);
+ REQUIRE_THROWS_AS(
+ FENParser::Parse(
+ "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 1a 1"),
+ InvalidFEN);
- f.halfmove = 5;
- REQUIRE(FENParser::Serialize(f) ==
- "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R b - a3 5 1");
-
- f.move = 5;
- REQUIRE(FENParser::Serialize(f) ==
- "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R b - a3 5 5");
-}
-
-TEST_CASE("Parse", "[fen/parse]") {
- FEN f;
+ // Tests
f = FENParser::Parse(
"p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R b - a3 5 5");
-
REQUIRE(f.board == "p p p"
"p p"
" "
@@ -89,3 +77,40 @@ TEST_CASE("Parse", "[fen/parse]") {
CHECK(f.black_castle_short == true);
CHECK(f.black_castle_long == true);
}
+
+TEST_CASE("Serializer", "[fen/serialize]") {
+ FEN f;
+ f.board = "p p p"
+ "p p"
+ " "
+ "QQQQQQQQ"
+ "kpkpkpkp"
+ " "
+ "p p r b "
+ " R";
+ REQUIRE(FENParser::Serialize(f) ==
+ "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R w KQkq - 0 1");
+
+ f.white_castle_short = false;
+ f.white_castle_long = false;
+ f.black_castle_short = false;
+ f.black_castle_long = false;
+ REQUIRE(FENParser::Serialize(f) ==
+ "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R w - - 0 1");
+
+ f.en_passant = "a3";
+ REQUIRE(FENParser::Serialize(f) ==
+ "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R w - a3 0 1");
+
+ f.player = true;
+ REQUIRE(FENParser::Serialize(f) ==
+ "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R b - a3 0 1");
+
+ f.halfmove = 5;
+ REQUIRE(FENParser::Serialize(f) ==
+ "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R b - a3 5 1");
+
+ f.move = 5;
+ REQUIRE(FENParser::Serialize(f) ==
+ "p4p1p/p6p/8/QQQQQQQQ/kpkpkpkp/8/p1p1r1b1/7R b - a3 5 5");
+}