CURL Wrapper: Congratulations Next up: std.serialize

Jacob Carlborg doob at me.com
Thu Dec 29 04:49:54 PST 2011


On 2011-12-29 06:11, Jonathan M Davis wrote:
> On Wednesday, December 28, 2011 23:07:51 Jacob Carlborg wrote:
>> I think it is, don't know what others think. What it does is it catches
>> AssertErrors so other unit tests can continue to run and then gives a
>> nice report at the end.
>
> I'm against it. I think that the compiler/runtime should be fixed so that each
> unit test block is run in a module even if one fails. That would solve the
> problem quite nicely IMHO, and that's already _supposed_ to be how it works.
> It just isn't properly implemented in that regard yet. And I'm against
> unittest blocks running any code after a single failure. So, I don't think
> that any additional unit testing framework is necessary.
>
> - Jonathan M Davis

Then the compiler need as well to collect all possible asserts and then 
somehow present them to the user. My library implementation already does 
this. Since this is completely implemented in library code it would be 
possible to have different formatters, a basic for outputting to the 
console and a more advanced with HTML output.

Less important but can be quite useful sometimes is that with my 
framework you add contexts to the unit tests, just like RSpec for those 
familiar with it.

If you haven't already, I suggest you take a look at the documentation 
for the unit test framework:

http://dl.dropbox.com/u/18386187/orange_docs/orange.test.UnitTester.html



For example:

import orange.test.UnitTester;

int sum (int x, int y)
{
     return x * y;
}

unittest ()
{
     describe("sum") in {
          it("should return the sum of the two given arguments") in {
               assert(sum(1, 2) == 3);
          }
     }
}

void main ()
{
     run;
}

If a test fails the framework will print out the context, the stack 
trace and a snippet from the failing test, something like this:

  sum
    - should return the sum of the given arguments

  Failures:
      1) sum should return the sum of the given arguments
         # main.d:44
         Stack trace:
         tango.core.Exception.AssertException at main(44): Assertion failure


  describe("sum") in {
  	it("should return the sum of the given arguments") in {
  		assert(sum(1, 2) == 3);
  	};
  };

  1 test, 1 failure

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list