def test_TransformRuleSystem_load_rules(self):
     rules = transform_rules.TransformRuleSystem()
     some_rules = [(True, '', '', True, '', ''),
                   (False, '', '', False, '', '')]
     rules.load_rules(some_rules)
     expected = [
         transform_rules.TransformRule(*(True, (), {}, True, (), {})),
         transform_rules.TransformRule(*(False, (), {}, False, (), {}))
     ]
     assert rules.rules == expected
Esempio n. 2
0
 def test_TransformRuleSystem_append_rules(self):
     rules = transform_rules.TransformRuleSystem()
     some_rules = [(True, '', '', True, '', ''),
                   (False, '', '', False, '', '')]
     rules.append_rules(some_rules)
     expected = [
         transform_rules.TransformRule(*(True, (), {}, True, (), {})),
         transform_rules.TransformRule(*(False, (), {}, False, (), {}))
     ]
     assert_expected_same(rules.rules, expected)
Esempio n. 3
0
    def test_TransformRule_with_class_function_mix(self):
        """test to make sure that classes can be mixed with functions as
        predicates and actions"""
        class MyRule(object):
            def __init__(self, config=None):
                self.predicate_called = False
                self.action_called = False

            def predicate(self):
                self.predicate_called = True
                return True

            def action(self):
                self.action_called = True
                return True

        def my_predicate():
            return True

        r = transform_rules.TransformRule(my_predicate, (), {}, MyRule, (), {})
        eq_(r.predicate, my_predicate)
        eq_(r.action, r._action_implementation.action)
        self.assertNotEqual(r._action_implementation,
                            r._predicate_implementation)
        r.act()
        # make sure that the class predicate function was not called
        ok_(not r._action_implementation.predicate_called)
        ok_(r._action_implementation.action_called)
Esempio n. 4
0
    def test_TransformRule_with_class(self):
        """test to make sure that classes can be used as predicates and
        actions"""
        class MyRule(object):

            def __init__(self, config=None):
                self.predicate_called = False
                self.action_called = False

            def predicate(self):
                self.predicate_called = True
                return True

            def action(self):
                self.action_called = True
                return True
        r = transform_rules.TransformRule(
            MyRule, (), {},
            MyRule, (), {}
        )
        assert r.predicate == r._predicate_implementation.predicate
        assert r.action == r._action_implementation.action
        assert r._action_implementation == r._predicate_implementation
        r.act()
        assert r._predicate_implementation.predicate_called
        assert r._action_implementation.action_called
