On 2015-07-10 14:37, Atila Neves wrote:
So... unconvinced again. I tried implementing it and it started getting
to be a right royal pain, and then I realised that there's nothing to
prevent a user from writing their own matchers right now. From your
example:
void shouldBeParsedAs(Code code, ASTNode node) { //I don't really
know what the types should be
if(...) {
throw new UnitTestException(...);
}
}
And... done. No need for a `Should` struct, no need for the
complications I faced trying to use one. I think the design is as good
as it can be.
If I compare this with RSpec. A custom matcher in RSpec would implement
one method, returning a bool, to indicate if the assertion passed or
not. In your example the user need to worry about throwing exceptions
and which kind to throw. I consider that an implementation detail.
Also, RSpec is able to automatically infer a failure message based on
the name of the matcher. Optionally the matcher can customize the
failing message.
It seems like with your version you need to implement both a positive
and negative version.
--
/Jacob Carlborg