Remove debugging traces, now that PGN load/save works.
[tagua/yd.git] / tests / hlvariants / chesswrappedtest.cpp
blobf2826e77a51183ca16058448f9e8e9c0cfcd8100
1 #include "chesswrappedtest.h"
2 #include "hlvariant/tagua_wrapped.h"
3 #include "hlvariant/chess/variant.h"
4 #include "hlvariant/variantdata.h"
6 #define MOVE(x) { MovePtr _tmp = m_pos->getMove(#x); \
7 CPPUNIT_ASSERT(_tmp); \
8 m_pos->move(_tmp); }
10 CPPUNIT_TEST_SUITE_REGISTRATION(ChessWrappedTest);
12 typedef HLVariant::Chess::Variant Chess;
13 typedef VariantData<Chess>::LegalityCheck LegalityCheck;
14 typedef VariantData<Chess>::MoveGenerator MoveGenerator;
15 typedef LegalityCheck::GameState GameState;
16 typedef GameState::Move ChessMove;
17 typedef VariantData<Chess>::Piece ChessPiece;
19 void ChessWrappedTest::setUp() {
20 m_pos = PositionPtr(new HLVariant::WrappedPosition<Chess>(GameState()));
23 void ChessWrappedTest::tearDown() {
24 m_pos.reset();
27 void ChessWrappedTest::test_setup() {
28 m_pos->setup();
30 CPPUNIT_ASSERT(m_pos->get(Point(4, 1)));
31 CPPUNIT_ASSERT_EQUAL(QString("black_pawn"), m_pos->get(Point(4, 1))->name());
33 CPPUNIT_ASSERT(m_pos->get(Point(4, 6)));
34 CPPUNIT_ASSERT(m_pos->get(Point(4, 6))->name() == "white_pawn");
36 CPPUNIT_ASSERT(!m_pos->get(Point(5, 5)));
38 CPPUNIT_ASSERT(m_pos->get(Point(0, 0)));
39 CPPUNIT_ASSERT(m_pos->get(Point(0, 0))->name() == "black_rook");
42 void ChessWrappedTest::test_move() {
43 m_pos->setup();
45 MovePtr move(new HLVariant::WrappedMove<Chess>(ChessMove(Point(4, 6), Point(4, 4))));
46 CPPUNIT_ASSERT(m_pos->testMove(move));
48 m_pos->move(move);
50 CPPUNIT_ASSERT(!m_pos->get(Point(4, 6)));
51 CPPUNIT_ASSERT(m_pos->get(Point(4, 4))->name() == "white_pawn");
53 void ChessWrappedTest::test_movable() {
54 m_pos->setup();
56 TurnTest test;
57 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->movable(test, Point(4, 6)));
58 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->droppable(test, 0));
60 test.setSimplePolicy(0, true);
61 CPPUNIT_ASSERT_EQUAL(Moving, m_pos->movable(test, Point(4, 6)));
62 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->movable(test, Point(5, 5)));
63 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->movable(test, Point(7, 1)));
65 CPPUNIT_ASSERT_EQUAL(Moving, m_pos->droppable(test, 0));
66 CPPUNIT_ASSERT_EQUAL(NoAction, m_pos->droppable(test, 1));
68 test.setSimplePolicy(1, true);
69 CPPUNIT_ASSERT_EQUAL(Premoving, m_pos->movable(test, Point(6, 0)));
72 void ChessWrappedTest::test_san1() {
73 m_pos->setup();
75 MovePtr move(new HLVariant::WrappedMove<Chess>(ChessMove(Point(4, 6), Point(4, 4))));
76 CPPUNIT_ASSERT_EQUAL(QString("e4"), move->SAN(m_pos));
79 void ChessWrappedTest::test_get_move1() {
80 m_pos->setup();
82 MovePtr move = m_pos->getMove("e4");
83 CPPUNIT_ASSERT_EQUAL(QString("e4"), move->SAN(m_pos));
86 void ChessWrappedTest::test_fools_mate() {
87 m_pos->setup();
89 MOVE(f3);
90 MOVE(e5);
91 MOVE(g4);
92 MOVE(Qh4);
94 HLVariant::WrappedPosition<Chess>* pos =
95 dynamic_cast<HLVariant::WrappedPosition<Chess>*>(m_pos.get());
97 CPPUNIT_ASSERT(pos);
99 MoveGenerator generator(pos->inner());
100 CPPUNIT_ASSERT(generator.check(static_cast<ChessPiece::Color>(m_pos->turn())));
101 CPPUNIT_ASSERT(generator.stalled());
104 void ChessWrappedTest::test_check() {
105 m_pos->setup();
107 MOVE(e4);
108 MOVE(d5);
109 MOVE(Bb5);
111 CPPUNIT_ASSERT(!m_pos->getMove("Na6"));
112 CPPUNIT_ASSERT(m_pos->getMove("Nc6"));
117 #undef MOVE