forked from Axelrod-Python/Axelrod
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_sequence_player.py
79 lines (58 loc) · 2.35 KB
/
test_sequence_player.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
"""Tests for the Thue-Morse strategies."""
import unittest
import axelrod
from axelrod._strategy_utils import recursive_thue_morse
from axelrod.strategies.sequence_player import SequencePlayer
from .test_player import TestOpponent, TestPlayer
C, D = axelrod.Action.C, axelrod.Action.D
class TestThueMoreGenerator(unittest.TestCase):
def test_sequence(self):
expected = [0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0]
for i, e in enumerate(expected):
self.assertEqual(recursive_thue_morse(i), e)
class TestSequencePlayer(unittest.TestCase):
def test_sequence_player(self):
"""Basic test for SequencePlayer."""
def cooperate_gen():
yield 1
player = SequencePlayer(generator_function=cooperate_gen)
opponent = TestOpponent()
self.assertEqual(C, player.strategy(opponent))
class TestThueMorse(TestPlayer):
name = "ThueMorse"
player = axelrod.ThueMorse
expected_classifier = {
"memory_depth": float("inf"),
"stochastic": False,
"makes_use_of": set(),
"long_run_time": False,
"inspects_source": False,
"manipulates_source": False,
"manipulates_state": False,
}
def test_strategy(self):
thue_morse_seq = [D, C, C, D, C, D, D, C, C, D, D, C, D, C, C, D, C]
n = len(thue_morse_seq)
actions = list(zip(thue_morse_seq, [C] * n))
self.versus_test(axelrod.Cooperator(), expected_actions=actions)
actions = list(zip(thue_morse_seq, [D] * n))
self.versus_test(axelrod.Defector(), expected_actions=actions)
class TestThueMorseInverse(TestPlayer):
name = "ThueMorseInverse"
player = axelrod.ThueMorseInverse
expected_classifier = {
"memory_depth": float("inf"),
"stochastic": False,
"makes_use_of": set(),
"long_run_time": False,
"inspects_source": False,
"manipulates_source": False,
"manipulates_state": False,
}
def test_strategy(self):
inv_thue_morse_seq = [C, D, D, C, D, C, C, D, D, C, C, D, C, D, D, C, D]
n = len(inv_thue_morse_seq)
actions = list(zip(inv_thue_morse_seq, [C] * n))
self.versus_test(axelrod.Cooperator(), expected_actions=actions)
actions = list(zip(inv_thue_morse_seq, [D] * n))
self.versus_test(axelrod.Defector(), expected_actions=actions)