[m-users.] Basic Unit Test Framework

Dirk Ziegemeyer dirk at ziegemeyer.de
Tue Jul 14 07:49:39 AEST 2015

> Am 12.07.2015 um 22:37 schrieb Charles Shuller <charles.shuller at gmail.com>:
> 2)  I handle a small number of test dispositions, not just PASS or FAIL, because I used to be a QA engineer and test management turns into a nightmare if you only have pass/fail on any project of scale.  The added dispositions include some to indicate that a test cannot be run on a platform (or for a particular grade in mercury's case), has not been run for whatever reason, finds a bug that isn't going to be fixed, or something that should be broken starts working again.

That makes sense to me.

> 3) Hard to get a message about what failed if the predicate only succeeds of fails.  I save off results instead of pushing IO into the test harness though.   I felt it made more sense.

I also don’t like pushing IO through the test cases, but I didn’t accomplish to put test cases into a list. After reading in the reference manual section 8.3, that higher-order terms can cause problems in polymorphic collection types, I gave up my try to collect test cases in a list.

> Did you find any solutions to the problems I encountered, or is it just that our solutions target two different use cases :)

For a simple XML parser, I wrote dozens of test cases like these:

%% testDCG(TestNo, DCG-predicate, InputToBeParsed, ExpectedResult, !IO)

testDCG(1, nameStartChar, ":", yes(':'), !IO),
testDCG(2, nameStartChar, "-", no, !IO),
testDCG(3, nameChar, "-", yes('-'), !IO),
testDCG(4, name, "Name", yes("Name"), !IO),
testDCG(5, attValue, "\"AttValue\"", yes("AttValue"), !IO),
testDCG(6, attribute, "attribute=\"Value\"",
    yes({"attribute", "Value"}), !IO),

I don’t understand the syntax of test_case yet. Could you please give me an example, how I can write a list of test cases for different DCG predicates?



More information about the users mailing list