optionally verbose assertions

Daniel Gibson metalcaedes at gmail.com
Thu Apr 14 09:35:49 PDT 2011


Am 14.04.2011 17:47, schrieb Steven Schveighoffer:
> On Thu, 14 Apr 2011 11:28:39 -0400, spir <denis.spir at gmail.com> wrote:
> 
>> On 04/14/2011 04:03 PM, Steven Schveighoffer wrote:
>>> Sometimes, I worry that my unit tests or asserts aren't running. 
>>> Every once in
>>> a while, I have to change one to fail to make sure that code is
>>> compiling (this
>>> is especially true when I'm doing version statements or templates). 
>>> It would
>>> be nice if there was a -assertprint mode which showed asserts
>>> actually running
>>> (only for the module compiled with that switch, of course).
>>
>> Man, I'm very pleased to read someone else advocating for optionally
>> verbose assertions.
>> This could use 2 arguments instead of a predicate:
>>      assert(expressions, value);
>> Example use:
> 
> [snip]
> 
> I don't think we can change assert syntax now.  What I was looking was
> for something more like:
> 
> assert(x == y);
> 
> prints out
> 
> "asserting x == y: true"
> 
> for asserts that pass when you have the 'verbose assert' flag turned
> on.  This should be easy to do in the compiler by just translating
> 
> assert(expr);
> 
> to something like:
> 
> auto result = evaluateAssert(expr);
> print("asserting expr: ", result ? "true" : "false");
> assert(result);
> 
> -Steve

Another possibility are named unittests and printing out "running test
'foobar' was successful".
One message for every assert is too verbose IMHO.

Cheers,
- Daniel


More information about the Digitalmars-d mailing list