Skip to content

Commit d833830

Browse files
authored
Merge pull request #908 from Axelrod-Python/884-apavlov
Refactor apavlov for #884.
2 parents 3811006 + 71679e8 commit d833830

File tree

1 file changed

+95
-62
lines changed

1 file changed

+95
-62
lines changed

axelrod/tests/strategies/test_apavlov.py

Lines changed: 95 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,47 @@ class TestAPavlov2006(TestPlayer):
2222

2323
def test_strategy(self):
2424
self.first_play_test(C)
25-
self.responses_test([C], [C] * 6, [C] * 6,
26-
attrs={"opponent_class": "Cooperative"})
27-
self.responses_test([D], [C, D, D, D, D, D], [D] * 6,
28-
attrs={"opponent_class": "ALLD"})
29-
self.responses_test([C, C], [C, D, C, D, C, D], [D, C, D, C, D, C],
30-
attrs={"opponent_class": "STFT"})
31-
self.responses_test([D], [C, D, D, C, D, D], [D, D, C, D, D, C],
32-
attrs={"opponent_class": "PavlovD"})
33-
self.responses_test([C], [C, D, D, C, D, D, C], [D, D, C, D, D, C, D],
34-
attrs={"opponent_class": "PavlovD"})
35-
self.responses_test([D], [C, D, D, C, D, D], [C, C, C, D, D, D],
36-
attrs={"opponent_class": "Random"})
37-
self.responses_test([D], [C, D, D, D, C, C], [D, D, D, C, C, C],
38-
attrs={"opponent_class": "Random"})
39-
40-
def test_reset(self):
41-
player = self.player()
42-
opponent = axelrod.Cooperator()
43-
[player.play(opponent) for _ in range(10)]
44-
player.reset()
45-
self.assertEqual(player.opponent_class, None)
25+
26+
actions = [(C, C)] * 7
27+
self.versus_test(axelrod.Cooperator(), expected_actions=actions,
28+
attrs={"opponent_class": "Cooperative"})
29+
30+
opponent = axelrod.MockPlayer([C] * 6 + [D])
31+
actions = [(C, C)] * 6 + [(C, D), (D, C)]
32+
self.versus_test(opponent, expected_actions=actions,
33+
attrs={"opponent_class": "Cooperative"})
34+
35+
actions = [(C, D)] + [(D, D)] * 6
36+
self.versus_test(axelrod.Defector(), expected_actions=actions,
37+
attrs={"opponent_class": "ALLD"})
38+
39+
opponent = axelrod.MockPlayer([D, C, D, C, D, C])
40+
actions = [(C, D), (D, C), (C, D), (D, C),
41+
(C, D), (D, C), (C, D), (C, C),
42+
(C, D), (D, C)]
43+
self.versus_test(opponent, expected_actions=actions,
44+
attrs={"opponent_class": "STFT"})
45+
46+
opponent = axelrod.MockPlayer([D, D, C, D, D, C])
47+
actions = [(C, D), (D, D), (D, C), (C, D), (D, D), (D, C), (D, D)]
48+
self.versus_test(opponent, expected_actions=actions,
49+
attrs={"opponent_class": "PavlovD"})
50+
51+
opponent = axelrod.MockPlayer([D, D, C, D, D, C, D])
52+
actions = [(C, D), (D, D), (D, C), (C, D),
53+
(D, D), (D, C), (D, D), (C, D)]
54+
self.versus_test(opponent, expected_actions=actions,
55+
attrs={"opponent_class": "PavlovD"})
56+
57+
opponent = axelrod.MockPlayer([C, C, C, D, D, D])
58+
actions = [(C, C), (C, C), (C, C), (C, D), (D, D), (D, D), (D, C)]
59+
self.versus_test(opponent, expected_actions=actions,
60+
attrs={"opponent_class": "Random"})
61+
62+
opponent = axelrod.MockPlayer([D, D, D, C, C, C])
63+
actions = [(C, D), (D, D), (D, D), (D, C), (C, C), (C, C), (D, D)]
64+
self.versus_test(opponent, expected_actions=actions,
65+
attrs={"opponent_class": "Random"})
4666

4767

4868
class TestAPavlov2011(TestPlayer):
@@ -61,44 +81,57 @@ class TestAPavlov2011(TestPlayer):
6181

