dmocks version 0.1

Christopher Wright dhasenan at gmail.com
Wed Nov 7 15:45:59 PST 2007


Hello all.

For the Test-Driven Development people out there, and all the fans of 
unittesting, I'm releasing a mock objects framework for D2, dmocks. It 
can mock classes and interfaces, even if they are templated; it cannot 
mock structs due to inheritance issues, and it can only mock virtual 
methods (no templated methods, sorry; not my fault).

Download:
http://damask-mud.googlecode.com/files/dmocks.zip

Subversion:
svn checkout http://damask-mud.googlecode.com/svn/trunk/mocks/

Note that these are temporary locations, and I hope to move the project 
to dsource shortly.

Examples:
class Bar {
    int doSomeCalculations (ubyte[] data) { ... }
}
class Foo {
    private Bar bar;
    this (Bar bar) { this.bar = bar; }

    int calculateStuff (ubyte[] data) {
       int i = bar.doSomeCalculations (data);
       ...
       return i;
    }

    unittest {
       Mocker m = new Mocker();
       auto bar = m.Mock!(Bar);
       ubyte[] data = null;

       bar.doSomeCalculations(data);
       m.LastCall().Return(5);
       // or m.Expect(bar.doSomeCalculations(data)).Return(5);

       m.Replay();
       Foo target = new Foo(bar);
       target.calculateStuff(data);

       m.Verify();
    }
}

Address any complaints you have to dhasenan -at- gmail -dot- com. If 
anyone has issues with style, I can offer both CamelCase and 
abridgedCamelCase; if enough people request it, I'll offer a free 
function interface if I can find a sane way of doing it. Complaints 
about functionality will be addressed first.


The framework in its current state represents about three days' work, 
which is more a sign of the ease of using D than any special abilities I 
have.

Dmocks is brought to you by __traits and string mixins. We therefore 
regret to inform you that it is only available for D version 2.



More information about the Digitalmars-d-announce mailing list