def test_addition(self): rules1 = rules( (gt(0), 'positive'), (lt(0), 'negative'), ) rules2 = rules((eq(0), 'zero'), ) these_rules = rules1 + rules2 self.assertEqual(len(these_rules), 3) self.assertEqual(decide(these_rules, 0), 'zero')
def test_addition(self): rules1 = rules( (gt(0), 'positive'), (lt(0), 'negative'), ) rules2 = rules( (eq(0), 'zero'), ) these_rules = rules1 + rules2 self.assertEqual(len(these_rules), 3) self.assertEqual(decide(these_rules, 0), 'zero')
def test_partial_application(self): positivity = decide(self.positivity_rules) self.assertIsInstance(positivity, collections.Callable) value = positivity(10) self.assertEqual(value, 'positive')
def test_non_rules_objects_as_rules(self): with self.assertRaises(TypeError): decide(['something', 'whatever'], 20)
def test_no_matching_rules(self): with self.assertRaises(NoMatchingRule): decide(self.positivity_rules, 0)
def test_nested_rules(self): value = decide(self.type_rules, 0) self.assertEqual(value, 'zero')
def test_flat_rules(self): value = decide(self.positivity_rules, -10) self.assertEqual(value, 'negative')