On Monday, 26 October 2020 at 13:16:32 UTC, Vladimirs Nordholm wrote:
Hello.
[...]

Additionally, if you care about generating documentation, then placing them after whatever is being tested can make them end up as examples (of how to use them). Handy if your unittests shows how they're used and not only tests that they work; not so much otherwise.

class Foo
{
    /// asdf
    int multiplier;

    /++
        Multiplies stuff by `multiplier`.

        Params:
            n = Number to multiply.

        Returns:
            The integer passed, multiplied by `multiplier`.
     +/
    int mul(int n)
    {
        return multiplier * n;
    }

    ///
    unittest
    {
// Will end up in examples section, provided /// is placed above unittest
        Foo foo = new Foo;
        foo.multiplier = 2;

        int four = foo.mul(2);
        int six = foo.mul(3);
        int eight = foo.mul(4);
        int ten = foo.mul(5);
    }
}

https://i.imgur.com/zjuJQkR.jpg

Even so I keep my larger test suite in a separate tests/ directory next to source/, but mostly because they'd swamp the original source files. You also lose the ability to unittest private stuff this way.

Reply via email to