I am happy to announce the next version of RushCheck. I have done many bug fixes and change some main interfaces. Especially, the notation of pre-condition with guards is changed. From this version, the number of a block of assertion must be equal to the number of arguments of Assertion.new.
before:
Assertion.new(Integer, String) do |x, y, g|
g.guard { # a pre-condition here }
...
end
after:
RushCheck::Assertion.new(Integer, String) do |x, y|
RushCheck::guard { # a pre-condition here now! }
...
end
Sorry for this incompatibility, but I think it becomes more simpler and makes a sense. Since the tutorial is now translated into a hypertext, it is easier to refer notations.
At the end of last month, I visited Chalmers university for a week to join a internal meeting for developing a proof assistant Agda. The end of that week, on Friday afternoon, Prof. John Hughes was kindly to give a chance to discuss about QuickCheck. He talked about recent development and success of Erlang’s QuickCheck and showed me several examples. Because they are so impressive, I will steal and implement them into RushCheck from now on (in not this version, but the next, hopefully). I showed him the previous implementation (ver 0.3) of RushCheck and slides(PDF) for RushCheck ver 0.3. I thank not only him but also the members of AIM5 that we had a discussion about QuickCheck. In the discussion I got many good idea.
I want to introduce this random testing technique to Ruby’s developer. Even it is better to write testcase in a functional language, such as Erlang or Haskell, however, for Ruby’s programmer, it is easier to write testcase in Ruby itself. I wish RushCheck helps Ruby testing programmer. The next chance may be Kansai OpenSource workshop, and I will submit my talk at Kansai-area in Japan. Please give me a comment when you try to use this library, thanks!