Esempio n. 5
0
    def test_TransfromRule_init(self):
        r = transform_rules.TransformRule(True, (), {}, True, (), {})
        assert_expected(r.predicate, True)
        assert_expected(r.predicate_args, ())
        assert_expected(r.predicate_kwargs, {})
        assert_expected(r.action, True)
        assert_expected(r.action_args, ())
        assert_expected(r.action_kwargs, {})

        r = transform_rules.TransformRule(True, '', '', True, '', '')
        assert_expected(r.predicate, True)
        assert_expected(r.predicate_args, ())
        assert_expected(r.predicate_kwargs, {})
        assert_expected(r.action, True)
        assert_expected(r.action_args, ())
        assert_expected(r.action_kwargs, {})

        r = transform_rules.TransformRule(foo, '', '', bar, '', '')
        assert_expected(r.predicate, foo)
        assert_expected(r.predicate_args, ())
        assert_expected(r.predicate_kwargs, {})
        assert_expected(r.action, bar)
        assert_expected(r.action_args, ())
        assert_expected(r.action_kwargs, {})

        r = transform_rules.TransformRule(
            'socorro.unittest.lib.test_transform_rules.foo', '', '',
            'socorro.unittest.lib.test_transform_rules.bar', '', '')
        repr_pred = repr(r.predicate)
        assert 'foo' in repr_pred, 'expected "foo" in %s' % repr_pred
        assert_expected(r.predicate_args, ())
        assert_expected(r.predicate_kwargs, {})
        repr_act = repr(r.action)
        assert 'bar' in repr_act, 'expected "bar" in %s' % repr_act
        assert_expected(r.action_args, ())
        assert_expected(r.action_kwargs, {})

        r = transform_rules.TransformRule(
            'socorro.unittest.lib.test_transform_rules.foo', (1, ), {'a': 13},
            'socorro.unittest.lib.test_transform_rules.bar', '', '')
        repr_pred = repr(r.predicate)
        assert 'foo' in repr_pred, 'expected "foo" in %s' % repr_pred
        assert_expected(r.predicate_args, (1, ))
        assert_expected(r.predicate_kwargs, {'a': 13})
        repr_act = repr(r.action)
        assert 'bar' in repr_act, 'expected "bar" in %s' % repr_act
        assert_expected(r.action_args, ())
        assert_expected(r.action_kwargs, {})

        r = transform_rules.TransformRule(
            'socorro.unittest.lib.test_transform_rules.foo', '1, 2', 'a=13',
            'socorro.unittest.lib.test_transform_rules.bar', '', '')
        repr_pred = repr(r.predicate)
        assert 'foo' in repr_pred, 'expected "foo" in %s' % repr_pred
        assert_expected(r.predicate_args, (1, 2))
        assert_expected(r.predicate_kwargs, {'a': 13})
        repr_act = repr(r.action)
        assert 'bar' in repr_act, 'expected "bar" in %s' % repr_act
        assert_expected(r.action_args, ())
        assert_expected(r.action_kwargs, {})
    def test_TransfromRule_init(self):
        r = transform_rules.TransformRule(True, (), {}, True, (), {})
        assert r.predicate is True
        assert r.predicate_args == ()
        assert r.predicate_kwargs == {}
        assert r.action is True
        assert r.action_args == ()
        assert r.action_kwargs == {}

        r = transform_rules.TransformRule(True, '', '', True, '', '')
        assert r.predicate is True
        assert r.predicate_args == ()
        assert r.predicate_kwargs == {}
        assert r.action is True
        assert r.action_args == ()
        assert r.action_kwargs == {}

        r = transform_rules.TransformRule(foo, '', '', bar, '', '')
        assert r.predicate == foo
        assert r.predicate_args == ()
        assert r.predicate_kwargs == {}
        assert r.action == bar
        assert r.action_args == ()
        assert r.action_kwargs == {}

        r = transform_rules.TransformRule(
            'socorro.unittest.lib.test_transform_rules.foo', '', '',
            'socorro.unittest.lib.test_transform_rules.bar', '', '')
        repr_pred = repr(r.predicate)
        assert 'foo' in repr_pred
        assert r.predicate_args == ()
        assert r.predicate_kwargs == {}
        repr_act = repr(r.action)
        assert 'bar' in repr_act
        assert r.action_args == ()
        assert r.action_kwargs == {}

        r = transform_rules.TransformRule(
            'socorro.unittest.lib.test_transform_rules.foo', (1, ), {'a': 13},
            'socorro.unittest.lib.test_transform_rules.bar', '', '')
        repr_pred = repr(r.predicate)
        assert 'foo' in repr_pred, 'expected "foo" in %s' % repr_pred
        assert r.predicate_args == (1, )
        assert r.predicate_kwargs == {'a': 13}
        repr_act = repr(r.action)
        assert 'bar' in repr_act, 'expected "bar" in %s' % repr_act
        assert r.action_args == ()
        assert r.action_kwargs == {}

        r = transform_rules.TransformRule(
            'socorro.unittest.lib.test_transform_rules.foo', '1, 2', 'a=13',
            'socorro.unittest.lib.test_transform_rules.bar', '', '')
        repr_pred = repr(r.predicate)
        assert 'foo' in repr_pred, 'expected "foo" in %s' % repr_pred
        assert r.predicate_args == (1, 2)
        assert r.predicate_kwargs == {'a': 13}
        repr_act = repr(r.action)
        assert 'bar' in repr_act, 'expected "bar" in %s' % repr_act
        assert r.action_args == ()
        assert r.action_kwargs == {}
Esempio n. 7
0
    def test_TransformRule_with_class(self):
        """test to make sure that classes can be used as predicates and
        actions"""
        class MyRule(object):
            def __init__(self):
                self.predicate_called = False
                self.action_called = False

            def predicate(self):
                self.predicate_called = True
                return True

            def action(self):
                self.action_called = True
                return True

        r = transform_rules.TransformRule(MyRule, (), {}, MyRule, (), {})
        eq_(r.predicate, r._predicitate_implementation.predicate)
        eq_(r.action, r._action_implementation.action)
        eq_(r._action_implementation, r._predicitate_implementation)
        r.act()
        ok_(r._predicitate_implementation.predicate_called)
        ok_(r._action_implementation.action_called)
Esempio n. 8
0
    def test_TransfromRule_act(self):
        rule = transform_rules.TransformRule(True, (), {}, True, (), {})
        r = rule.act()
        assert_expected(r, (True, True))

        rule = transform_rules.TransformRule(True, (), {}, False, (), {})
        r = rule.act()
        assert_expected(r, (True, False))

        def pred1(s, d, fred):
            return bool(fred)

        s = {'dwight': 96}
        d = {}

        rule = transform_rules.TransformRule(pred1, (True), {}, False, (), {})
        r = rule.act(s, d)
        assert_expected(r, (True, False))

        rule = transform_rules.TransformRule(pred1, (), {'fred': True}, False,
                                             (), {})
        r = rule.act(s, d)
        assert_expected(r, (True, False))

        rule = transform_rules.TransformRule(pred1, (), {'fred': False}, False,
                                             (), {})
        r = rule.act(s, d)
        assert_expected(r, (False, None))

        def copy1(s, d, s_key, d_key):
            d[d_key] = s[s_key]
            return True

        rule = transform_rules.TransformRule(pred1, (), {'fred': True}, copy1,
                                             (),
                                             's_key="dwight", d_key="wilma"')
        r = rule.act(s, d)
        assert_expected(r, (True, True))
        assert_expected(s['dwight'], 96)
        assert_expected(d['wilma'], 96)