JSAN.errorLevel = 'die';
JSAN.addRepository('../lib').use('Test.Builder');
var test = new Test.Builder;
if (Test.PLATFORM == 'director')
    test.plan({ skipAll: "Async testing not yet supported for Director" });
test.plan({ tests: 4 });
var id = test.beginAsync(3000);
window.setTimeout(
    function () {
        test.ok(true, "This should be test four");
        test.endAsync(id);
    }, 2000
);
test.ok(true, "This should be test three");
test.diag("Waiting for the asynchronous test...");
var output = [];
function testout () { output.push(arguments[0]) };
var failout = [];
function testfail () { failout.push(arguments[0]) };
var otherTest = Test.Builder.create();
otherTest.output(testout);
otherTest.endOutput(testfail);
otherTest.failureOutput(testfail);
otherTest.plan({ tests: 1 });
var otherid = otherTest.beginAsync();
window.setTimeout(function () { otherTest.ok(true, 'other ok') }, 1200);
otherTest._ending(); // Force the test to end.
var newid = test.beginAsync;
test.diag("Waiting to check timeout output");
window.setTimeout(
    function () {
        test.ok(output.splice(0, output.length).join('') ==
           "1..1" + Test.Builder.LF + "ok 1 - other ok" + Test.Builder.LF,
           "test two checks the output"
        );
        test.ok(failout.splice(0, failout.length).join('') ==
           "# No tests run!" + Test.Builder.LF,
           "test three checks the fail output"
        );
    }, 1800
);