Prolog "diagnose"

Admin User, created Dec 04. 2023
         
/**
* Modern Albufeira Prolog Interpreter
*
* Warranty & Liability
* To the extent permitted by applicable law and unless explicitly
* otherwise agreed upon, XLOG Technologies AG makes no warranties
* regarding the provided information. XLOG Technologies AG assumes
* no liability that any problems might be solved with the information
* provided by XLOG Technologies AG.
*
* Rights & License
* All industrial property rights regarding the information - copyright
* and patent rights in particular - are the sole property of XLOG
* Technologies AG. If the company was not the originator of some
* excerpts, XLOG Technologies AG has at least obtained the right to
* reproduce, change and translate the information.
*
* Reproduction is restricted to the whole unaltered document. Reproduction
* of the information is only allowed for non-commercial uses. Selling,
* giving away or letting of the execution of the library is prohibited.
* The library can be distributed as part of your applications and libraries
* for execution provided this comment remains unchanged.
*
* Restrictions
* Only to be distributed with programs that add significant and primary
* functionality to the library. Not to be distributed with additional
* software intended to replace any components of the library.
*
* Trademarks
* Jekejeke is a registered trademark of XLOG Technologies AG.
*/
:-(ensure_loaded(library(/(tester, runner)))).
:-(multifile(/(result_summary, 2))).
:-(dynamic(/(result_summary, 2))).
:-(multifile(/(result_suite, 3))).
:-(dynamic(/(result_suite, 3))).
:-(multifile(/(result_tests, 4))).
:-(dynamic(/(result_tests, 4))).
:-(multifile(/(result_pred, 6))).
:-(dynamic(/(result_pred, 6))).
:-(multifile(/(result, 7))).
:-(dynamic(/(result, 7))).
:-(diagnose_online(Tags), ','(sys_list_suites(Tags), ','(write('Folder: '), ','(flush_output, ','(read(E), ','(once(runner_folder(E, _)), ','(sys_list_tests(E, Tags), ','(write('File: '), ','(flush_output, ','(read(D), ','(once(runner_file(E, D, _)), ','(sys_list_pred(E, D, Tags), ','(write('Predicate: '), ','(flush_output, ','(read(/(F, N)), ','(once(runner_pred(F, N, E, D, _)), ','(sys_list_result(F, N, E, D, Tags), !))))))))))))))))).
diagnose_online(_).
:-(sys_list_suites(Tags), ','(;(','(member(Tag, Tags), ','(write(Tag), ','(write('\t'), fail))), true), ','(write('Folder'), ','(nl, ','(runner_folder(E, _), ','(;(','(member(Tag, Tags), ','(result_suite(E, Tag, Z), ','(sys_list_data(Z), fail))), true), ','(write(E), ','(nl, fail)))))))).
:-(sys_list_suites(Tags), ','(;(','(member(Tag, Tags), ','(result_summary(Tag, Z), ','(sys_list_data(Z), fail))), true), ','(write('Total'), nl))).
:-(sys_list_tests(E, Tags), ','(;(','(member(Tag, Tags), ','(write(Tag), ','(write('\t'), fail))), true), ','(write('File'), ','(nl, ','(runner_file(E, D, _), ','(;(','(member(Tag, Tags), ','(result_tests(E, D, Tag, Z), ','(sys_list_data(Z), fail))), true), ','(write(D), ','(nl, fail)))))))).
:-(sys_list_tests(E, Tags), ','(;(','(member(Tag, Tags), ','(result_suite(E, Tag, Z), ','(sys_list_data(Z), fail))), true), ','(write('Total'), nl))).
:-(sys_list_pred(E, D, Tags), ','(;(','(member(Tag, Tags), ','(write(Tag), ','(write('\t'), fail))), true), ','(write('Predicate'), ','(nl, ','(runner_pred(F, N, E, D, _), ','(;(','(member(Tag, Tags), ','(result_pred(F, N, E, D, Tag, Z), ','(sys_list_data(Z), fail))), true), ','(write(F), ','(write(/), ','(write(N), ','(nl, fail)))))))))).
:-(sys_list_pred(E, D, Tags), ','(;(','(member(Tag, Tags), ','(result_tests(E, D, Tag, Z), ','(sys_list_data(Z), fail))), true), ','(write('Total'), nl))).
:-(sys_list_result(F, N, E, D, Tags), ','(;(','(member(Tag, Tags), ','(write(Tag), ','(write('\t'), fail))), true), ','(write('Case'), ','(nl, ','(clause(runner_case(F, N, E, D, C), _), ','(;(','(member(Tag, Tags), ','(result(F, N, E, D, C, Tag, Z), ','(sys_list_data(Z), fail))), true), ','(write(C), ','(nl, fail)))))))).
:-(sys_list_result(F, N, E, D, Tags), ','(;(','(member(Tag, Tags), ','(result_pred(F, N, E, D, Tag, Z), ','(sys_list_data(Z), fail))), true), ','(write('Total'), nl))).
:-(sys_list_data(-(A, B)), ','(!, ','(write(A), ','(write(' '), ','(write(B), write('\t')))))).
:-(sys_list_data(A), ','(write(A), write('\t'))).