From 197a4703c6bc28c07f6c8c9b206c099075fc3694 Mon Sep 17 00:00:00 2001 From: Viacheslav Kroilov Date: Sat, 17 Mar 2018 16:03:41 +0100 Subject: [PATCH] Fix res_printer in python --- epi_judge_python/interval_add.py | 8 ++++++-- epi_judge_python/rectangle_intersection.py | 9 +++++++-- epi_judge_python/road_network.py | 8 ++++++-- epi_judge_python/search_for_min_max_in_array.py | 9 +++++++-- epi_judge_python/search_for_missing_element.py | 9 +++++++-- epi_judge_python/test_framework/test_utils_console.py | 11 ++++++----- 6 files changed, 39 insertions(+), 15 deletions(-) diff --git a/epi_judge_python/interval_add.py b/epi_judge_python/interval_add.py index 65d2be4c2..ae20224fa 100644 --- a/epi_judge_python/interval_add.py +++ b/epi_judge_python/interval_add.py @@ -1,6 +1,7 @@ import collections import functools +from test_framework.test_failure import PropertyName from test_framework.test_utils import enable_executor_hook Interval = collections.namedtuple('Interval', ('left', 'right')) @@ -19,11 +20,14 @@ def add_interval_wrapper(executor, disjoint_intervals, new_interval): Interval(*new_interval))) -def res_printer(expected, result): +def res_printer(prop, value): def fmt(x): return [[e[0], e[1]] for e in x] if x else None - return fmt(expected), fmt(result) + if prop in (PropertyName.EXPECTED, PropertyName.RESULT): + return fmt(value) + else: + return value from sys import exit diff --git a/epi_judge_python/rectangle_intersection.py b/epi_judge_python/rectangle_intersection.py index 181aecb4b..332159f8b 100644 --- a/epi_judge_python/rectangle_intersection.py +++ b/epi_judge_python/rectangle_intersection.py @@ -1,5 +1,7 @@ import collections +from test_framework.test_failure import PropertyName + Rectangle = collections.namedtuple('Rectangle', ('x', 'y', 'width', 'height')) @@ -12,11 +14,14 @@ def intersect_rectangle_wrapper(R1, R2): return intersect_rectangle(Rectangle(*R1), Rectangle(*R2)) -def res_printer(expected, result): +def res_printer(prop, value): def fmt(x): return [x[0], x[1], x[2], x[3]] if x else None - return fmt(expected), fmt(result) + if prop in (PropertyName.EXPECTED, PropertyName.RESULT): + return fmt(value) + else: + return value from sys import exit diff --git a/epi_judge_python/road_network.py b/epi_judge_python/road_network.py index 5a4d71e97..2ff2c79f7 100644 --- a/epi_judge_python/road_network.py +++ b/epi_judge_python/road_network.py @@ -2,6 +2,7 @@ import functools from test_framework.test_utils import enable_executor_hook +from test_framework.test_failure import PropertyName HighwaySection = collections.namedtuple('HighwaySection', ('x', 'y', 'distance')) @@ -20,11 +21,14 @@ def find_best_proposals_wrapper(executor, H, P, n): return executor.run(functools.partial(find_best_proposals, H, P, n)) -def res_printer(expected, result): +def res_printer(prop, value): def fmt(x): return [x[0], x[1], x[2]] if x else None - return fmt(expected), fmt(result) + if prop in (PropertyName.EXPECTED, PropertyName.RESULT): + return fmt(value) + else: + return value from sys import exit diff --git a/epi_judge_python/search_for_min_max_in_array.py b/epi_judge_python/search_for_min_max_in_array.py index 96cc659bc..cfaa415a8 100644 --- a/epi_judge_python/search_for_min_max_in_array.py +++ b/epi_judge_python/search_for_min_max_in_array.py @@ -1,5 +1,7 @@ import collections +from test_framework.test_failure import PropertyName + MinMax = collections.namedtuple('MinMax', ('smallest', 'largest')) @@ -8,11 +10,14 @@ def find_min_max(A): return MinMax(0, 0) -def res_printer(expected, result): +def res_printer(prop, value): def fmt(x): return 'min: {}, max: {}'.format(x[0], x[1]) if x else None - return fmt(expected), fmt(result) + if prop in (PropertyName.EXPECTED, PropertyName.RESULT): + return fmt(value) + else: + return value from sys import exit diff --git a/epi_judge_python/search_for_missing_element.py b/epi_judge_python/search_for_missing_element.py index 71d21d0a4..602f8ea7d 100644 --- a/epi_judge_python/search_for_missing_element.py +++ b/epi_judge_python/search_for_missing_element.py @@ -1,5 +1,7 @@ import collections +from test_framework.test_failure import PropertyName + DuplicateAndMissing = collections.namedtuple('DuplicateAndMissing', ('duplicate', 'missing')) @@ -9,11 +11,14 @@ def find_duplicate_missing(A): return DuplicateAndMissing(0, 0) -def res_printer(expected, result): +def res_printer(prop, value): def fmt(x): return 'duplicate: {}, missing: {}'.format(x[0], x[1]) if x else None - return fmt(expected), fmt(result) + if prop in (PropertyName.EXPECTED, PropertyName.RESULT): + return fmt(value) + else: + return value from sys import exit diff --git a/epi_judge_python/test_framework/test_utils_console.py b/epi_judge_python/test_framework/test_utils_console.py index 2b5780a2f..13714558d 100644 --- a/epi_judge_python/test_framework/test_utils_console.py +++ b/epi_judge_python/test_framework/test_utils_console.py @@ -91,13 +91,14 @@ def print_failed_test(param_names, arguments, test_failure, res_printer): print_std_out_colored(ConsoleColor.FG_YELLOW, '\nFailure info\n') for prop in properties: + if res_printer is not None: + value = res_printer(prop.raw_name(), prop.value()) + else: + value = prop.value() print('\t', end='') print_std_out_colored(ConsoleColor.FG_YELLOW, prop.name()) - print(': {}{}'.format(gen_spaces(max_col_size - len(prop.name())), - prop.value())) - - # TODO Implement res_printer logic - # (expected, result) = res_printer(expected, result) + print(': {}{}'.format( + gen_spaces(max_col_size - len(prop.name())), value)) def print_post_run_stats(tests_passed, total_tests, durations):