new JSAN('../lib').use('Test.More'); plan({tests: 9}); var output = []; function testout () { for (var i = 0; i < arguments.length; i++) output.push(arguments[i]); }; var failout = []; function testfail () { for (var i = 0; i < arguments.length; i++) failout.push(arguments[i]); }; { var test = Test.Builder.create(); test.output(testout); test.endOutput(testfail); test.failureOutput(testfail); // Ensure stray newline in name escaping works. test.noEnding(true); test.plan({tests: 5}); test.ok(1, "ok"); test.ok(1, "ok\n"); test.ok(1, "ok, like\nok"); test.skip("wibble\nmoof"); test.todoSkip("todo\nskip\n"); is(output.splice(0, output.length).join(''), "1..5" + Test.Builder.LF + "ok 1 - ok" + Test.Builder.LF + "ok 2 - ok" + Test.Builder.LF + "# " + Test.Builder.LF + "ok 3 - ok, like" + Test.Builder.LF + "# ok" + Test.Builder.LF + "ok 4 # skip wibble" + Test.Builder.LF + "# moof" + Test.Builder.LF + "not ok 5 # TODO & SKIP todo" + Test.Builder.LF + "# skip" + Test.Builder.LF + "# "+ Test.Builder.LF, 'Check the output' ); } { var test = Test.Builder.create(); test.output(testout); test.endOutput(testfail); test.failureOutput(testfail); test.plan({tests: 3}); test.ok(1, 'Foo'); test.ok(0, 'Bar'); test.ok(1, 'Yar'); test.ok(1, 'Car'); test.ok(0, 'Sar'); test._ending(); // Trigger the ending. is(output.splice(0, output.length).join(''), "1..3" + Test.Builder.LF + "ok 1 - Foo" + Test.Builder.LF + "not ok 2 - Bar" + Test.Builder.LF + "ok 3 - Yar" + Test.Builder.LF + "ok 4 - Car" + Test.Builder.LF + "not ok 5 - Sar" + Test.Builder.LF, "We should have the corret extra output" ); is(failout.splice(0, failout.length).join(''), "# Failed test" + Test.Builder.LF + "# Failed test" + Test.Builder.LF + "# Looks like you planned 3 tests but ran 2 extra." + Test.Builder.LF, "...and we should get the correct extras output" ); } { var test = Test.Builder.create(); test.output(testout); test.endOutput(testfail); test.failureOutput(testfail); test.plan({tests: 1}); test.ok(1); test.ok(1); test.ok(1); test._ending(); // Trigger the ending. is(output.splice(0, output.length).join(''), "1..1" + Test.Builder.LF + "ok 1" + Test.Builder.LF + "ok 2" + Test.Builder.LF + "ok 3" + Test.Builder.LF, "We should have the correct test count" ); is(failout.splice(0, failout.length).join(''), "# Looks like you planned 1 test but ran 2 extra." + Test.Builder.LF, "...and we should have the correct failure output" ); } { // Test skipRest(). try { var test = Test.Builder.create(); test.output(testout); test.plan({tests: 5}); test.ok(1); test.ok(1); test.skipRest("I'm outta here!"); test.ok(1); test.ok(1); } catch (e) {} is(output.splice(0, output.length).join(''), "1..5" + Test.Builder.LF + "ok 1" + Test.Builder.LF + "ok 2" + Test.Builder.LF + "ok 3 # skip I'm outta here!" + Test.Builder.LF + "ok 4 # skip I'm outta here!" + Test.Builder.LF + "ok 5 # skip I'm outta here!" + Test.Builder.LF, "We should have the correct output for skipRest()" ); } { // Test skipAll(). try { var test = Test.Builder.create(); test.output(testout); test.plan({skipAll: 'I just want to skip it!'}); test.ok(1); test.ok(1); test.ok(1); test.ok(1); } catch (e) {} is(output.splice(0, output.length).join(''), "1..0 # Skip I just want to skip it!" + Test.Builder.LF, "We should have the correct output for skipAll()" ); } { // Test BAILOUT(). var test = Test.Builder.create(); try { test.output(testout); test.endOutput(testfail); test.failureOutput(testfail); test.plan({tests: 7}); test.ok(1); test.ok(1); test.BAILOUT("Oof!"); test.ok(1); test.ok(1); test.ok(1); test.ok(1); } catch (e) {} test._ending(); // Trigger the ending. is(output.splice(0, output.length).join(''), "1..7" + Test.Builder.LF + "ok 1" + Test.Builder.LF + "ok 2" + Test.Builder.LF + "Bail out! Oof!", "We should have the correct output for BAILOUT()" ); is(failout.splice(0, failout.length).join(''), "# Looks like you planned 7 tests but only ran 2." + Test.Builder.LF, "...and we should have the correct failure output" ); }