def test_segment_matches_data(self): segment = Segment(name="Foo") true_rule_1 = Rule(group_id=1, field='sessions_count', comparator="MATCH", value=self.visitor_data['sessions_count']) false_rule_1 = Rule(group_id=1, field='sessions_count', comparator="MATCH", value=100) true_rule_2 = Rule(group_id=2, field='sessions_count', comparator="MATCH", value=self.visitor_data['sessions_count']) false_rule_2 = Rule(group_id=2, field='sessions_count', comparator="MATCH", value=100) # False segment.rules = [] self.assertFalse(segment.matches_data(self.visitor_data)) # True segment.rules = [true_rule_1] self.assertTrue(segment.matches_data(self.visitor_data)) # False segment.rules = [false_rule_1] self.assertFalse(segment.matches_data(self.visitor_data)) # True OR False = True segment.rules = [true_rule_1, false_rule_1] self.assertTrue(segment.matches_data(self.visitor_data)) # False OR True = True segment.rules = [false_rule_1, true_rule_1] self.assertTrue(segment.matches_data(self.visitor_data)) # True OR True = True segment.rules = [true_rule_1, true_rule_1] self.assertTrue(segment.matches_data(self.visitor_data)) # False OR False = False segment.rules = [false_rule_1, false_rule_1] self.assertFalse(segment.matches_data(self.visitor_data)) # True AND True = True segment.rules = [true_rule_1, true_rule_2] self.assertTrue(segment.matches_data(self.visitor_data)) # True AND False = False segment.rules = [true_rule_1, false_rule_2] self.assertFalse(segment.matches_data(self.visitor_data)) # False AND True = False segment.rules = [false_rule_2, true_rule_1] self.assertFalse(segment.matches_data(self.visitor_data)) # False AND False = False segment.rules = [false_rule_1, false_rule_2] self.assertFalse(segment.matches_data(self.visitor_data)) # True AND (True OR False) = True segment.rules = [true_rule_1, true_rule_2, false_rule_2] self.assertTrue(segment.matches_data(self.visitor_data)) # False AND (True OR False) = False segment.rules = [false_rule_1, true_rule_2, false_rule_2] self.assertFalse(segment.matches_data(self.visitor_data))