aboutsummaryrefslogtreecommitdiff
path: root/tests/valid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/valid.cpp')
-rw-r--r--tests/valid.cpp95
1 files changed, 93 insertions, 2 deletions
diff --git a/tests/valid.cpp b/tests/valid.cpp
index 517f7eb..24e546d 100644
--- a/tests/valid.cpp
+++ b/tests/valid.cpp
@@ -61,7 +61,7 @@ TEST_CASE("Valid PGN", "[valid/pgn1]") {
CHECK(m_backup->GetHalfMoveAt(4)->move == "c4");
CHECK(pgn.GetResult() == "*");
- REQUIRE_THROWS_AS(pgn.ParseNextGame(),NoGameFound);
+ REQUIRE_THROWS_AS(pgn.ParseNextGame(), NoGameFound);
}
TEST_CASE("Valid PGN", "[valid/pgn2]") {
@@ -85,5 +85,96 @@ TEST_CASE("Valid PGN", "[valid/pgn2]") {
CHECK(var->move == "dxc4");
CHECK(var->GetHalfMoveAt(1)->move == "O-O");
}
- REQUIRE_THROWS_AS(pgn.ParseNextGame(),NoGameFound);
+ REQUIRE_THROWS_AS(pgn.ParseNextGame(), NoGameFound);
+}
+
+TEST_CASE("Valid PGN", "[valid/pgn3]") {
+ PGN pgn;
+ REQUIRE_NOTHROW(pgn.FromFile("pgn_files/valid/pgn3.pgn"));
+ REQUIRE_NOTHROW(pgn.ParseNextGame());
+ REQUIRE_NOTHROW(pgn.STRCheck());
+
+ REQUIRE(pgn.HasTag("Event"));
+ REQUIRE(pgn.HasTag("Site"));
+ REQUIRE(pgn.HasTag("Date"));
+ REQUIRE(pgn.HasTag("Round"));
+ REQUIRE(pgn.HasTag("White"));
+ REQUIRE(pgn.HasTag("Black"));
+ REQUIRE(pgn.HasTag("Result"));
+ REQUIRE(pgn.HasTag("ECO"));
+ REQUIRE(pgn.HasTag("Annotator"));
+ REQUIRE(pgn.HasTag("PlyCount"));
+
+ REQUIRE(pgn.GetTagValue("Event") == "Hastings");
+ REQUIRE(pgn.GetTagValue("Site") == "?");
+ REQUIRE(pgn.GetTagValue("Date") == "1999.01.??");
+ REQUIRE(pgn.GetTagValue("Round") == "8");
+ REQUIRE(pgn.GetTagValue("White") == "Plaskett, James");
+ REQUIRE(pgn.GetTagValue("Black") == "Shipov, Sergei");
+ REQUIRE(pgn.GetTagValue("Result") == "1-0");
+ REQUIRE(pgn.GetTagValue("ECO") == "B23");
+ REQUIRE(pgn.GetTagValue("Annotator") == "Hartwig,Th");
+ REQUIRE(pgn.GetTagValue("PlyCount") == "53");
+
+ REQUIRE(pgn.GetResult() == "1-0");
+
+ HalfMove *m = new HalfMove();
+ pgn.GetMoves(m);
+
+ REQUIRE(m->GetLength() == 53);
+
+ SECTION("Comments") {
+ REQUIRE(m->comment ==
+ "This week I have to apologise for not providing the sort of "
+ "in-depth annotations you may be used to on this site. My excuse "
+ "is that I'm very busy playing chess at the U.S. Open! However, "
+ "hopefully I have made up for it by choosing an excellent game, so "
+ "it will still be worth your time to take a look. ");
+ REQUIRE(m->GetHalfMoveAt(2)->comment ==
+ "Certainly an annoying move order against Najdorf junkies.");
+ REQUIRE(m->GetHalfMoveAt(19)->comment ==
+ "10... Nh6 was probably better. Far from stopping white's "
+ "kingside play, this weakens e6, forming the basis for some nice "
+ "knight maneuvers in the next few moves.");
+ REQUIRE(m->GetHalfMoveAt(22)->comment ==
+ "The knights are homing in on the weak e6 and b6 squares.");
+ REQUIRE(
+ m->GetHalfMoveAt(52)->comment ==
+ "A very nice game. Black was made to look like a complete beginner.");
+ REQUIRE(m->GetHalfMoveAt(44)->variations[0]->comment ==
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
+ "eiusmod "
+ "tempor incididunt ut labore et dolore magna aliqua. ");
+ }
+
+ SECTION("NAGs") {
+ REQUIRE(m->GetHalfMoveAt(2)->NAG == "$1");
+ REQUIRE(m->GetHalfMoveAt(8)->NAG == "$5");
+ REQUIRE(m->GetHalfMoveAt(8)->variations[0]->NAG == "$14");
+ REQUIRE(m->GetHalfMoveAt(19)->NAG == "$2");
+ REQUIRE(m->GetHalfMoveAt(22)->NAG == "$1");
+ REQUIRE(m->GetHalfMoveAt(23)->variations[0]->NAG == "$4");
+ REQUIRE(m->GetHalfMoveAt(23)->variations[0]->GetHalfMoveAt(3)->NAG == "$1");
+ REQUIRE(m->GetHalfMoveAt(23)->variations[0]->GetHalfMoveAt(9)->NAG ==
+ "$18");
+ REQUIRE(m->GetHalfMoveAt(24)->NAG == "$1");
+ REQUIRE(m->GetHalfMoveAt(24)->variations[0]->GetHalfMoveAt(5)->NAG ==
+ "$13");
+ REQUIRE(m->GetHalfMoveAt(30)->NAG == "$1");
+ REQUIRE(m->GetHalfMoveAt(31)->variations[0]->NAG == "$2");
+ REQUIRE(m->GetHalfMoveAt(31)->variations[0]->GetHalfMoveAt(3)->NAG ==
+ "$18");
+ REQUIRE(m->GetHalfMoveAt(32)->NAG == "$1");
+ REQUIRE(m->GetHalfMoveAt(37)->variations[0]->GetHalfMoveAt(3)->NAG ==
+ "$18");
+ REQUIRE(m->GetHalfMoveAt(38)->NAG == "$1");
+ REQUIRE(m->GetHalfMoveAt(41)->variations[0]->GetHalfMoveAt(1)->NAG ==
+ "$18");
+ REQUIRE(m->GetHalfMoveAt(44)->NAG == "$1");
+ REQUIRE(m->GetHalfMoveAt(44)->variations[0]->NAG == "$4");
+ REQUIRE(m->GetHalfMoveAt(44)->variations[0]->MainLine->NAG == "$13");
+ REQUIRE(m->GetHalfMoveAt(45)->variations[0]->GetHalfMoveAt(3)->NAG ==
+ "$18");
+ REQUIRE(m->GetHalfMoveAt(52)->variations[0]->MainLine->variations[0]->MainLine->NAG == "$18");
+ }
}