refactor: NCS-22 NCS-23 reworked modules and tests #17
@@ -438,3 +438,33 @@ class PgnParserTest extends AnyFunSuite with Matchers:
|
|||||||
result shouldBe None
|
result shouldBe None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test("importGameContext: valid PGN returns Right with GameContext") {
|
||||||
|
val pgn = """[Event "Test"]
|
||||||
|
[White "A"]
|
||||||
|
[Black "B"]
|
||||||
|
|
||||||
|
1. e2e4 e7e5
|
||||||
|
"""
|
||||||
|
val result = PgnParser.importGameContext(pgn)
|
||||||
|
result.isRight shouldBe true
|
||||||
|
val ctx = result.fold(err => fail(s"Got error: $err"), identity)
|
||||||
|
ctx.moves.length shouldBe 2
|
||||||
|
ctx.turn shouldBe Color.White
|
||||||
|
}
|
||||||
|
|
||||||
|
test("importGameContext: invalid PGN returns Left") {
|
||||||
|
val pgn = "[Event \"T\"]\n\n1. d1d4"
|
||||||
|
val result = PgnParser.importGameContext(pgn)
|
||||||
|
result.isLeft shouldBe true
|
||||||
|
result.fold(msg => msg should include("Illegal or impossible move"), _ => fail("Expected Left"))
|
||||||
|
}
|
||||||
|
|
||||||
|
test("importGameContext: PGN with no moves returns Right with initial position") {
|
||||||
|
val pgn = "[Event \"T\"]\n[White \"A\"]\n[Black \"B\"]\n"
|
||||||
|
val result = PgnParser.importGameContext(pgn)
|
||||||
|
result.isRight shouldBe true
|
||||||
|
val ctx = result.fold(_ => fail(), identity)
|
||||||
|
ctx.moves.isEmpty shouldBe true
|
||||||
|
ctx.board shouldBe Board.initial
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user