-
Notifications
You must be signed in to change notification settings - Fork 0
/
game_test.py
90 lines (71 loc) · 2.12 KB
/
game_test.py
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
import random
import numpy as np
from game import Game, format_move, basic_style
def test_simple_game():
random.seed(a=0)
g = Game(5, 5, 2)
assert(g.mines == {(0, 2), (3, 3)})
assert(g.guessed == set())
assert(not g.guess((0, 4)))
assert(g.mines == {(0, 2), (3, 3)})
assert(g.guessed == {(1, 3), (1, 4), (2, 3), (0, 4), (0, 3), (2, 4)})
assert(g.guess((0, 2)))
assert(g.mines == {(0, 2), (3, 3)})
def test_no_bad_luck():
'''Can't hit a mine on first turn'''
random.seed(a=0)
g = Game(5, 5, 2)
assert(g.mines == {(0, 2), (3, 3)})
assert(not g.guess((0, 2)))
assert(g.mines == {(3, 3), (4, 3)})
assert(g.guess((3, 3)))
assert(g.mines == {(3, 3), (4, 3)})
def test_same_guess_twice():
random.seed(a=0)
g = Game(2, 2, 4)
assert(g.mines == {(0, 0), (0, 1), (1, 0), (1, 1)})
assert(not g.guess((0, 4)))
assert(g.guess((0, 4)) is None)
def test_full_mines():
random.seed(a=0)
g = Game(2, 2, 4)
assert(g.mines == {(0, 0), (0, 1), (1, 0), (1, 1)})
def test_game_repr():
random.seed(a=0)
g = Game(4, 4, 1)
assert(not g.guess((1, 1)))
assert(repr(g))
def test_is_won():
random.seed(a=1)
g = Game(4, 4, 2)
assert(g.mines == {(2, 0), (1, 0)})
assert(not g.is_won())
assert(not g.guess((3, 3)))
assert(not g.is_won())
assert(not g.guess((3, 0)))
assert(not g.is_won())
assert(not g.guess((0, 0)))
assert(g.is_won())
def test_view():
random.seed(a=1)
g = Game(2, 2, 1)
g.guess((0, 0))
assert(np.all(g.view() == np.array([[1, 9], [9, 9]])))
def test_format_move():
random.seed(a=1)
g = Game(2, 2, 1)
g.guess((0, 0))
assert(format_move(g.view(), g.mines, (0, 0), basic_style) == 'o \n ')
g.guess((1, 1))
assert(format_move(g.view(), g.mines, (1, 1), basic_style) == '1 \n o')
g.guess((1, 0))
assert(format_move(g.view(), g.mines, (1, 0), basic_style) == '1 \no1')
if __name__ == '__main__':
test_simple_game()
test_no_bad_luck()
test_same_guess_twice()
test_full_mines()
test_game_repr()
test_is_won()
test_view()
test_format_move()