Esempio n. 1
0
    def test_with_various_name_prefixes(self):
        no_prefix = Flip()
        self.assertEqual(no_prefix.__class__.__name__, "Flip")
        self.assert_orignal_equals_pickled(no_prefix)

        default_prefix = st.FlipTransformer()(axl.Cooperator)()
        self.assertEqual(default_prefix.__class__.__name__, "FlippedCooperator")
        self.assert_orignal_equals_pickled(default_prefix)

        fliptastic = st.FlipTransformer(name_prefix="Fliptastic")
        new_prefix = fliptastic(axl.Cooperator)()
        self.assertEqual(new_prefix.__class__.__name__, "FliptasticCooperator")
        self.assert_orignal_equals_pickled(new_prefix)
Esempio n. 2
0
    def test_local_class_unpicklable(self):
        """An unpickle-able AND transformed class will not raise an error until
        it is un-pickled. This is different from the original class that raises
        an error when it is pickled."""
        class LocalCooperator(axl.Cooperator):
            pass

        un_transformed = LocalCooperator()

        self.assertRaises(AttributeError, pickle.dumps, un_transformed)

        player = st.FlipTransformer()(LocalCooperator)()
        pickled = pickle.dumps(player)
        self.assertRaises(AttributeError, pickle.loads, pickled)
Esempio n. 3
0
    def test_dynamic_class_no_name_prefix(self):
        player = st.FlipTransformer(name_prefix=None)(axl.Cooperator)()

        self.assertEqual(player.__class__.__name__, "Cooperator")
        self.assert_orignal_equals_pickled(player)
Esempio n. 4
0
    def test_created_on_the_spot_multiple_transformers(self):
        player_class = st.FlipTransformer()(axl.Cooperator)
        player_class = st.DualTransformer()(player_class)
        player = st.FinalTransformer((C, D))(player_class)()

        self.assert_orignal_equals_pickled(player)
Esempio n. 5
0
import pickle
import unittest

import axelrod as axl
import axelrod.strategy_transformers as st

C, D = axl.Action.C, axl.Action.D


# A set of classes to test pickling.

# First set: special cases

PointerToWrappedStrategy = st.FlipTransformer()(st.FlipTransformer()(axl.Cooperator))


class MyDefector(axl.Player):
    def __init__(self):
        super(MyDefector, self).__init__()

    def strategy(self, opponent):
        return D


PointerToWrappedClassNotInStrategies = st.FlipTransformer()(
    st.FlipTransformer()(MyDefector)
)


@st.InitialTransformer((D, C, D), name_prefix=None)
@st.DualTransformer(name_prefix=None)