[Issue 2749] New: Make unittests named and nestable

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Mar 19 12:42:28 PDT 2009


http://d.puremagic.com/issues/show_bug.cgi?id=2749

           Summary: Make unittests named and nestable
           Product: D
           Version: 1.041
          Platform: All
               URL: http://www.digitalmars.com/d/archives/digitalmars/D/Impr
                    oving_unit_tests_79469.html
        OS/Version: All
            Status: NEW
          Keywords: diagnostic, spec
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: gide at nwawudu.com


The current unit tests lack some functionality. 
- The current unit tests are not named.
- There is no output that specifically indicates that the tests were run.
- A single failing test will prevent all other tests from running.
- There is no indication of which test failed.
- There is no way to only run a subset of tests.

Changing the language to allow nested and named unittest would help. 
The nesting would allow for the only the tests within the scope to fail and
subsequent tests would run. The naming could be used to provide output and to
select which tests are run.

Example of unittest
===================

unittest ("XML") {
    unittest("elements") {
        assert(isValidXml("<aaa />"));
        assert(isValidXml("<aaa/>"));
        assert(isValidXml("<aaa></aaa>"));
        ...
        unittest("case unmatched") assert(!isValidXml("<AaA></aaa>"));
        unittest("no closing") assert(!isValidXml("<aaa>"));
        ...
    }

    unittest("attributes") {
        assert(isValidXml("<aaa abc='x'/>"));
        assert(isValidXml("<aaa abc="\x\"/>"));
        assert(isValidXml("<aaa abc=\"x\" def=\"y\"/>"));
        ...
        unittest("unquoted") assert(!isValidXml("<aaa abc=x />"));
        unittest("multi attr") assert(!isValidXml("<aaa abc='x' abc='y'/>"));
        ...
    }

    unittest("encoding") {
        assert(encode("hello") is "hello");
        assert(encode("a > b") == "a &gt; b");
        ...
    }       
}


-- 



More information about the Digitalmars-d-bugs mailing list