From 12af68f993ddde88f48a9120ab9bde60f05be2f1 Mon Sep 17 00:00:00 2001 From: Yeongjong Lee Date: Sun, 11 Nov 2018 11:32:11 +0200 Subject: [PATCH] Inspect: support to print the exu diff result to standard output Summary: This is helpful to get simple result of .exu diff without file access Test Plan: exactness_inspect --compare test.exu test.compare.exu --output=out.exu Reviewers: jsuya, JackDanielZ Reviewed By: JackDanielZ Subscribers: myoungwoon, akanad, bowonryu Differential Revision: https://phab.enlightenment.org/D7239 --- src/bin/inspect.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/src/bin/inspect.c b/src/bin/inspect.c index 670144f..6067a3c 100644 --- a/src/bin/inspect.c +++ b/src/bin/inspect.c @@ -1119,6 +1119,71 @@ _gui_unit_display(Exactness_Unit *unit1, Exactness_Unit *unit2) } } +static void +_diff_result_print(Exactness_Unit *unit1, Exactness_Unit *unit2) +{ + Eina_List *itr1, *itr2; + + int nb_scenario = 0, nb_diff_scenario = 0; + int nb_image = 0, nb_diff_image = 0; + int nb_objtree= 0, nb_diff_objtree = 0; + + itr1 = unit1 ? unit1->actions : NULL; + itr2 = unit2 ? unit2->actions : NULL; + + while (itr1 || itr2) + { + Exactness_Action *v1 = itr1 ? eina_list_data_get(itr1) : NULL; + Exactness_Action *v2 = itr2 ? eina_list_data_get(itr2) : NULL; + + nb_scenario++; + if (_are_scenario_entries_different(v1, v2)) + nb_diff_scenario++; + + if (itr1) itr1 = eina_list_next(itr1); + if (itr2) itr2 = eina_list_next(itr2); + } + + itr1 = unit1 ? unit1->imgs : NULL; + itr2 = unit2 ? unit2->imgs : NULL; + + while (itr1 || itr2) + { + Exactness_Image *img1 = itr1 ? eina_list_data_get(itr1) : NULL; + Exactness_Image *img2 = itr2 ? eina_list_data_get(itr2) : NULL; + + nb_image++; + if (_are_images_different(img1, img2)) + nb_diff_image++; + + if (itr1) itr1 = eina_list_next(itr1); + if (itr2) itr2 = eina_list_next(itr2); + } + + itr1 = unit1 ? unit1->objs : NULL; + itr2 = unit2 ? unit2->objs : NULL; + + while (itr1 || itr2) + { + Exactness_Objects *objs1 = itr1 ? eina_list_data_get(itr1) : NULL; + Exactness_Objects *objs2 = itr2 ? eina_list_data_get(itr2) : NULL; + + nb_objtree++; + if (_are_objs_trees_different(objs1, objs2)) + nb_diff_objtree++; + + if (itr1) itr1 = eina_list_next(itr1); + if (itr2) itr2 = eina_list_next(itr2); + } + + printf("%s\nscenario (%d/%d)\nimage (%d/%d)\nobjs_tree (%d/%d)\n", + nb_diff_scenario || nb_diff_image || nb_diff_objtree ? + "Failure" : "Success", + nb_scenario - nb_diff_scenario, nb_scenario, + nb_image - nb_diff_image, nb_image, + nb_objtree - nb_diff_objtree, nb_objtree); +} + static Exactness_Image * _image_read(const char *filename) { @@ -1498,6 +1563,7 @@ main(int argc, char *argv[]) } else if (!strcmp(out_ext, ".exu")) { + _diff_result_print(unit1, unit2); if (unitO) exactness_unit_file_write(unitO, output); else ret = 0; }