| OLD | NEW |
| (Empty) |
| 1 test("module without setup/teardown (default)", function() { | |
| 2 expect(1); | |
| 3 ok(true); | |
| 4 }); | |
| 5 | |
| 6 test("expect in test", 3, function() { | |
| 7 ok(true); | |
| 8 ok(true); | |
| 9 ok(true); | |
| 10 }); | |
| 11 | |
| 12 test("expect in test", 1, function() { | |
| 13 ok(true); | |
| 14 }); | |
| 15 | |
| 16 module("setup test", { | |
| 17 setup: function() { | |
| 18 ok(true); | |
| 19 } | |
| 20 }); | |
| 21 | |
| 22 test("module with setup", function() { | |
| 23 expect(2); | |
| 24 ok(true); | |
| 25 }); | |
| 26 | |
| 27 test("module with setup, expect in test call", 2, function() { | |
| 28 ok(true); | |
| 29 }); | |
| 30 | |
| 31 var state; | |
| 32 | |
| 33 module("setup/teardown test", { | |
| 34 setup: function() { | |
| 35 state = true; | |
| 36 ok(true); | |
| 37 }, | |
| 38 teardown: function() { | |
| 39 ok(true); | |
| 40 } | |
| 41 }); | |
| 42 | |
| 43 test("module with setup/teardown", function() { | |
| 44 expect(3); | |
| 45 ok(true); | |
| 46 }); | |
| 47 | |
| 48 module("setup/teardown test 2"); | |
| 49 | |
| 50 test("module without setup/teardown", function() { | |
| 51 expect(1); | |
| 52 ok(true); | |
| 53 }); | |
| 54 | |
| 55 if (typeof setTimeout !== 'undefined') { | |
| 56 state = 'fail'; | |
| 57 | |
| 58 module("teardown and stop", { | |
| 59 teardown: function() { | |
| 60 equal(state, "done", "Test teardown."); | |
| 61 } | |
| 62 }); | |
| 63 | |
| 64 test("teardown must be called after test ended", function() { | |
| 65 expect(1); | |
| 66 stop(); | |
| 67 setTimeout(function() { | |
| 68 state = "done"; | |
| 69 start(); | |
| 70 }, 13); | |
| 71 }); | |
| 72 | |
| 73 module("async setup test", { | |
| 74 setup: function() { | |
| 75 stop(); | |
| 76 setTimeout(function(){ | |
| 77 ok(true); | |
| 78 start(); | |
| 79 }, 500); | |
| 80 } | |
| 81 }); | |
| 82 | |
| 83 asyncTest("module with async setup", function() { | |
| 84 expect(2); | |
| 85 ok(true); | |
| 86 start(); | |
| 87 }); | |
| 88 | |
| 89 module("async teardown test", { | |
| 90 teardown: function() { | |
| 91 stop(); | |
| 92 setTimeout(function(){ | |
| 93 ok(true); | |
| 94 start(); | |
| 95 }, 500); | |
| 96 } | |
| 97 }); | |
| 98 | |
| 99 asyncTest("module with async teardown", function() { | |
| 100 expect(2); | |
| 101 ok(true); | |
| 102 start(); | |
| 103 }); | |
| 104 | |
| 105 module("asyncTest"); | |
| 106 | |
| 107 asyncTest("asyncTest", function() { | |
| 108 expect(2); | |
| 109 ok(true); | |
| 110 setTimeout(function() { | |
| 111 state = "done"; | |
| 112 ok(true); | |
| 113 start(); | |
| 114 }, 13); | |
| 115 }); | |
| 116 | |
| 117 asyncTest("asyncTest", 2, function() { | |
| 118 ok(true); | |
| 119 setTimeout(function() { | |
| 120 state = "done"; | |
| 121 ok(true); | |
| 122 start(); | |
| 123 }, 13); | |
| 124 }); | |
| 125 | |
| 126 test("sync", 2, function() { | |
| 127 stop(); | |
| 128 setTimeout(function() { | |
| 129 ok(true); | |
| 130 start(); | |
| 131 }, 13); | |
| 132 stop(); | |
| 133 setTimeout(function() { | |
| 134 ok(true); | |
| 135 start(); | |
| 136 }, 125); | |
| 137 }); | |
| 138 } | |
| 139 | |
| 140 module("save scope", { | |
| 141 setup: function() { | |
| 142 this.foo = "bar"; | |
| 143 }, | |
| 144 teardown: function() { | |
| 145 deepEqual(this.foo, "bar"); | |
| 146 } | |
| 147 }); | |
| 148 test("scope check", function() { | |
| 149 expect(2); | |
| 150 deepEqual(this.foo, "bar"); | |
| 151 }); | |
| 152 | |
| 153 module("simple testEnvironment setup", { | |
| 154 foo: "bar", | |
| 155 bugid: "#5311" // example of meta-data | |
| 156 }); | |
| 157 test("scope check", function() { | |
| 158 deepEqual(this.foo, "bar"); | |
| 159 }); | |
| 160 test("modify testEnvironment",function() { | |
| 161 this.foo="hamster"; | |
| 162 }); | |
| 163 test("testEnvironment reset for next test",function() { | |
| 164 deepEqual(this.foo, "bar"); | |
| 165 }); | |
| 166 | |
| 167 module("testEnvironment with object", { | |
| 168 options:{ | |
| 169 recipe:"soup", | |
| 170 ingredients:["hamster","onions"] | |
| 171 } | |
| 172 }); | |
| 173 test("scope check", function() { | |
| 174 deepEqual(this.options, {recipe:"soup",ingredients:["hamster","onions"]}
) ; | |
| 175 }); | |
| 176 test("modify testEnvironment",function() { | |
| 177 // since we do a shallow copy, the testEnvironment can be modified | |
| 178 this.options.ingredients.push("carrots"); | |
| 179 }); | |
| 180 test("testEnvironment reset for next test",function() { | |
| 181 deepEqual(this.options, {recipe:"soup",ingredients:["hamster","onions","
carrots"]}, "Is this a bug or a feature? Could do a deep copy") ; | |
| 182 }); | |
| 183 | |
| 184 | |
| 185 module("testEnvironment tests"); | |
| 186 | |
| 187 function makeurl() { | |
| 188 var testEnv = QUnit.current_testEnvironment; | |
| 189 var url = testEnv.url || 'http://example.com/search'; | |
| 190 var q = testEnv.q || 'a search test'; | |
| 191 return url + '?q='+encodeURIComponent(q); | |
| 192 } | |
| 193 | |
| 194 test("makeurl working",function() { | |
| 195 equal( QUnit.current_testEnvironment, this, 'The current testEnvironment
is global'); | |
| 196 equal( makeurl(), 'http://example.com/search?q=a%20search%20test', 'make
url returns a default url if nothing specified in the testEnvironment'); | |
| 197 }); | |
| 198 | |
| 199 module("testEnvironment with makeurl settings", { | |
| 200 url: 'http://google.com/', | |
| 201 q: 'another_search_test' | |
| 202 }); | |
| 203 test("makeurl working with settings from testEnvironment", function() { | |
| 204 equal( makeurl(), 'http://google.com/?q=another_search_test', 'rather th
an passing arguments, we use test metadata to form the url'); | |
| 205 }); | |
| 206 test("each test can extend the module testEnvironment", { | |
| 207 q:'hamstersoup' | |
| 208 }, function() { | |
| 209 equal( makeurl(), 'http://google.com/?q=hamstersoup', 'url from module,
q from test'); | |
| 210 }); | |
| 211 | |
| 212 module("jsDump"); | |
| 213 test("jsDump output", function() { | |
| 214 equals( QUnit.jsDump.parse([1, 2]), "[\n 1,\n 2\n]" ); | |
| 215 equals( QUnit.jsDump.parse({top: 5, left: 0}), "{\n \"top\": 5,\n \"le
ft\": 0\n}" ); | |
| 216 if (typeof document !== 'undefined' && document.getElementById("qunit-he
ader")) { | |
| 217 equals( QUnit.jsDump.parse(document.getElementById("qunit-header
")), "<h1 id=\"qunit-header\"></h1>" ); | |
| 218 equals( QUnit.jsDump.parse(document.getElementsByTagName("h1")),
"[\n <h1 id=\"qunit-header\"></h1>\n]" ); | |
| 219 } | |
| 220 }); | |
| 221 | |
| 222 module("assertions"); | |
| 223 test("raises",function() { | |
| 224 function CustomError( message ) { | |
| 225 this.message = message; | |
| 226 } | |
| 227 | |
| 228 CustomError.prototype.toString = function() { | |
| 229 return this.message; | |
| 230 }; | |
| 231 | |
| 232 raises( | |
| 233 function() { | |
| 234 throw "error" | |
| 235 } | |
| 236 ); | |
| 237 | |
| 238 raises( | |
| 239 function() { | |
| 240 throw "error" | |
| 241 }, | |
| 242 'raises with just a message, no expected' | |
| 243 ); | |
| 244 | |
| 245 raises( | |
| 246 function() { | |
| 247 throw new CustomError(); | |
| 248 }, | |
| 249 CustomError, | |
| 250 'raised error is an instance of CustomError' | |
| 251 ); | |
| 252 | |
| 253 raises( | |
| 254 function() { | |
| 255 throw new CustomError("some error description"); | |
| 256 }, | |
| 257 /description/, | |
| 258 "raised error message contains 'description'" | |
| 259 ); | |
| 260 | |
| 261 raises( | |
| 262 function() { | |
| 263 throw new CustomError("some error description"); | |
| 264 }, | |
| 265 function( err ) { | |
| 266 if ( (err instanceof CustomError) && /description/.test(
err) ) { | |
| 267 return true; | |
| 268 } | |
| 269 }, | |
| 270 "custom validation function" | |
| 271 ); | |
| 272 | |
| 273 }); | |
| 274 | |
| 275 if (typeof document !== "undefined") { | |
| 276 | |
| 277 module("fixture"); | |
| 278 test("setup", function() { | |
| 279 document.getElementById("qunit-fixture").innerHTML = "foobar"; | |
| 280 }); | |
| 281 test("basics", function() { | |
| 282 equal( document.getElementById("qunit-fixture").innerHTML, "test markup"
, "automatically reset" ); | |
| 283 }); | |
| 284 | |
| 285 } | |
| 286 | |
| 287 module("custom assertions"); | |
| 288 (function() { | |
| 289 function mod2(value, expected, message) { | |
| 290 var actual = value % 2; | |
| 291 QUnit.push(actual == expected, actual, expected, message); | |
| 292 } | |
| 293 test("mod2", function() { | |
| 294 mod2(2, 0, "2 % 2 == 0"); | |
| 295 mod2(3, 1, "3 % 2 == 1"); | |
| 296 }) | |
| 297 })(); | |
| 298 | |
| 299 (function() { | |
| 300 var reset = QUnit.reset; | |
| 301 function afterTest() { | |
| 302 ok( false, "reset should not modify test status" ); | |
| 303 } | |
| 304 module("reset"); | |
| 305 test("reset runs assertions", function() { | |
| 306 QUnit.reset = function() { | |
| 307 afterTest(); | |
| 308 reset.apply( this, arguments ); | |
| 309 }; | |
| 310 }); | |
| 311 test("reset runs assertions2", function() { | |
| 312 QUnit.reset = reset; | |
| 313 }); | |
| 314 })(); | |
| 315 | |
| 316 module("noglobals", { | |
| 317 teardown: function() { | |
| 318 delete window.badGlobalVariableIntroducedInTest; | |
| 319 } | |
| 320 }); | |
| 321 test("let teardown clean up globals", function() { | |
| 322 // this test will always pass if run without ?noglobals=true | |
| 323 window.badGlobalVariableIntroducedInTest = true; | |
| 324 }); | |
| OLD | NEW |