Added a simple SAN test.
[tagua/yd.git] / tests / hlvariants / chesswrappedtest.cpp
blob31e175660e7e0c4f36727ea1c36c377310f6af2a
1 #include "chesswrappedtest.h"
2 #include "prototype/tagua_wrapped.h"
3 #include "prototype/chess/variant.h"
5 CPPUNIT_TEST_SUITE_REGISTRATION(ChessWrappedTest);
7 typedef HLVariant::Chess::Variant Chess;
8 typedef Chess::LegalityCheck LegalityCheck;
9 typedef LegalityCheck::GameState GameState;
10 typedef GameState::Move ChessMove;
12 void ChessWrappedTest::setUp() {
13 m_pos = PositionPtr(new HLVariant::WrappedPosition<Chess>(GameState()));
16 void ChessWrappedTest::tearDown() {
17 m_pos.reset();
20 void ChessWrappedTest::test_setup() {
21 m_pos->setup();
23 CPPUNIT_ASSERT(m_pos->get(Point(4, 6)));
24 CPPUNIT_ASSERT(m_pos->get(Point(4, 6))->name() == "white_pawn");
26 CPPUNIT_ASSERT(!m_pos->get(Point(5, 5)));
28 CPPUNIT_ASSERT(m_pos->get(Point(0, 0)));
29 CPPUNIT_ASSERT(m_pos->get(Point(0, 0))->name() == "black_rook");
32 void ChessWrappedTest::test_move() {
33 m_pos->setup();
35 MovePtr move(new HLVariant::WrappedMove<Chess>(ChessMove(Point(4, 6), Point(4, 4))));
36 CPPUNIT_ASSERT(m_pos->testMove(move));
38 m_pos->move(move);
40 CPPUNIT_ASSERT(!m_pos->get(Point(4, 6)));
41 CPPUNIT_ASSERT(m_pos->get(Point(4, 4))->name() == "white_pawn");
44 void ChessWrappedTest::test_movable() {
45 m_pos->setup();
47 TurnTest test;
48 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->movable(test, Point(4, 6)));
49 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->droppable(test, 0));
51 test.setSimplePolicy(0, true);
52 CPPUNIT_ASSERT_EQUAL(Moving, m_pos->movable(test, Point(4, 6)));
53 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->movable(test, Point(5, 5)));
54 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->movable(test, Point(7, 1)));
56 CPPUNIT_ASSERT_EQUAL(Moving, m_pos->droppable(test, 0));
57 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->droppable(test, 1));
59 test.setSimplePolicy(1, true);
60 CPPUNIT_ASSERT_EQUAL(Premoving, m_pos->movable(test, Point(6, 0)));
63 void ChessWrappedTest::test_san1() {
64 m_pos->setup();
66 MovePtr move(new HLVariant::WrappedMove<Chess>(ChessMove(Point(4, 6), Point(4, 4))));
67 CPPUNIT_ASSERT_EQUAL(QString("e4"), move->SAN(m_pos));