aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-01-25 16:51:37 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-01-25 16:51:37 +0100
commite063e1453c611ac0d862ece2d2797582573c801f (patch)
tree5a9cb912724b67d4075cb67acf0b57a3feee6c46 /tests
parent773d93b02e078c83b74d2080aafe56828be6a7c8 (diff)
Improve parser
Diffstat (limited to 'tests')
-rw-r--r--tests/tests.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/tests/tests.cpp b/tests/tests.cpp
index f376f33..ea79be8 100644
--- a/tests/tests.cpp
+++ b/tests/tests.cpp
@@ -6,6 +6,7 @@ using namespace pgnp;
TEST_CASE("Valid PGN", "[valid/pgn1]") {
PGN pgn;
REQUIRE_NOTHROW(pgn.FromFile("pgn_files/valid/pgn1.pgn"));
+ REQUIRE_NOTHROW(pgn.ParseNextGame());
REQUIRE_THROWS(pgn.STRCheck());
HalfMove *m = new HalfMove();
@@ -33,7 +34,7 @@ TEST_CASE("Valid PGN", "[valid/pgn1]") {
}
SECTION("Main line color checks") {
- m=m_backup;
+ m = m_backup;
CHECK_FALSE(m->isBlack);
m = m->MainLine;
@@ -60,26 +61,42 @@ TEST_CASE("Valid PGN", "[valid/pgn1]") {
CHECK(m_backup->GetHalfMoveAt(4)->move == "c4");
CHECK(pgn.GetResult() == "*");
+ REQUIRE_THROWS_AS(pgn.ParseNextGame(),NoGameFound);
}
TEST_CASE("Valid PGN", "[valid/pgn2]") {
PGN pgn;
REQUIRE_NOTHROW(pgn.FromFile("pgn_files/valid/pgn2.pgn"));
+ REQUIRE_NOTHROW(pgn.ParseNextGame());
+
REQUIRE_THROWS(pgn.STRCheck());
HalfMove *m = new HalfMove();
pgn.GetMoves(m);
REQUIRE(m->GetLength() == 66);
CHECK(pgn.GetResult() == "0-1");
CHECK(m->comment == " A00 Hungarian Opening ");
- CHECK(m->GetHalfMoveAt(7)->comment == " (0.22 → 0.74) Inaccuracy. dxc4 was best. ");
+ CHECK(m->GetHalfMoveAt(65)->comment == " White resigns. ");
+ CHECK(m->GetHalfMoveAt(7)->comment ==
+ " (0.22 → 0.74) Inaccuracy. dxc4 was best. ");
+
+ SECTION("Check Variations") {
+ HalfMove *var = m->GetHalfMoveAt(7)->variations[0];
+ REQUIRE(var->GetLength() == 10);
+ CHECK(var->move == "dxc4");
+ CHECK(var->GetHalfMoveAt(1)->move == "O-O");
+ }
+ REQUIRE_THROWS_AS(pgn.ParseNextGame(),NoGameFound);
}
TEST_CASE("Seven Tag Roster", "[std/pgn1]") {
PGN pgn;
REQUIRE_NOTHROW(pgn.FromFile("pgn_files/str/pgn1.pgn"));
+ REQUIRE_NOTHROW(pgn.ParseNextGame());
+
REQUIRE_NOTHROW(pgn.STRCheck());
HalfMove *m = new HalfMove();
pgn.GetMoves(m);
REQUIRE(m->GetLength() == 85);
CHECK(pgn.GetResult() == "1/2-1/2");
+ REQUIRE_THROWS_AS(pgn.ParseNextGame(),NoGameFound);
}