#!/usr/bin/python import os import sys class BreakPoint: def __init__(self, bp_name): self.name = bp_name self.values = {} self.var_values = {} def recordArgument(self, arg_name, value): self.values[arg_name] = value def recordVariable(self, var_name, var_value): self.var_values[var_name] = var_value def __repr__(self): print self.name items = self.values.items() for i in range(len(items)): print items[i][0]," = ",items[i][1] return '' def compare_args(self, other): return cmp(self.values, other.values) def compare_vars(self, other): return cmp(self.var_values, other.var_values) def __cmp__(self, other): return cmp(self.values, other.values) def read_input(filename, dict): f = open(filename, "r") lines = f.readlines() for l in range(len(lines)): c = lines[l].split() if c[0] == "#Argument": bp = dict.get(c[2]) if bp is None: bp = BreakPoint(c[1]) dict[c[2]] = bp bp.recordArgument(c[3], c[4]) if c[0] == "#Variables": bp = dict.get(c[2]) if bp is None: bp = BreakPoint(c[1]) dict[c[2]] = bp bp.recordVariable(c[3], c[4]) f.close() return f1_breakpoints = {} read_input(sys.argv[1], f1_breakpoints) f1_items = f1_breakpoints.items() f2_breakpoints = {} read_input(sys.argv[2], f2_breakpoints) f2_items = f2_breakpoints.items() arg_mismatch = 0 var_mismatch = 0 for f2bp in range(len(f2_items)): id = f2_items[f2bp][0] bp = f2_items[f2bp][1] bp1 = f1_breakpoints.get(id) if bp1 is None: print "bp is missing" else: if bp1.compare_args(bp): arg_mismatch = arg_mismatch + 1 if bp1.compare_vars(bp): var_mismatch = var_mismatch + 1 l2 = len(f2_items) print "==========" if l2 != 0: print sys.argv[3]," Argument success rate is", (l2-arg_mismatch)*100/l2,"%" print sys.argv[3]," Variable success rate is", (l2-var_mismatch)*100/l2,"%" else: print sys.argv[3]," success rate is 100%" print "=========="