示例#1
0
 def test_add_1(self):
     # can add one strategy, and adding it again raises error.
     sm = StrategyManager()
     self.assertEquals(len(sm.strategies.keys()), 0)
     sm.add_strategy(self.saa)
     self.assertEquals(len(sm.strategies.keys()), 1)
     self.assertRaises(DuplicateStrategyError, sm.add_strategy, self.saa)
示例#2
0
 def test_get_strategy_by_name_2(self):
     # raises error if name isn't one of strategies under management
     sm = StrategyManager()
     sm.add_strategy(self.saa)
     sm.add_strategy(self.sab)
     sm.add_strategy(self.sba)
     self.assertRaises(MissingStrategyError, sm.get_strategy, 
             self.sabnnn.name)
示例#3
0
 def test_add_7(self):
     # cannot resolve conflict on methods_used name.
     sm = StrategyManager()
     sm.add_strategy(self.sba)
     self.assertEquals(len(sm.strategies.keys()), 1)
     # because sabnba is has different methods_used
     # but the same methods_used_name as existing Strategy.
     self.assertRaises(MethodsUsedNameForbiddenError, sm.add_strategy, 
             self.sabnba)
示例#4
0
 def test_add_6(self):
     # cannot resolve conflict on settings name if methods_used match.
     sm = StrategyManager()
     sm.add_strategy(self.saa)
     self.assertEquals(len(sm.strategies.keys()), 1)
     # because sabnaa is has the same methods_used/methods_used_name and
     #   different settings AND the same settings_name.
     self.assertRaises(SettingsNameForbiddenError, sm.add_strategy, 
             self.sabnaa)
示例#5
0
 def test_add_2(self):
     # can add two different strategies, adding either again raises error.
     # same methods used, different settings
     sm = StrategyManager()
     sm.add_strategy(self.saa)
     self.assertEquals(len(sm.strategies.keys()), 1)
     sm.add_strategy(self.sab)
     self.assertEquals(len(sm.strategies.keys()), 2)
     self.assertRaises(DuplicateStrategyError, sm.add_strategy, self.sab)
     self.assertRaises(DuplicateStrategyError, sm.add_strategy, self.saa)
示例#6
0
    def test_get_strategy_by_name(self):
        # can get strategy under management given its name as well.
        sm = StrategyManager()
        sm.add_strategy(self.saa)
        sm.add_strategy(self.sab)
        sm.add_strategy(self.sba)
        sab_managed = sm.get_strategy(self.sab.name)

        self.assertTrue(sab_managed is not self.sab)
        self.assertEquals(sab_managed ,  self.sab)
示例#7
0
 def test_add_5(self):
     # when adding a strategy, it doesn't matter what it's name is, if it
     # is already under management, it raises an error
     sm = StrategyManager()
     sm.add_strategy(self.saa)
     self.assertEquals(len(sm.strategies.keys()), 1)
     sm.add_strategy(self.sab)
     self.assertEquals(len(sm.strategies.keys()), 2)
     # because abnba is already there, but known as A(b) not B(a)
     self.assertRaises(DuplicateStrategyError, sm.add_strategy, self.sabnba)
     self.assertRaises(DuplicateStrategyError, sm.add_strategy, self.sabnnn)
示例#8
0
    def test_get_strategy_by_name_and_by_strategy(self):
        # getting strategy by name or by strategy yields same result.
        sm = StrategyManager()
        sm.add_strategy(self.saa)
        sm.add_strategy(self.sab)
        sm.add_strategy(self.sba)

        sab_by_name = sm.get_strategy(self.sab.name)
        sab_by_strategy = sm.get_strategy(self.sab)

        self.assertTrue(sab_by_name is not self.sab)
        self.assertTrue(sab_by_name is sab_by_strategy)

        self.assertRaises(ArgumentTypeError, sm.get_strategy, True)
示例#9
0
 def test_add_4(self):
     # adding strategy with a methods_used set that already has a name
     #   added strategy will adopt existing name.
     sm = StrategyManager()
     sm.add_strategy(self.saa)
     self.assertEquals(len(sm.strategies.keys()), 1)
     sm.add_strategy(self.sabnnn)
     self.assertEquals(len(sm.strategies.keys()), 2)
     # stored strategy is called A(none) and is same as sab
     smsabnnn = sm.get_strategy(msn('a','none'))
     self.assertEquals(smsabnnn ,  self.sab)
     # because ab is already there, but known as A(none)
     self.assertRaises(DuplicateStrategyError, sm.add_strategy, self.sab)
     self.assertRaises(DuplicateStrategyError, sm.add_strategy, smsabnnn)
     self.assertRaises(DuplicateStrategyError, sm.add_strategy, self.sabnnn)
示例#10
0
    def test_get_strategy_name(self):
        sm = StrategyManager()
        name = sm.get_strategy_name(self.saa)
        self.assertEquals(name, msn(pt.CUSTOM_SC, pt.CUSTOM_LC))

        # after adding saa, name should be same as saa
        sm.add_strategy(self.saa)
        name = sm.get_strategy_name(self.saa)
        self.assertEquals(name, self.saa.name)
        # name should be same methods_used part, but custom settings for sab
        name = sm.get_strategy_name(self.sab)
        self.assertEquals(name, msn(self.sab.methods_used_name, pt.CUSTOM_LC))

        name = sm.get_strategy_name(self.sba)
        self.assertEquals(name, msn(pt.CUSTOM_SC, pt.CUSTOM_LC))
示例#11
0
    def test_get_strategy_by_strategy(self):
        # can get the strategy from manager if we have equivalent strategy,
        # regardless of names.
        # managed strategies are copies of strategies, not references.
        sm = StrategyManager()
        sm.add_strategy(self.saa)
        sm.add_strategy(self.sab)
        sm.add_strategy(self.sba)
        sab_managed = sm.get_strategy(self.sab)
        sabnnn_managed = sm.get_strategy(self.sabnnn)

        self.assertTrue(sab_managed is not self.sab)
        self.assertEquals(sab_managed ,  self.sab)

        self.assertTrue(sabnnn_managed is not self.sabnnn)
        self.assertEquals(sabnnn_managed ,  self.sab)
示例#12
0
    def test_remove_strategy(self):
        # can remove strategies by name or by strategy.
        sm = StrategyManager()
        sm.add_strategy(self.saa)
        sm.add_strategy(self.sab)
        sm.add_strategy(self.sba)
        self.assertEquals(len(sm.strategies.keys()), 3)
        sm.remove_strategy(self.sab)
        self.assertEquals(len(sm.strategies.keys()), 2)
        self.assertRaises(MissingStrategyError, sm.get_strategy, self.sab)

        sm.add_strategy(self.sab)
        self.assertEquals(len(sm.strategies.keys()), 3)
        sm.remove_strategy(self.sab.name)
        self.assertEquals(len(sm.strategies.keys()), 2)
        self.assertRaises(MissingStrategyError, sm.get_strategy, self.sab.name)
示例#13
0
 def test_get_strategy_by_strategy_2(self):
     # asking for strategy not under management raises error
     sm = StrategyManager()
     sm.add_strategy(self.saa)
     sm.add_strategy(self.sba)
     self.assertRaises(MissingStrategyError, sm.get_strategy, self.sab)