Static unittests?
monarch_dodra
monarchdodra at gmail.com
Mon Aug 5 11:27:00 PDT 2013
On Monday, 5 August 2013 at 18:15:22 UTC, Dicebot wrote:
> On Monday, 5 August 2013 at 17:30:38 UTC, monarch_dodra wrote:
>> static assert({int i; assert(i == 0;});
>
> enum i;
> static assert(i == 0);
>
> I am really struggling to understand the use case.
> D has a tool to force CTFE execution - `enum`. It has a tool
> for compile-time checks - `static assert`. Any possible
> compile-time test can be expressed via those. All
> assertCTFEable or similar tool adds is ability to save on some
> `static` markers.
You are working around the argument. The point is that some calls
simply can't be reduced to a single call. How would you deal with
testing "parse" then?
assertCTFEable!({ string s = "1234abc"; assert(parse! int(s) ==
1234 && s == "abc"); });
The point is that you can write "native" runtime code, and then
only CTFE test it once. It brings more than just "saving" on
markers.
What about, for example:
assertCTFEable!({
int i = 5;
string s;
while (i--)
s ~= 'a';
assert(s == "aaaaa");
});
And still, all of these are just simple cases.
More information about the Digitalmars-d
mailing list