-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgame_test.rb
More file actions
124 lines (106 loc) · 3.32 KB
/
game_test.rb
File metadata and controls
124 lines (106 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
require 'test/unit'
require './game'
require './board'
class GameTest < Test::Unit::TestCase
def test_game_finished_when_board_full
board = Board.new(2)
board.put_number(1, Location.new(0, 0))
board.put_number(1, Location.new(0, 1))
board.put_number(1, Location.new(1, 0))
board.put_number(1, Location.new(1, 1))
game = Game.new(board)
assert_raises GameFinishedException do
game.play
end
end
def test_game_adds_new_numbers
board = Board.new(2)
game = Game.new(board)
game.play
game.play
game.play
game.play
assert_equal(0, board.empty_fields_count)
end
def test_game_move_right
assert_row_after_move_right(new_game, 0, "0002", "0002")
assert_row_after_move_right(new_game, 0, "0200", "0002")
assert_row_after_move_right(new_game, 0, "0202", "0004")
assert_row_after_move_right(new_game, 0, "2002", "0004")
assert_row_after_move_right(new_game, 0, "2020", "0004")
assert_row_after_move_right(new_game, 0, "2200", "0004")
assert_row_after_move_right(new_game, 0, "2022", "0024")
assert_row_after_move_right(new_game, 0, "2000", "0002")
assert_row_after_move_right(new_game, 0, "2222", "0044")
assert_row_after_move_right(new_game, 0, "4022", "0044")
assert_row_after_move_right(new_game, 0, "2202", "0024")
end
def new_game
Game.new(Board.new(4))
end
def test_game_move_left
assert_row_after_move_left(new_game, 0, "2000", "2000")
assert_row_after_move_left(new_game, 0, "0200", "2000")
assert_row_after_move_left(new_game, 0, "0202", "4000")
assert_row_after_move_left(new_game, 0, "2002", "4000")
assert_row_after_move_left(new_game, 0, "2020", "4000")
assert_row_after_move_left(new_game, 0, "2200", "4000")
assert_row_after_move_left(new_game, 0, "2022", "4200")
assert_row_after_move_left(new_game, 0, "2000", "2000")
assert_row_after_move_left(new_game, 0, "2222", "4400")
assert_row_after_move_left(new_game, 0, "4022", "4400")
end
def test_left_right
g = new_game
g.board.set_row(0, "4022")
g.play_left
g.play_right
assert_row(g.board, 0, "0008")
end
def test_right_left
g = new_game
g.board.set_row(0, "4022")
g.play_right
g.play_left
assert_row(g.board, 0, "8000")
end
def test_two_rows
g = new_game
g.board.set_row(0, "4022")
g.board.set_row(1, "4022")
g.play_right
g.play_left
assert_row(g.board, 0, "8000")
assert_row(g.board, 1, "8000")
end
def test_whole_board
g = new_game
g.board.set_row(0, "4022")
g.board.set_row(1, "4022")
g.board.set_row(2, "4022")
g.board.set_row(3, "4022")
g.play_right
g.play_left
assert_board(g,["8000",
"8000",
"8000",
"8000"])
#g.play_down
end
def assert_board(g, rows)
rows.each_with_index {|row, i| assert_row(g.board, i, row)}
end
def assert_row(board, row, values)
assert_equal(values.scan(/\w/).map{|c| c.to_i}, board.get_row(row))
end
def assert_row_after_move_right(game, row, before, after)
game.board.set_row(row, before)
game.play_right
assert_row(game.board, row, after)
end
def assert_row_after_move_left(game, row, before, after)
game.board.set_row(row, before)
game.play_left
assert_row(game.board, row, after)
end
end