PEMLtest

 

A DSL for writing software tests for PEML descriptions.

Why a DSL for Test Writing?

We want PEML's testing model to cleanly support the inclusion of native-programming-language XUnit-style executable software tests (such as JUnit, CxxTest, NUnit, pyunit, etc.), so that the full expressiveness of such representations can be used when necessary.

However, at the same time, we realize that such testing infrastructure can be challenging for new users to master. As a result, PEML includes an associated custom testing DSL called PEMLtest designed to express a wide variety of software tests in a more concise, lighter weight way than XUnit programming. This DSL supports writing tests for multiple programming languages, and test specs can be translated down to executable XUnit-style tests in the target language.

While PEMLtest itself is programming-language-neutral, any specific test suite written for a given exercise will naturally be targeted toward the specific programming language in which solutions to that exercise are expected. In other words, while PEMLtest itself is neutral, the individual test suites written in it will be programming-language-specific in most cases (at least, until we can tackle that problem also!).

The model for PEMLtest is that a general-purpose generator allows one to generate executable XUnit-style tests in the target language for a specific problem. The tests for that problem will use specific features or ideas from the target language of the solution, even though these bits are placed in a surrounding language-neutral medium.

PEMLtest's Basic Structure

We want PEML's testing model to cleanly support the inclusion of native-programming-language XUnit-style executable software tests (such as JUnit, CxxTest, NUnit, pyunit, etc.), so that the full expressiveness of such representations can be used when necessary.