Daistish: Systematic Testing with ADT Axioms



Daistish is a test oracle generator for C++ classes. It is similar is operating principles to Gannon's DAISTS system.

We will be using Daistish to test our implementations of ADTs specified with axioms.

Software distribution (daistish itself)
User manual
Example: Class Bounded Set (of int), with contract enforcement
Example: Class Bounded Set (no contract enforcement)
Example: Class Multi-Set (Bag)
Example: Class Stack

C++ programming style

Daistish does not handle the entire C++ language (but it's close). It does handle a large enough subset to do significant programming, and certainly large enough to implement the classes we are specifying as ADTs. The ommissions are primarily in pointer use.

To wit, you must program your classes in C++ using these restrictions:


Using Assertions in C++

The contract method of programming that we have been studying, using pre- and post-conditions, is directly supported in OOPLs like Eiffel, but not directly in C++. We can use the "assert" statement to simulate it, but a few carefully thought out functions can make the support more direct.