Daniel, I tried out the code, perfect!
However I was surprised (and suitably delighted and impressed) that one can write X/Y in that predicate …… could you explain exactly what is going on here as it is not something I have encountered yet. There *may* be something like it in my AOP book but it’s in work right now! I know there is an odd “difference list syntax” in that book too but that uses “\” not “/“. Thanks a lot once again. Sean On 5 Nov 2013, at 21:41, Paulo Moura <[email protected]> wrote: > Hi Sean, > > On 05/11/2013, at 21:27, Sean Charles <[email protected]> wrote: > >> Hi, >> >> I just wrote a *really simple* testing framework for my project, it looks >> like this at the test script end: >> >> test_package([it('should ensure that global values have expected settings', >> defaults_correctly_set_test) >> ,it('should correctly set the quiet flag on "-q"', >> respect_quiet('-q')) >> ,it('should correctly set the quiet flag on "--quiet"', >> respect_quiet('--quiet')) >> ,it('should correctly set the wrap flag on "--wrap"', respect_wrap) >> ,it('should correctly set the check flag on "--nocheck"', >> respect_check) >> ,it('should add unhandled options as source filenames', >> filename_check) >> ,it('should throw exceptions on unknown options', >> handle_unknown_options) >> ]). >> >> The test_package predicate is called from the framework by the script, the >> script pulls in the file and that has an initialisation instruction: >> >> :- initialization(run_tests). >> >> run_tests :- >> test_package(AllTests), >> maplist(call, AllTests), >> ink(normal, '*done*'), >> stop. >> >> >> What would have made it *really* nice was to have been able to find all >> predicates starting with test_ or ending with _test etc. so that I would not >> have needed to make the test_package predicate unify the variable with the >> list of tests to be run. Some tests mentioned above... >> >> defaults_correctly_set_test :- >> cl_set_defaults, >> >> get_all_globals([],[],user_input,user_output,php,nowrap,check,plain,noisy). >> >> >> respect_quiet(Flag) :- >> cl_set_defaults, >> process_option(Flag), >> get_all_globals(_,_,_,_,_,_,_,_,quiet). >> >> >> As you can see, having to enter the test predicate AND enter it in the test >> package isn’t ideal ALTHOUGH it does allow me to provide a nice label but I >> could have done that with a really long predicate name anyway. >> >> So, how would I do that in GNU Prolog…if it is possible. The listing() >> predicate is not much help in this instance… > > You may find some inspiration on the Logtalk unit test tool, which uses the > term-expansion mechanism in its implementation to collect the tests defined > in an unit in order to run them. See: > > https://github.com/LogtalkDotOrg/logtalk3/tree/master/tools/lgtunit > > You should also be able to use it for testing your project code. > > Cheers, > > Paulo > > ----------------------------------------------------------------- > Paulo Moura > Logtalk developer > > Email: <mailto:[email protected]> > Web: <http://logtalk.org/> > ----------------------------------------------------------------- > > > > > > _______________________________________________ > Users-prolog mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/users-prolog
_______________________________________________ Users-prolog mailing list [email protected] https://lists.gnu.org/mailman/listinfo/users-prolog
