chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Fri, 26 Jul 2013 09:28:49 +0200
branchchess
changeset 30 a46846115b83
parent 29 9fb64f6528b5
child 34 1ebd52ae8ccb
permissions -rw-r--r--
Ensure changing turns
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@26
    27
import static org.testng.Assert.*;
jtulach@26
    28
import org.testng.annotations.Test;
jtulach@26
    29
jtulach@26
    30
/**
jtulach@26
    31
 *
jtulach@26
    32
 * @author Jaroslav Tulach <jtulach@netbeans.org>
jtulach@26
    33
 */
jtulach@26
    34
public class BoardModelTest {
jtulach@26
    35
    
jtulach@26
    36
    public BoardModelTest() {
jtulach@26
    37
    }
jtulach@26
    38
jtulach@26
    39
jtulach@30
    40
    @Test public void e2e4e7e6() {
jtulach@26
    41
        Board b = BoardModel.createBoard();
jtulach@30
    42
        assertEquals(b.getTurn(), ColorType.WHITE);
jtulach@30
    43
        
jtulach@26
    44
        Square e2 = BoardModel.findSquare(b, 'E', 2);
jtulach@26
    45
        assertNotNull(e2);
jtulach@26
    46
        BoardModel.selected(b, e2);
jtulach@26
    47
        assertEquals(BoardModel.findSelectedSquare(b), e2, "E2 is selected");
jtulach@26
    48
        
jtulach@26
    49
        Square e4 = BoardModel.findSquare(b, 'E', 4);
jtulach@26
    50
        assertNotNull(e4);
jtulach@26
    51
        
jtulach@26
    52
        BoardModel.selected(b, e4);
jtulach@26
    53
        
jtulach@26
    54
        assertNull(e2.getPiece(), "No pawn at e2");
jtulach@26
    55
        assertEquals(e4.getPiece(), BoardModel.PieceType.PAWN, "Pawn moved successfully");
jtulach@26
    56
        assertNull(BoardModel.findSelectedSquare(b), "No square selected");
jtulach@26
    57
        
jtulach@30
    58
        BoardModel.selected(b, e4);
jtulach@30
    59
        assertNull(BoardModel.findSelectedSquare(b), "No square selected, it is blacks turn");
jtulach@30
    60
        
jtulach@30
    61
        assertTrue(b.isBlackTurn(), "black's turn");
jtulach@30
    62
        
jtulach@30
    63
        
jtulach@30
    64
        Square e7 = BoardModel.findSquare(b, 'E', 7);
jtulach@30
    65
        BoardModel.selected(b, e7);
jtulach@30
    66
        assertEquals(BoardModel.findSelectedSquare(b), e7);
jtulach@30
    67
        
jtulach@30
    68
        BoardModel.selected(b, BoardModel.findSquare(b, 'E', 6));
jtulach@30
    69
        assertNull(e7.getPiece(), "Piece has been moved");
jtulach@26
    70
    }
jtulach@26
    71
    
jtulach@26
    72
    @Test public void cantSelectEmptySquare() {
jtulach@26
    73
        Board b = BoardModel.createBoard();
jtulach@26
    74
        Square e3 = BoardModel.findSquare(b, 'E', 3);
jtulach@26
    75
        assertNotNull(e3);
jtulach@26
    76
        BoardModel.selected(b, e3);
jtulach@26
    77
        assertNull(BoardModel.findSelectedSquare(b), "No square is selected");
jtulach@26
    78
    }
jaroslav@29
    79
jaroslav@29
    80
    @Test public void cantTakeOwnPiece() {
jaroslav@29
    81
        Board b = BoardModel.createBoard();
jaroslav@29
    82
        Square e1 = BoardModel.findSquare(b, 'E', 1);
jaroslav@29
    83
        assertNotNull(e1);
jaroslav@29
    84
        BoardModel.selected(b, e1);
jaroslav@29
    85
        assertEquals(BoardModel.findSelectedSquare(b), e1, "E1 is selected");
jaroslav@29
    86
        
jaroslav@29
    87
        Square e2 = BoardModel.findSquare(b, 'E', 2);
jaroslav@29
    88
        assertNotNull(e2);
jaroslav@29
    89
        
jaroslav@29
    90
        BoardModel.selected(b, e2);
jaroslav@29
    91
        
jaroslav@29
    92
        assertNotNull(e1.getPiece(), "King remains at e1");
jaroslav@29
    93
        assertEquals(e2.getPiece(), BoardModel.PieceType.PAWN, "Pawn remains");
jaroslav@29
    94
        assertEquals(BoardModel.findSelectedSquare(b), e2, "e2 now selected");
jaroslav@29
    95
        
jaroslav@29
    96
    }
jtulach@26
    97
    
jtulach@26
    98
}