Skip to content

Commit 2fee090

Browse files
eric-s-sdrvinceknight
authored andcommitted
tests commited
1 parent b900e11 commit 2fee090

File tree

2 files changed

+174
-0
lines changed

2 files changed

+174
-0
lines changed

axelrod/my_t.py

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import axelrod.strategy_transformers as st
2+
import axelrod as axl
3+
4+
C, D = axl.Action.C, axl.Action.D
5+
6+
@st.FlipTransformer()
7+
@st.FlipTransformer()
8+
class TestFlip(axl.Cooperator):
9+
pass
10+
11+
12+
@st.ApologyTransformer([D], [C])
13+
class Apology(axl.Cooperator):
14+
pass
15+
16+
@st.DeadlockBreakingTransformer(name_prefix=None)
17+
class DeadlockBreaking(axl.Cooperator):
18+
pass
19+
20+
@st.DualTransformer(name_prefix=None)
21+
class Dual(axl.Cooperator):
22+
pass
23+
24+
@st.FlipTransformer(name_prefix=None)
25+
class Flip(axl.Cooperator):
26+
pass
27+
28+
@st.FinalTransformer((D, D), name_prefix=None)
29+
class Final(axl.Cooperator):
30+
pass
31+
32+
@st.ForgiverTransformer(0.2, name_prefix=None)
33+
class Forgiver(axl.Cooperator):
34+
pass
35+
36+
@st.GrudgeTransformer(3, name_prefix=None)
37+
class Grudge(axl.Cooperator):
38+
pass
39+
40+
@st.InitialTransformer((C, D), name_prefix=None)
41+
class Initial(axl.Cooperator):
42+
pass
43+
44+
@st.JossAnnTransformer((0.2, 0.2), name_prefix=None)
45+
class JossAnn(axl.Cooperator):
46+
pass
47+
48+
49+
strategies = [axl.Grudger, axl.TitForTat]
50+
probability = [.2, .3]
51+
52+
@st.MixedTransformer(probability, strategies, name_prefix=None)
53+
class Mixed(axl.Cooperator):
54+
pass
55+
56+
@st.NiceTransformer(name_prefix=None)
57+
class Nice(axl.Cooperator):
58+
pass
59+
60+
@st.NoisyTransformer(0.2, name_prefix=None)
61+
class Noisy(axl.Cooperator):
62+
pass
63+
64+
@st.RetaliationTransformer(3, name_prefix=None)
65+
class Retaliation(axl.Cooperator):
66+
pass
67+
68+
@st.RetaliateUntilApologyTransformer(name_prefix=None)
69+
class RetaliateUntilApology(axl.Cooperator):
70+
pass
71+
72+
@st.TrackHistoryTransformer(name_prefix=None)
73+
class TrackHistory(axl.Cooperator):
74+
pass
75+
76+
transformed = [Apology, DeadlockBreaking, Flip, Final, Forgiver, Grudge,
77+
Initial, JossAnn, Mixed, Nice, Noisy, Retaliation,
78+
RetaliateUntilApology, TrackHistory]
79+
fails = [Dual]
80+
81+

axelrod/test_pickling.py

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import unittest
2+
import pickle
3+
import axelrod as axl
4+
from axelrod.strategy_transformers import FlipTransformer
5+
from axelrod.my_t import transformed, TestFlip
6+
7+
8+
C, D = axl.Action.C, axl.Action.D
9+
10+
11+
class TestPickle(unittest.TestCase):
12+
def test_parameterized_player(self):
13+
p1 = axl.Cooperator()
14+
p2 = axl.Cycler('DDCCDD')
15+
16+
p1.play(p2)
17+
18+
reconstituted_1 = pickle.loads(pickle.dumps(p1))
19+
reconstituted_2 = pickle.loads(pickle.dumps(p2))
20+
21+
self.assertEqual(p2, reconstituted_2)
22+
23+
self.assertEqual(reconstituted_1.clone(), p1.clone())
24+
self.assertEqual(reconstituted_2.clone(), p2.clone())
25+
26+
def test_sequence_player(self):
27+
player = axl.ThueMorse()
28+
player.play(axl.Cooperator())
29+
30+
reconstituted = pickle.loads(pickle.dumps(player))
31+
self.assertEqual(reconstituted, player)
32+
33+
def test_final_transformer_called(self):
34+
player = axl.Alexei()
35+
copy = pickle.loads(pickle.dumps(player))
36+
match = axl.Match((player, copy), turns=3)
37+
results = match.play()
38+
self.assertEqual(results, [(C, C), (C, C), (D, D)])
39+
40+
def test_all(self):
41+
for s in axl.strategies:
42+
player = s()
43+
player.play(axl.Cooperator())
44+
45+
reconstituted = pickle.loads(pickle.dumps(player))
46+
47+
self.assertEqual(reconstituted, player)
48+
49+
def test_pickling_transformers(self):
50+
player = transformed[0]()
51+
print(player.__dict__)
52+
print(player.__class__.original_class)
53+
54+
for s in transformed:
55+
player = s()
56+
player.play(axl.Cooperator())
57+
# print(player.name, player.__class__.__name__)
58+
reconstituted = pickle.loads(pickle.dumps(player))
59+
60+
self.assertEqual(reconstituted, player)
61+
62+
def test_created(self):
63+
x = FlipTransformer()(axl.Cooperator)
64+
x = FlipTransformer()(x)
65+
x = FlipTransformer()(x)()
66+
# print(x.__reduce__())
67+
# print('created')
68+
# print(repr(pickle.dumps(x)))
69+
z = pickle.loads(pickle.dumps(x))
70+
# print(z)
71+
# print(z.__dict__)
72+
self.assertEqual(x, z)
73+
74+
def test_created_two(self):
75+
# print('created_two')
76+
x = TestFlip()
77+
# print(x.__dict__)
78+
# print(x.__class__.__dict__)
79+
# print(x.__class__.__name__)
80+
# print(x.__dir__())
81+
z = pickle.dumps(x)
82+
self.assertEqual(x, pickle.loads(z))
83+
84+
# def test_reconsitutor(self):
85+
# x = TestFlip()
86+
# print('reconstructor')
87+
# print(x.decorator, x.original_class)
88+
# y = Reconstitutor()(x.decorator, x.original_class, x.__class__.__name__)
89+
# print(type(y))
90+
# y.__dict__.update(x.__dict__)
91+
# print(y.name)
92+
# print(y.__class__.__name__)
93+
# self.assertEqual(y, x)

0 commit comments

Comments
 (0)