6282
def test_strategy(self):
6383
self.first_play_test(C)
64-
self.responses_test([C], [C] * 6, [C] * 6,
65-
attrs={"opponent_class": "Cooperative"})
66-
self.responses_test([D], [C, D, D, D, D, D], [D] * 6,
67-
attrs={"opponent_class": "ALLD"})
68-
self.responses_test([D], [C, C, D, D, D, D], [C] + [D] * 5,
69-
attrs={"opponent_class": "ALLD"})
70-
self.responses_test([D], [C, C, C, D, D, D], [C, C] + [D] * 4,
71-
attrs={"opponent_class": "ALLD"})
72-
self.responses_test([D], [C, C, D, D, C, D], [C, D, D, C, D, D],
73-
attrs={"opponent_class": "ALLD"})
74-
75-
self.responses_test([C], [C, C, D, D, D, C], [C, D, D, C, C, D],
76-
attrs={"opponent_class": "STFT"})
77-
self.responses_test([C], [C, C, D, C, D, C], [C, D, C, D, C, D],
78-
attrs={"opponent_class": "STFT"})
79-
self.responses_test([C], [C, D, D, D, C, C], [D, D, D, C, C, C],
80-
attrs={"opponent_class": "STFT"})
81-
self.responses_test([C], [C, D, D, D, C, C], [D, D, D, C, C, C],
82-
attrs={"opponent_class": "STFT"})
83-
84-
# Specific case for STFT when responding with TFT
85-
opponent = axelrod.Player()
86-
player = axelrod.APavlov2006()
87-
player.history = [D] * 8
88-
opponent.history = [D] * 8
89-
player.opponent_class = "STFT"
90-
self.assertEqual(player.strategy(opponent), D)
91-
opponent.history.append(C)
92-
self.assertEqual(player.strategy(opponent), C)
93-
94-
self.responses_test([D], [C, C, C, C, C, D], [C, C, C, C, D, D],
95-
attrs={"opponent_class": "Random"})
96-
self.responses_test([D], [C, D, D, C, C, C], [D, D, C, C, C, C],
97-
attrs={"opponent_class": "Random"})
98-
99-
def test_reset(self):
100-
player = self.player()
101-
opponent = axelrod.Cooperator()
102-
[player.play(opponent) for _ in range(10)]
103-
player.reset()
104-
self.assertEqual(player.opponent_class, None)
84+
85+
actions = [(C, C)] * 8
86+
self.versus_test(axelrod.Cooperator(), expected_actions=actions,
87+
attrs={"opponent_class": "Cooperative"})
88+
89+
actions = [(C, D)] + [(D, D)] * 9
90+
self.versus_test(axelrod.Defector(), expected_actions=actions,
91+
attrs={"opponent_class": "ALLD"})
92+
93+
opponent = axelrod.MockPlayer([C, D, D, D, D, D, D])
94+
actions = [(C, C), (C, D)] + [(D, D)] * 5 + [(D, C)]
95+
self.versus_test(opponent, expected_actions=actions,
96+
attrs={"opponent_class": "ALLD"})
97+
98+
opponent = axelrod.MockPlayer([C, C, D, D, D, D, D])
99+
actions = [(C, C), (C, C), (C, D)] + [(D, D)] * 4 + [(D, C)]
100+
self.versus_test(opponent, expected_actions=actions,
101+
attrs={"opponent_class": "ALLD"})
102+
103+
opponent = axelrod.MockPlayer([C, D, D, C, D, D, D])
104+
actions = [(C, C), (C, D), (D, D), (D, C),
105+
(C, D), (D, D), (D, D), (D, C)]
106+
self.versus_test(opponent, expected_actions=actions,
107+
attrs={"opponent_class": "ALLD"})
108+
109+
opponent = axelrod.MockPlayer([C, D, D, C, C, D, D])
110+
actions = [(C, C), (C, D), (D, D), (D, C),
111+
(C, C), (C, D), (C, D), (D, C)]
112+
self.versus_test(opponent, expected_actions=actions,
113+
attrs={"opponent_class": "STFT"})
114+
115+
opponent = axelrod.MockPlayer([C, D, C, D, C, D, D])
116+
actions = [(C, C), (C, D), (D, C), (C, D),
117+
(D, C), (C, D), (C, D), (D, C)]
118+
self.versus_test(opponent, expected_actions=actions,
119+
attrs={"opponent_class": "STFT"})
120+
121+
opponent = axelrod.MockPlayer([D, D, D, C, C, C, C])
122+
actions = [(C, D), (D, D), (D, D), (D, C),
123+
(C, C), (C, C), (C, C), (C, D)]
124+
self.versus_test(opponent, expected_actions=actions,
125+
attrs={"opponent_class": "STFT"})
126+
127+
opponent = axelrod.MockPlayer([C, C, C, C, D, D])
128+
actions = [(C, C), (C, C), (C, C), (C, C),
129+
(C, D), (D, D), (D, C), (D, C)]
130+
self.versus_test(opponent, expected_actions=actions,
131+
attrs={"opponent_class": "Random"})
132+
133+
opponent = axelrod.MockPlayer([D, D, C, C, C, C])
134+
actions = [(C, D), (D, D), (D, C), (C, C),
135+
(C, C), (C, C), (D, D), (D, D)]
136+
self.versus_test(opponent, expected_actions=actions,
137+
attrs={"opponent_class": "Random"})

0 commit comments

Comments
 (0)