On Wednesday, 3 June 2015 at 07:30:31 UTC, Jacob Carlborg wrote:
On 2015-04-20 15:28, Atila Neves wrote:
Original library: http://code.dlang.org/packages/unit-threaded
PR: https://github.com/D-Programming-Language/phobos/pull/3207
* Would it be possible to make the "should" functions more
composeable. Instead of "a.shouldEqual(b)" something like
"a.should.equal(b)". Then you don't need a separate "shouldNot"
function for all functions, just one
Easily. I toyed with this syntax
foo().should == 3;
And that works. Unfortunately it doesn't work for `!=` or `>=`. I
could do the other operators as compile-time strings, but then
`==` would be the weird one out. In the end I didn't think there
was much value of typing `should.equal` over `shouldEqual` and
left it as it is.
There's already some controversy over syntax as it is, see
Dicebot's comments.
* Is it possible to create custom "should functions" or
marchers as RSpec would call them? Otherwise perhaps the above
suggestion would make that easier
I'd have to think about that. First we'd have to agree on how
things should look, though.
* I would recommend writing the actual operator used for a
given "should function" in the documentation
Good idea.
* Is there a function to compare if two objects are the actual
same objects in memory, i.e. comparing using "is"?
No, but it'd be easy to write. Is that actually needed though?
It doesn't seem something that would come up often, and one could
always write `&foo.shouldEqual(&bar)`.
* Latest versions of RSpec does not allow to specify an
exception type when a test should not throw an exception. I
don't recall the exact reason now but it might be worth
investigating and taking in to consideration
I might take a look, but really all I've ever seen is expecting
to throw a particular exception anyway.
* Is there any special output when running the tests? In that
case, how does it look like? Is it possible to use different
formatters for the output and create custom ones?
Yes. It looks identical to the library that preceded this,
unit-threaded. There are examples in the repository for both
passing and failing tests on purpose to show what the output is
like.
Atila