// TODO disable reordering for this suite!

var begin = 0,

moduleStart = 0,
moduleDone = 0,
testStart = 0,
testDone = 0,
log = 0,
moduleContext,
moduleDoneContext,
testContext,
testDoneContext,
logContext;

QUnit.begin = function() {

begin++;

}; QUnit.done = function() { }; QUnit.moduleStart = function(context) {

moduleStart++;
moduleContext = context;

}; QUnit.moduleDone = function(context) {

moduleDone++;
moduleDoneContext = context;

}; QUnit.testStart = function(context) {

testStart++;
testContext = context;

}; QUnit.testDone = function(context) {

testDone++;
testDoneContext = context;

}; QUnit.log = function(context) {

log++;
logContext = context;

};

var logs = [“begin”, “testStart”, “testDone”, “log”, “moduleStart”, “moduleDone”, “done”]; for (var i = 0; i < logs.length; i++) {

(function() {
        var log = logs[i],
                logger = QUnit[log];
        QUnit[log] = function() {
                console.log(log, arguments);
                logger.apply(this, arguments);
        };
})();

}

module(“logs1”);

test(“test1”, 13, function() {

equal(begin, 1);
equal(moduleStart, 1);
equal(testStart, 1);
equal(testDone, 0);
equal(moduleDone, 0);

deepEqual(logContext, {
        result: true,
        message: undefined,
        actual: 0,
        expected: 0
});
equal("foo", "foo", "msg");
deepEqual(logContext, {
        result: true,
        message: "msg",
        actual: "foo",
        expected: "foo"
});
strictEqual(testDoneContext, undefined);
deepEqual(testContext, {
        name: "test1"
});
strictEqual(moduleDoneContext, undefined);
deepEqual(moduleContext, {
        name: "logs1"
});

equal(log, 12);

}); test(“test2”, 10, function() {

equal(begin, 1);
equal(moduleStart, 1);
equal(testStart, 2);
equal(testDone, 1);
equal(moduleDone, 0);

deepEqual(testDoneContext, {
        name: "test1",
        failed: 0,
        passed: 13,
        total: 13
});
deepEqual(testContext, {
        name: "test2"
});
strictEqual(moduleDoneContext, undefined);
deepEqual(moduleContext, {
        name: "logs1"
});

equal(log, 22);

});

module(“logs2”);

test(“test1”, 9, function() {

equal(begin, 1);
equal(moduleStart, 2);
equal(testStart, 3);
equal(testDone, 2);
equal(moduleDone, 1);

deepEqual(testContext, {
        name: "test1"
});
deepEqual(moduleDoneContext, {
        name: "logs1",
        failed: 0,
        passed: 23,
        total: 23
});
deepEqual(moduleContext, {
        name: "logs2"
});

equal(log, 31);

}); test(“test2”, 8, function() {

equal(begin, 1);
equal(moduleStart, 2);
equal(testStart, 4);
equal(testDone, 3);
equal(moduleDone, 1);

deepEqual(testContext, {
        name: "test2"
});
deepEqual(moduleContext, {
        name: "logs2"
});

equal(log, 39);

});