class FilterTester(object): def __init__(self, traceables_input): self.traceables = [] for tag, attributes in traceables_input: self.traceables.append(Traceable(None, tag)) self.traceables[-1].attributes = attributes self.filter = TraceablesFilter(self.traceables) def verify(self, expression, expected_tags): matches = self.filter.filter(expression) matched_tags = [traceable.tag for traceable in matches] unexpected_tags = [tag for tag in matched_tags if tag not in expected_tags] missing_tags = [tag for tag in expected_tags if tag not in matched_tags] message_parts = [] if unexpected_tags: message_parts.append("Unexpected but matched tag(s): {0}" .format(", ".join(unexpected_tags))) if missing_tags: message_parts.append("Expected but not matched tag(s): {0}" .format(", ".join(missing_tags))) if message_parts: message_parts.insert(0, "Filter expression {0!r}" .format(expression)) raise Exception("; ".join(message_parts))
def __init__(self, traceables_input): self.traceables = [] for tag, attributes in traceables_input: self.traceables.append(Traceable(None, tag)) self.traceables[-1].attributes = attributes self.filter = TraceablesFilter(self.traceables)