On Tuesday, 31 July 2018 at 07:49:40 UTC, Shachar Shemesh wrote:
On 31/07/18 10:29, Mike Franklin wrote:
Please clarify if I'm missing the point.
You are. I want something along the lines of:
assertEQ(a, b, "a and b are not equal");
When run, it would issue an assert that says:
Assertion failed: 3!=7: a and b are not equal
What D really needs is power asserts. assertEQ's and its
companions (assertLT, assertLE, ...) feel just like hacks.
Power asserts come from Groovy and look like this
(http://groovy-lang.org/semantics.html#_power_assertion):
assert calc(x,y) == [x,z].sum()
| | | | | | |
15 2 7 | 2 5 7
false
A poorer version exists in C++
(https://www.boost.org/doc/libs/1_67_0/libs/test/doc/html/boost_test/testing_tools/boost_test_universal_macro.html)
and of course any language with decent metaprogramming facilities
can implement them as a library solution (such as Rust:
https://github.com/gifnksm/power-assert-rs and Go:
https://github.com/ToQoz/gopwt).
If you can not go the route of metaprogramming, provide an assert
backend (Javascript:
https://github.com/power-assert-js/power-assert).
D needs something like this as well, and you can not get there
just with lazy.