chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Fri, 26 Jul 2013 17:14:25 +0200
branchchess
changeset 34 1ebd52ae8ccb
parent 30 a46846115b83
child 35 7ae0125d57b2
permissions -rw-r--r--
Show accessible squares when a figure is selected
jtulach@26
     1
/**
jtulach@26
     2
 * The MIT License (MIT)
jtulach@26
     3
 *
jtulach@26
     4
 * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
jtulach@26
     5
 *
jtulach@26
     6
 * Permission is hereby granted, free of charge, to any person obtaining a copy
jtulach@26
     7
 * of this software and associated documentation files (the "Software"), to deal
jtulach@26
     8
 * in the Software without restriction, including without limitation the rights
jtulach@26
     9
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
jtulach@26
    10
 * copies of the Software, and to permit persons to whom the Software is
jtulach@26
    11
 * furnished to do so, subject to the following conditions:
jtulach@26
    12
 *
jtulach@26
    13
 * The above copyright notice and this permission notice shall be included in
jtulach@26
    14
 * all copies or substantial portions of the Software.
jtulach@26
    15
 *
jtulach@26
    16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
jtulach@26
    17
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
jtulach@26
    18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
jtulach@26
    19
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
jtulach@26
    20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
jtulach@26
    21
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
jtulach@26
    22
 * THE SOFTWARE.
jtulach@26
    23
 */
jtulach@26
    24
package org.apidesign.html.demo.chess;
jtulach@26
    25
jtulach@30
    26
import org.apidesign.html.demo.chess.BoardModel.ColorType;
jtulach@34
    27
import org.apidesign.html.demo.chess.BoardModel.PieceType;
jtulach@26
    28
import static org.testng.Assert.*;
jtulach@26
    29
import org.testng.annotations.Test;
jtulach@26
    30
jtulach@26
    31
/**
jtulach@26
    32
 *
jtulach@26
    33
 * @author Jaroslav Tulach <jtulach@netbeans.org>
jtulach@26
    34
 */
jtulach@26
    35
