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); \
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() {
27 void ChessWrappedTest::test_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() {
45 MovePtr
move(new HLVariant::WrappedMove
<Chess
>(ChessMove(Point(4, 6), Point(4, 4))));
46 CPPUNIT_ASSERT(m_pos
->testMove(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() {
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() {
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() {
82 MovePtr move
= m_pos
->getMove("e4");
83 CPPUNIT_ASSERT_EQUAL(QString("e4"), move
->SAN(m_pos
));
86 void ChessWrappedTest::test_fools_mate() {
94 HLVariant::WrappedPosition
<Chess
>* pos
=
95 dynamic_cast<HLVariant::WrappedPosition
<Chess
>*>(m_pos
.get());
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() {
111 CPPUNIT_ASSERT(!m_pos
->getMove("Na6"));
112 CPPUNIT_ASSERT(m_pos
->getMove("Nc6"));