Created
November 8, 2010 22:49
-
-
Save wookay/668418 to your computer and use it in GitHub Desktop.
Chess Test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// TestChess.m | |
// Chess | |
// | |
// Created by wookyoung noh on 08/11/10. | |
// Copyright 2010 factorcat. All rights reserved. | |
// | |
#import "TestChess.h" | |
#import "ChessBoard.h" | |
#import "ChessUnit.h" | |
#import "UnitTest.h" | |
#import "ChessManager.h" | |
#import "Logger.h" | |
#import "GeometryExt.h" | |
@implementation TestChess | |
-(void) test_castling { | |
[CHESSMAN loadGame]; | |
kMoveType moveResult; | |
ChessUnit* blackPawn; | |
blackPawn = [CHESSMAN.board unitAt:CGPointMake(5,2)]; | |
moveResult = [CHESSMAN.board move:blackPawn To:CGPointMake(5,4)]; | |
ChessUnit* blackBishop = [CHESSMAN.board unitAt:CGPointMake(6,1)]; | |
moveResult = [CHESSMAN.board move:blackBishop To:CGPointMake(1,6)]; | |
assert_equal(kMoveSuccess, moveResult); | |
ChessUnit* blackKnight = [CHESSMAN.board unitAt:CGPointMake(7,1)]; | |
assert_equal(UNITTYPE_KNIGHT, [blackKnight unitType]); | |
assert_equal(3, [CHESSMAN.board movablePositions:blackKnight].count); | |
moveResult = [CHESSMAN.board move:blackKnight To:CGPointMake(6,3)]; | |
assert_equal(kMoveSuccess, moveResult); | |
blackPawn = [CHESSMAN.board unitAt:CGPointMake(8,2)]; | |
moveResult = [CHESSMAN.board move:blackPawn To:CGPointMake(8,4)]; | |
ChessUnit* blackRook = [CHESSMAN.board unitAt:CGPointMake(8,1)]; | |
assert_equal(4, [CHESSMAN.board movablePositions:blackRook].count); | |
ChessUnit* blackKing = [CHESSMAN.board unitAt:CGPointMake(5,1)]; | |
assert_equal(3, [CHESSMAN.board movablePositions:blackKing].count); | |
moveResult = [CHESSMAN.board move:blackKing To:CGPointMake(7,1)]; | |
assert_equal(kMoveCastling, moveResult); | |
log_info(@"CHESSMAN panInfo %@", [CHESSMAN panInfo]); | |
} | |
-(void) test_promotion { | |
[CHESSMAN loadGame]; | |
ChessUnit* pawn = [CHESSMAN.board unitAt:CGPointMake(7, 7)]; | |
assert_equal(UNITTYPE_PAWN, [pawn unitType]); | |
assert_equal(2, [CHESSMAN.board movablePositions:pawn].count); | |
assert_equal(0, [CHESSMAN.board targetablePositions:pawn].count); | |
kMoveType moveResult; | |
kAttackType attackResult; | |
moveResult = [CHESSMAN.board move:pawn To:CGPointMake(7,7)]; | |
assert_equal(kMoveFailed, moveResult); | |
moveResult = [CHESSMAN.board move:pawn To:CGPointMake(6,7)]; | |
assert_equal(kMoveFailed, moveResult); | |
moveResult = [CHESSMAN.board move:pawn To:CGPointMake(7,5)]; | |
assert_equal(kMoveSuccess, moveResult); | |
assert_equal(1, [CHESSMAN.board movablePositions:pawn].count); | |
moveResult = [CHESSMAN.board move:pawn To:CGPointMake(7,3)]; | |
assert_equal(kMoveFailed, moveResult); | |
moveResult = [CHESSMAN.board move:pawn To:CGPointMake(7,4)]; | |
assert_equal(kMoveSuccess, moveResult); | |
ChessUnit* blackPawn = [CHESSMAN.board unitAt:CGPointMake(6,2)]; | |
moveResult = [CHESSMAN.board move:blackPawn To:CGPointMake(6,4)]; | |
assert_equal(kMoveSuccess, moveResult); | |
assert_false([CHESSMAN.board isDeadUnit:blackPawn]); | |
assert_equal(1, [CHESSMAN.board targetablePositions:pawn].count); | |
attackResult = [CHESSMAN.board attack:pawn To:CGPointMake(6,3)]; | |
assert_equal(kAttackEnPassan, attackResult); | |
assert_true([CHESSMAN.board isDeadUnit:blackPawn]); | |
assert_equal(2, [CHESSMAN.board targetablePositions:pawn].count); | |
assert_equal(1, [CHESSMAN.board movablePositions:pawn].count); | |
blackPawn = [CHESSMAN.board unitAt:CGPointMake(5,2)]; | |
moveResult = [CHESSMAN.board move:blackPawn To:CGPointMake(5,4)]; | |
ChessUnit* blackBishop = [CHESSMAN.board unitAt:CGPointMake(6,1)]; | |
moveResult = [CHESSMAN.board move:blackBishop To:CGPointMake(1,6)]; | |
assert_equal(kMoveSuccess, moveResult); | |
moveResult = [CHESSMAN.board move:pawn To:CGPointMake(6,2)]; | |
moveResult = [CHESSMAN.board move:pawn To:CGPointMake(6,1)]; | |
[CHESSMAN.board promotion:pawn to:UNITTYPE_QUEEN]; | |
assert_equal(UNITTYPE_QUEEN, [pawn unitType]); | |
moveResult = [CHESSMAN.board move:pawn To:CGPointMake(6,6)]; | |
moveResult = [CHESSMAN.board move:pawn To:CGPointMake(4,6)]; | |
assert_nil([CHESSMAN.board unitAt:CGPointMake(6,1)]); | |
//log_info(@"CHESSMAN panInfo %@", [CHESSMAN panInfo]); | |
} | |
-(void) test_unit { | |
ChessUnit* pawn = [ChessUnit unitWithName:@"P" nation:NATION_WHITE]; | |
assert_equal(UNITTYPE_PAWN, [pawn unitType]); | |
assert_false([CHESSMAN.board hasUnitAt:CGPointMake(5, 5)]); | |
[CHESSMAN.board setPosition:pawn To:CGPointMake(5,5)]; | |
assert_true([CHESSMAN.board hasUnitAt:CGPointMake(5, 5)]); | |
[CHESSMAN.board popUnit:CGPointMake(5,5)]; | |
assert_false([CHESSMAN.board hasUnitAt:CGPointMake(5, 5)]); | |
} | |
@end |
Author
wookay
commented
Nov 8, 2010
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment