Let's bikeshed std.experimental.testing assertions/checks/whatchamacallits

Adrian Matoga via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 30 05:29:18 PDT 2015


On Tuesday, 30 June 2015 at 11:14:55 UTC, Atila Neves wrote:
> On Tuesday, 30 June 2015 at 08:38:44 UTC, Adrian Matoga wrote:
>> On Tuesday, 30 June 2015 at 08:06:37 UTC, Atila Neves wrote:
>>
>>> I'm not convinced composability brings anything to the table 
>>> except for editor dot-completion. I don't like the verbosity 
>>> of what's there now, but my prefererred syntax doesn't work 
>>> except for the ubiquitous  check for equality (`should ==`).
>>
>> Could you give some examples of your preferred syntax and why 
>> it doesn't work?
>
> `foo.should == "bar";` works. Nothing else does (and in fact in 
> retrospect it's surprising that == does) because they do 
> nothing by themselves. `foo.should != bar` is the same as 
> `!(foo == bar)`, which on a statement by itself is nonsensical 
> and rejected by the compiler with "has no effect in expression" 
> error. You could write something like `if(foo.should != "bar") 
> {}` and that compiles fine but it's super hacky and ugly.
>
> Atila

Thanks. I took a second look and now it looks obvious.

I'd vote for Dicebot's bikeshed design (2b). It's short and looks 
equally readable for every possible test.

Another hackish possibility could be to change the behavior of 
assert so that it also passes the stringified expression to 
_d_assert* and _d_unittest* in druntime.


More information about the Digitalmars-d mailing list