Proposal: Enhancing unittest with Inline Module-Level Statements

Salih Dincer salihdb at hotmail.com
Thu Nov 21 05:54:47 UTC 2024


On Wednesday, 20 November 2024 at 09:48:06 UTC, Jonathan M Davis 
wrote:
> On Tuesday, November 19, 2024 11:11:58 PM MST Sharif yt via
>> ...
>> Inspired by an idea I came across (and expanded upon), this
>> approach allows inline assertions using unittest() with
>> parentheses instead of braces {}...
> ...
> So, IMHO, this would be adding more complication to the 
> language just to try to make it easier to write inadequate 
> tests, and I don't think think that we should be doing that.

I agree with Jonathan. In addition, instead of the ordinary 
`assert()`, I use the following `assert_eq()`, inspired by Rust. 
This gives me 2 extra usage featıres.

```d
alias equal = assert_eq;
template assert_eq(string msg = "error", R)
{
   enum pred = "a != b";

   bool assert_eq(in R p, in R q)
   {
     static if (imported!"std.range".hasLength!R)
     {
       import std.algorithm : equal;
       if (p.equal!pred(q))
         goto _error_;
     }	
	
     if (p != q)
       _error_:
	
     static if (msg.length) assert(0, msg);
     else return 0;

     return 1;
   }
}
```
SDB at 79




More information about the Digitalmars-d mailing list