1// TODO disable reordering for this suite!
2
3
4var begin = 0,
5	moduleStart = 0,
6	moduleDone = 0,
7	testStart = 0,
8	testDone = 0,
9	log = 0,
10	moduleContext,
11	moduleDoneContext,
12	testContext,
13	testDoneContext,
14	logContext;
15
16QUnit.begin = function() {
17	begin++;
18};
19QUnit.done = function() {
20};
21QUnit.moduleStart = function(context) {
22	moduleStart++;
23	moduleContext = context;
24};
25QUnit.moduleDone = function(context) {
26	moduleDone++;
27	moduleDoneContext = context;
28};
29QUnit.testStart = function(context) {
30	testStart++;
31	testContext = context;
32};
33QUnit.testDone = function(context) {
34	testDone++;
35	testDoneContext = context;
36};
37QUnit.log = function(context) {
38	log++;
39	logContext = context;
40};
41
42var logs = ["begin", "testStart", "testDone", "log", "moduleStart", "moduleDone", "done"];
43for (var i = 0; i < logs.length; i++) {
44	(function() {
45		var log = logs[i],
46			logger = QUnit[log];
47		QUnit[log] = function() {
48			console.log(log, arguments);
49			logger.apply(this, arguments);
50		};
51	})();
52}
53
54module("logs1");
55
56test("test1", 13, function() {
57	equal(begin, 1);
58	equal(moduleStart, 1);
59	equal(testStart, 1);
60	equal(testDone, 0);
61	equal(moduleDone, 0);
62
63	deepEqual(logContext, {
64		result: true,
65		message: undefined,
66		actual: 0,
67		expected: 0
68	});
69	equal("foo", "foo", "msg");
70	deepEqual(logContext, {
71		result: true,
72		message: "msg",
73		actual: "foo",
74		expected: "foo"
75	});
76	strictEqual(testDoneContext, undefined);
77	deepEqual(testContext, {
78		name: "test1"
79	});
80	strictEqual(moduleDoneContext, undefined);
81	deepEqual(moduleContext, {
82		name: "logs1"
83	});
84
85	equal(log, 12);
86});
87test("test2", 10, function() {
88	equal(begin, 1);
89	equal(moduleStart, 1);
90	equal(testStart, 2);
91	equal(testDone, 1);
92	equal(moduleDone, 0);
93
94	deepEqual(testDoneContext, {
95		name: "test1",
96		failed: 0,
97		passed: 13,
98		total: 13
99	});
100	deepEqual(testContext, {
101		name: "test2"
102	});
103	strictEqual(moduleDoneContext, undefined);
104	deepEqual(moduleContext, {
105		name: "logs1"
106	});
107
108	equal(log, 22);
109});
110
111module("logs2");
112
113test("test1", 9, function() {
114	equal(begin, 1);
115	equal(moduleStart, 2);
116	equal(testStart, 3);
117	equal(testDone, 2);
118	equal(moduleDone, 1);
119
120	deepEqual(testContext, {
121		name: "test1"
122	});
123	deepEqual(moduleDoneContext, {
124		name: "logs1",
125		failed: 0,
126		passed: 23,
127		total: 23
128	});
129	deepEqual(moduleContext, {
130		name: "logs2"
131	});
132
133	equal(log, 31);
134});
135test("test2", 8, function() {
136	equal(begin, 1);
137	equal(moduleStart, 2);
138	equal(testStart, 4);
139	equal(testDone, 3);
140	equal(moduleDone, 1);
141
142	deepEqual(testContext, {
143		name: "test2"
144	});
145	deepEqual(moduleContext, {
146		name: "logs2"
147	});
148
149	equal(log, 39);
150});
151