def make_tester_speed_table(tester_speeds, output): make_resource("tester_speed.tex.jinja2", output + ".tex", testers=sorted(tester_speeds.keys()), speeds=tester_speeds) with open(output + ".json", 'w') as f: json.dump(tester_speeds, f)
def stats_pages_table(stats, table_tex_file="pages_score.tex", csv_file="page_scores.csv"): scores = {} averages = {} for tester, tester_stats in stats["testers"].items(): for page_name, page_stats in tester_stats["pages"].items(): if page_name not in scores.keys(): scores[page_name] = {} scores[page_name][tester] = page_stats["mutation_score"] for page_name, page_scores in scores.items(): total = 0 for tester, score in page_scores.items(): total += score averages[page_name] = total / len(page_scores) make_resource("page_score.tex.jinja2", table_tex_file, pages=sorted(scores.keys()), testers=sorted(stats["testers"].keys()), scores=scores, averages=averages) if csv_file is not None: testers_list = stats["testers"].keys() with open(csv_file, 'w', newline='') as f: writer = csv.writer(f) writer.writerow([".PageName"] + [tester for tester in testers_list]) for page, page_scores in scores.items(): writer.writerow( [page] + [page_scores[tester] for tester in testers_list])
def pages_table(pages_desc_file, pages_tex_file="pages.tex"): page_descriptions = {} with open(pages_desc_file) as f: page_descriptions = json.load(f) for page in page_descriptions.keys(): if page_descriptions[page][-1] == '\n': page_descriptions[page] = page_descriptions[page][:-1] make_resource("pages.tex.jinja2", pages_tex_file, pages=sorted(page_descriptions.keys()), page_descriptions=page_descriptions)
def page_mutations_table(report_object, table_tex_file="page_operators.tex"): pages = {} page_names = [] for _, page in report_object.items(): initial_page = page["parent"] if initial_page not in pages.keys(): pages[initial_page] = {} page_names.append(initial_page) for operator in page["mutations"]: if operator not in pages[initial_page].keys(): pages[initial_page][operator] = 0 pages[initial_page][operator] += 1 make_resource("page_operators.tex.jinja2", table_tex_file, page_names=page_names, pages=pages)
def stats_operator_table(stats, table_tex_file="operator_score.tex"): scores = {} averages = {} for tester, tester_stats in stats["testers"].items(): for operator, operator_stats in tester_stats["operators"].items(): if operator not in scores.keys(): scores[operator] = {} scores[operator][tester] = operator_stats["mutation_score"] for operator, operator_scores in scores.items(): total = 0 for tester, score in operator_scores.items(): total += score averages[operator] = total / len(operator_scores) make_resource("operator_score.tex.jinja2", table_tex_file, operators=sorted(scores.keys()), testers=sorted(stats["testers"].keys()), scores=scores, averages=averages)
def stats_mutation_table(stats, table_tex_file="tester_score.tex"): make_resource("tester_score.tex.jinja2", table_tex_file, testers=sorted(stats["testers"].keys()), stats=stats["testers"])