def setUp(self):
     self.factory = RulesFactory()
class RulesFactoryTestCase(unittest.TestCase):
    """
    Тест на L{spamfighter.core.rules.RulesFactory}.
    """

    def setUp(self):
        self.factory = RulesFactory()

    def testRegisterRule(self):
        self.factory.registerRule(RuleTestFactoryFunc)
        self.factory.registerRule(RuleTestFactoryClass)

        self.assertRaises(DuplicateRuleError, self.factory.registerRule, RuleTestFactoryFunc)
        self.assertRaises(DuplicateRuleError, self.factory.registerRule, RuleTestFactoryClass)

    def testUnRegisterRule(self):
        self.assertRaises(RuleNotFoundError, self.factory.unregisterRule, RuleTestFactoryFunc)
        self.assertRaises(RuleNotFoundError, self.factory.unregisterRule, RuleTestFactoryClass)

        self.factory.registerRule(RuleTestFactoryFunc)
        self.factory.registerRule(RuleTestFactoryClass)
        self.factory.unregisterRule(RuleTestFactoryFunc)
        self.factory.unregisterRule(RuleTestFactoryClass)

    def testInstanciateRule(self):
        self.factory.registerRule(RuleTestFactoryFunc)
        self.factory.registerRule(RuleTestFactoryClass)

        self.assertEqual(43, self.factory.instanciateRule('RuleTestFactoryFunc', arg1=10)(None, None))
        self.assertEqual(-23, self.factory.instanciateRule('RuleTestFactoryClass', arg1=10)(None, None))

        self.assertEqual(4, self.factory.instanciateRule('RuleTestFactoryFunc', arg1=2, arg2=2)(None, None))
        self.assertEqual(0, self.factory.instanciateRule('RuleTestFactoryClass', arg1=2, arg2=2)(None, None))

        self.assertRaises(RuleNotFoundError, self.factory.instanciateRule, '__NoSUCHRULE___')