Beispiel #1
0
    /**
     * @depends testParsePgn
     */
    public function testValidatePgn()
    {
        $chess = new ChessPublicator();
        $parsed = Chess::validatePgn('1.e4 e5some failed string 2.Nf3');
        $this->assertFalse($parsed);
        $parsed = $chess->validatePgn(<<<EOD
[Event "Earl tourn"]
[Site "?"]
1.e4 e5 2.Nf3 oke failed
EOD
);
        $this->assertFalse($parsed);
        $parsed = Chess::validatePgn(<<<EOD
[Event "Earl tourn"]
oke failed here
[Site "?"]
1.e4 e5 2.Nf3
EOD
);
        $this->assertFalse($parsed);
        $parsed = Chess::validatePgn(<<<EOD
[Event "Earl tourn"]
[Site "?"]
1.e4 e5 2.Nf3 1-0
EOD
);
        $this->assertTrue($parsed);
        $parsed = Chess::validatePgn(<<<EOD
[Event "Earl tourn"]
[Site "?"]
1.e4 e5 2.Nf3 1/2-1/2
EOD
);
        $this->assertTrue($parsed);
        $parsed = Chess::validatePgn('1.e4 e5 2.Nf3', ['verbose' => true]);
        $this->assertContains('e4', $parsed['moves']);
        $this->assertContains('e5', $parsed['moves']);
        $this->assertContains('Nf3', $parsed['moves']);
        $this->assertSame($parsed['game']->fen(), 'rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2');
        $parsed = Chess::validatePgn(<<<EOD
[Event "Earl tourn"]
[Site "?"]
1.e4 e5 2.Nf3
EOD
, ['verbose' => true]);
        $this->assertArraySubset(['Event' => 'Earl tourn'], $parsed['header']);
        $this->assertArraySubset(['Site' => '?'], $parsed['header']);
        $this->assertContains('e4', $parsed['moves']);
        $this->assertContains('e5', $parsed['moves']);
        $this->assertContains('Nf3', $parsed['moves']);
        $this->assertSame($parsed['game']->fen(), 'rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2');
    }