public class BoardModelTest {
jtulach@26
    36
    
jtulach@26
    37
    public BoardModelTest() {
jtulach@26
    38
    }
jtulach@26
    39
jtulach@26
    40
jtulach@30
    41
    @Test public void e2e4e7e6() {
jtulach@26
    42
        Board b = BoardModel.createBoard();
jtulach@30
    43
        assertEquals(b.getTurn(), ColorType.WHITE);
jtulach@30
    44
        
jtulach@26
    45
        Square e2 = BoardModel.findSquare(b, 'E', 2);
jtulach@26
    46
        assertNotNull(e2);
jtulach@26
    47
        BoardModel.selected(b, e2);
jtulach@26
    48
        assertEquals(BoardModel.findSelectedSquare(b), e2, "E2 is selected");
jtulach@26
    49
        
jtulach@26
    50
        Square e4 = BoardModel.findSquare(b, 'E', 4);
jtulach@26
    51
        assertNotNull(e4);
jtulach@26
    52
        
jtulach@26
    53
        BoardModel.selected(b, e4);
jtulach@26
    54
        
jtulach@26
    55
        assertNull(e2.getPiece(), "No pawn at e2");
jtulach@26
    56
        assertEquals(e4.getPiece(), BoardModel.PieceType.PAWN, "Pawn moved successfully");
jtulach@26
    57
        assertNull(BoardModel.findSelectedSquare(b), "No square selected");
jtulach@26
    58
        
jtulach@30
    59
        BoardModel.selected(b, e4);
jtulach@30
    60
        assertNull(BoardModel.findSelectedSquare(b), "No square selected, it is blacks turn");
jtulach@30
    61
        
jtulach@30
    62
        assertTrue(b.isBlackTurn(), "black's turn");
jtulach@30
    63
        
jtulach@30
    64
        
jtulach@30
    65
        Square e7 = BoardModel.findSquare(b, 'E', 7);
jtulach@30
    66
        BoardModel.selected(b, e7);
jtulach@30
    67
        assertEquals(BoardModel.findSelectedSquare(b), e7);
jtulach@30
    68
        
jtulach@30
    69
        BoardModel.selected(b, BoardModel.findSquare(b, 'E', 6));
jtulach@30
    70
        assertNull(e7.getPiece(), "Piece has been moved");
jtulach@26
    71
    }
jtulach@26
    72
    
jtulach@26
    73
    @Test public void cantSelectEmptySquare() {
jtulach@26
    74
        Board b = BoardModel.createBoard();
jtulach@26
    75
        Square e3 = BoardModel.findSquare(b, 'E', 3);
jtulach@26
    76
        assertNotNull(e3);
jtulach@26
    77
        BoardModel.selected(b, e3);
jtulach@26
    78
        assertNull(BoardModel.findSelectedSquare(b), "No square is selected");
jtulach@26
    79
    }
jaroslav@29
    80
jaroslav@29
    81
    @Test public void cantTakeOwnPiece() {
jaroslav@29
    82
        Board b = BoardModel.createBoard();
jaroslav@29
    83
        Square e1 = BoardModel.findSquare(b, 'E', 1);
jaroslav@29
    84
        assertNotNull(e1);
jaroslav@29
    85
        BoardModel.selected(b, e1);
jaroslav@29
    86
        assertEquals(BoardModel.findSelectedSquare(b), e1, "E1 is selected");
jaroslav@29
    87
        
jaroslav@29
    88
        Square e2 = BoardModel.findSquare(b, 'E', 2);
jaroslav@29
    89
        assertNotNull(e2);
jaroslav@29
    90
        
jaroslav@29
    91
        BoardModel.selected(b, e2);
jaroslav@29
    92
        
jaroslav@29
    93
        assertNotNull(e1.getPiece(), "King remains at e1");
jaroslav@29
    94
        assertEquals(e2.getPiece(), BoardModel.PieceType.PAWN, "Pawn remains");
jaroslav@29
    95
        assertEquals(BoardModel.findSelectedSquare(b), e2, "e2 now selected");
jaroslav@29
    96
        
jaroslav@29
    97
    }
jtulach@26
    98
    
jtulach@34
    99
    @Test public void knightMustMoveToF3() {
jtulach@34
   100
        Board b = BoardModel.createBoard();
jtulach@34
   101
        Square g1 = BoardModel.findSquare(b, 'G', 1);
jtulach@34
   102
        BoardModel.selected(b, g1);
jtulach@34
   103
        
jtulach@34
   104
        Square f3 = BoardModel.findSquare(b, 'F', 3);
jtulach@34
   105
        assertTrue(f3.isAccessible(), "This is a field where knight can move");
jtulach@34
   106
jtulach@34
   107
        Square g3 = BoardModel.findSquare(b, 'G', 3);
jtulach@34
   108
        assertFalse(g3.isAccessible(), "Not a place for knight");
jtulach@34
   109
jtulach@34
   110
        Square e2 = BoardModel.findSquare(b, 'E', 2);
jtulach@34
   111
        assertFalse(e2.isAccessible(), "Not a place either, occupied");
jtulach@34
   112
jtulach@34
   113
        BoardModel.selected(b, g3);
jtulach@34
   114
        
jtulach@34
   115
        assertNull(g3.getPiece(), "No figure was moved");
jtulach@34
   116
        assertTrue(g1.isSelected(), "Original square still selected");
jtulach@34
   117
        
jtulach@34
   118
        BoardModel.selected(b, f3);
jtulach@34
   119
        
jtulach@34
   120
        assertEquals(f3.getPiece(), PieceType.KNIGHT, "Moved");
jtulach@34
   121
        assertFalse(g3.isSelected(), "No longer selected");
jtulach@34
   122
    }
jtulach@26
   123
}