unittest vs exceptions?

Era Scarecrow rtcvb32 at yahoo.com
Sat Aug 4 15:28:34 PDT 2012


On Saturday, 4 August 2012 at 22:15:53 UTC, David Nadlinger wrote:
> On Saturday, 4 August 2012 at 22:09:03 UTC, Jonathan M Davis 
> wrote:
>> On Sunday, August 05, 2012 00:00:24 Maxime Chevalier wrote:
>>> How does unittest check for success/failure? Does assert 
>>> throw a special kind of error class when it fails? How would 
>>> you check that some code didn't throw an exception, or did 
>>> throw an exception?

>> assert throws an AssertError. The unittest failed message is 
>> its message, so if it's never thrown, then you won't get that 
>> message. And if an exception is thrown, then the assertion 
>> won't fail, so no AssertError will be thrown, just the 
>> exception that your function threw.

> A failed unit test really just means that a unit test block is 
> left via an exception. Currently, it just bubbles up to the 
> druntime main(), where it is printed to console and causes a 
> non-zero exit code, but future unit test frameworks could 
> handle this in a more advanced way.

  Not if it's static asserts :) Unless I'm wrong, I've recently 
used a few static asserts to ensure certain combinations of code 
don't compile (on purpose). This is important for proving the 
logic works the way it is suppose to. Sorta following TDPL 
example of is(typof() == bool) (pg 141):

   const int a = 42;

   static assert(is(typeof(a = 24) == bool) == false,
     "constness from 'a' not honored.");

  Although it seems like a small silly example, but when you 
include something generated for a mixin or template functions it 
becomes a very different story. Plus you'd get your warnings and 
errors during compiling and not runtime (find bugs faster?)


More information about the Digitalmars-d-learn mailing list