github.com/gorgonia/agogo@v0.1.1/game/c4/c4_test.go (about)

     1  package c4
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/gorgonia/agogo/game"
     7  )
     8  
     9  func TestGame_Ended(t *testing.T) {
    10  	X := game.Black
    11  	O := game.White
    12  	Z := game.None
    13  	g := New(6, 7, 4)
    14  	data := g.b.data.Data().([]game.Colour)
    15  
    16  	var a []game.Colour
    17  	a = []game.Colour{
    18  		X, Z, Z, Z, Z, Z, Z,
    19  		O, Z, Z, Z, Z, Z, Z,
    20  		O, Z, Z, Z, Z, Z, Z,
    21  		X, Z, Z, Z, Z, Z, Z,
    22  		O, O, Z, Z, X, Z, X,
    23  		X, O, Z, O, X, Z, X,
    24  	}
    25  	copy(data, a)
    26  
    27  	if ended, winner := g.Ended(); ended {
    28  		t.Errorf("Game is not supposed to end! Winner: %v\n%v", winner, g)
    29  	}
    30  
    31  	// fullboard
    32  	a = []game.Colour{
    33  		X, O, X, O, X, O, X,
    34  		O, O, X, O, X, O, O,
    35  		X, X, X, O, X, O, X,
    36  		O, X, O, X, O, X, O,
    37  		X, O, O, X, O, O, X,
    38  		X, X, O, X, O, X, X,
    39  	}
    40  	copy(data, a)
    41  
    42  	if ended, winner := g.Ended(); !ended || (ended && winner != game.Player(Z)) {
    43  		t.Errorf("Game is supposed to end with Winner = %v. Got %v\n%v", Z, winner, g)
    44  	}
    45  
    46  	// diagonal
    47  	a = []game.Colour{
    48  		X, Z, Z, Z, Z, Z, Z,
    49  		O, Z, Z, Z, Z, Z, Z,
    50  		O, Z, Z, X, Z, Z, Z,
    51  		X, Z, X, Z, Z, Z, Z,
    52  		O, X, Z, Z, X, Z, X,
    53  		X, O, Z, O, X, Z, X,
    54  	}
    55  	copy(data, a)
    56  	if ended, winner := g.Ended(); !ended || (ended && winner != game.Player(X)) {
    57  		t.Errorf("Game is supposed to end with Winner = %v. Got %v\n%v", X, winner, g)
    58  	}
    59  
    60  	// diagonal2
    61  	a = []game.Colour{
    62  		X, Z, Z, Z, Z, Z, Z,
    63  		O, Z, Z, Z, Z, Z, Z,
    64  		O, X, Z, O, Z, Z, Z,
    65  		X, Z, X, Z, Z, Z, Z,
    66  		O, X, Z, X, X, Z, X,
    67  		X, O, Z, O, X, Z, X,
    68  	}
    69  	copy(data, a)
    70  	if ended, winner := g.Ended(); !ended || (ended && winner != game.Player(X)) {
    71  		t.Errorf("Game is supposed to end with Winner = %v. Got %v\n%v", X, winner, g)
    72  	}
    73  
    74  	// vertical
    75  	a = []game.Colour{
    76  		X, Z, Z, Z, Z, Z, Z,
    77  		O, Z, Z, Z, X, Z, Z,
    78  		O, Z, Z, X, X, Z, Z,
    79  		X, Z, Z, Z, X, Z, Z,
    80  		O, X, Z, Z, X, Z, X,
    81  		X, O, Z, O, O, Z, X,
    82  	}
    83  	copy(data, a)
    84  	if ended, winner := g.Ended(); !ended || (ended && winner != game.Player(X)) {
    85  		t.Errorf("Game is supposed to end with Winner = %v. Got %v\n%v", X, winner, g)
    86  	}
    87  
    88  	// horizontal
    89  	a = []game.Colour{
    90  		X, Z, Z, Z, Z, Z, Z,
    91  		O, Z, Z, Z, Z, Z, Z,
    92  		O, Z, Z, X, Z, Z, Z,
    93  		X, Z, Z, Z, X, Z, Z,
    94  		O, X, Z, Z, X, Z, X,
    95  		O, X, X, X, X, Z, X,
    96  	}
    97  	copy(data, a)
    98  	if ended, winner := g.Ended(); !ended || (ended && winner != game.Player(X)) {
    99  		t.Errorf("Game is supposed to end with Winner = %v. Got %v\n%v", X, winner, g)
   100  	}
   101  }