def test_complex_definition(self): definition_name1 = 'definition1' definition_name2 = 'definition2' definition_name3 = 'definition3' rule = WatchListRule(definition_name1 + '|' + definition_name2 + '|' + definition_name3, []) self.assertTrue(rule.match([definition_name1])) self.assertTrue(rule.match([definition_name2])) self.assertTrue(rule.match([definition_name3])) self.assertFalse(rule.match([definition_name1 + '1'])) self.assertFalse(rule.match([definition_name2 + '1'])) self.assertFalse(rule.match([definition_name3 + '1']))
def _parse_rules(self, rules_section): rules = [] for complex_definition in rules_section: instructions = rules_section[complex_definition] if not instructions: self._log_error( 'A rule for definition "%s" is empty, so it should be deleted.' % complex_definition) continue rules.append(WatchListRule(complex_definition, instructions)) return rules
def test_complex_definition_and(self): definition_name1 = 'definition1' definition_name2 = 'definition2' definition_name3 = 'definition3' rule = WatchListRule( definition_name1 + '&' + definition_name2 + '&' + definition_name3, []) self.assertFalse(rule.match([definition_name1])) self.assertFalse(rule.match([definition_name1, definition_name2])) self.assertFalse(rule.match([definition_name1, definition_name3])) self.assertFalse(rule.match([definition_name2])) self.assertFalse(rule.match([definition_name2, definition_name3])) self.assertFalse(rule.match([definition_name3])) self.assertTrue( rule.match([definition_name1, definition_name2, definition_name3]))
def test_simple_definition(self): definition_name = 'definition1' rule = WatchListRule(definition_name, []) self.assertTrue(rule.match([definition_name])) self.assertFalse(rule.match([definition_name + '1']))
def test_remove_instruction(self): instructions = ['a', 'b'] rule = WatchListRule('definition1', instructions[:]) rule.remove_instruction('b') self.assertEqual(['a'], rule.instructions())
def test_instruction_list(self): instructions = ['a', 'b'] rule = WatchListRule('definition1', instructions[:]) self.assertEqual(instructions, rule.instructions())
def test_complex_definition_combined(self): definition_name1 = 'definition1' definition_name2 = 'definition2' definition_name3 = 'definition3' definition_name4 = 'definition4' rule1 = WatchListRule(definition_name1 + '&!' + definition_name2, []) self.assertFalse(rule1.match([definition_name1, definition_name2])) self.assertFalse(rule1.match([definition_name2])) self.assertTrue(rule1.match([definition_name1])) rule2 = WatchListRule( definition_name1 + '|' + definition_name2 + '&!' + definition_name3, []) self.assertFalse(rule2.match([definition_name2, definition_name3])) self.assertFalse(rule2.match([definition_name3])) self.assertTrue(rule2.match([definition_name1])) self.assertTrue(rule2.match([definition_name1, definition_name2])) self.assertTrue( rule2.match([definition_name1, definition_name2, definition_name3])) self.assertTrue(rule2.match([definition_name1, definition_name3])) self.assertTrue(rule2.match([definition_name2])) rule3 = WatchListRule( definition_name1 + '|' + definition_name2 + '&!' + definition_name3 + '|!' + definition_name4, []) self.assertFalse( rule3.match([definition_name2, definition_name3, definition_name4])) self.assertFalse( rule3.match([definition_name2, definition_name3, definition_name4])) self.assertFalse(rule3.match([definition_name3, definition_name4])) self.assertFalse(rule3.match([definition_name3, definition_name4])) self.assertFalse(rule3.match([definition_name4])) self.assertTrue(rule3.match([definition_name1])) self.assertTrue( rule3.match([ definition_name1, definition_name2, definition_name3, definition_name4 ])) self.assertTrue( rule3.match([definition_name1, definition_name2, definition_name4])) self.assertTrue( rule3.match([definition_name1, definition_name3, definition_name4])) self.assertTrue(rule3.match([definition_name1, definition_name4])) self.assertTrue(rule3.match([definition_name2])) self.assertTrue(rule3.match([definition_name2, definition_name4])) self.assertTrue(rule3.match([definition_name2, definition_name4])) self.assertTrue(rule3.match([definition_name2, definition_name4])) self.assertTrue(rule3.match([definition_name3]))
def test_complex_definition_not(self): definition_name1 = 'definition1' definition_name2 = 'definition2' rule = WatchListRule('!' + definition_name1, []) self.assertFalse(rule.match([definition_name1])) self.assertTrue(rule.match([definition_name2]))