15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("module without setup/teardown (default)", function() { 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expect(1); 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("expect in test", 3, function() { 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("expect in test", 1, function() { 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("setup test", { 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function() { 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("module with setup", function() { 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expect(2); 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("module with setup, expect in test call", 2, function() { 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var state; 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("setup/teardown test", { 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function() { 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = true; 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function() { 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("module with setup/teardown", function() { 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expect(3); 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("setup/teardown test 2"); 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("module without setup/teardown", function() { 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expect(1); 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if (typeof setTimeout !== 'undefined') { 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)state = 'fail'; 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("teardown and stop", { 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function() { 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equal(state, "done", "Test teardown."); 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("teardown must be called after test ended", function() { 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expect(1); 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop(); 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function() { 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = "done"; 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start(); 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 13); 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("async setup test", { 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function() { 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop(); 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function(){ 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start(); 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 500); 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)asyncTest("module with async setup", function() { 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expect(2); 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start(); 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("async teardown test", { 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function() { 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop(); 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function(){ 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start(); 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 500); 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)asyncTest("module with async teardown", function() { 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expect(2); 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start(); 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("asyncTest"); 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)asyncTest("asyncTest", function() { 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expect(2); 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function() { 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = "done"; 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start(); 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 13); 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)asyncTest("asyncTest", 2, function() { 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function() { 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = "done"; 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start(); 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 13); 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("sync", 2, function() { 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop(); 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function() { 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start(); 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 13); 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop(); 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function() { 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok(true); 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start(); 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 125); 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("save scope", { 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function() { 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.foo = "bar"; 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function() { 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deepEqual(this.foo, "bar"); 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("scope check", function() { 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expect(2); 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deepEqual(this.foo, "bar"); 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("simple testEnvironment setup", { 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) foo: "bar", 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bugid: "#5311" // example of meta-data 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("scope check", function() { 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deepEqual(this.foo, "bar"); 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("modify testEnvironment",function() { 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.foo="hamster"; 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("testEnvironment reset for next test",function() { 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deepEqual(this.foo, "bar"); 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("testEnvironment with object", { 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options:{ 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) recipe:"soup", 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ingredients:["hamster","onions"] 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("scope check", function() { 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deepEqual(this.options, {recipe:"soup",ingredients:["hamster","onions"]}) ; 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("modify testEnvironment",function() { 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // since we do a shallow copy, the testEnvironment can be modified 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.ingredients.push("carrots"); 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("testEnvironment reset for next test",function() { 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deepEqual(this.options, {recipe:"soup",ingredients:["hamster","onions","carrots"]}, "Is this a bug or a feature? Could do a deep copy") ; 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("testEnvironment tests"); 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function makeurl() { 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var testEnv = QUnit.current_testEnvironment; 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var url = testEnv.url || 'http://example.com/search'; 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var q = testEnv.q || 'a search test'; 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return url + '?q='+encodeURIComponent(q); 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("makeurl working",function() { 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equal( QUnit.current_testEnvironment, this, 'The current testEnvironment is global'); 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equal( makeurl(), 'http://example.com/search?q=a%20search%20test', 'makeurl returns a default url if nothing specified in the testEnvironment'); 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("testEnvironment with makeurl settings", { 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: 'http://google.com/', 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) q: 'another_search_test' 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("makeurl working with settings from testEnvironment", function() { 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equal( makeurl(), 'http://google.com/?q=another_search_test', 'rather than passing arguments, we use test metadata to form the url'); 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("each test can extend the module testEnvironment", { 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) q:'hamstersoup' 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function() { 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equal( makeurl(), 'http://google.com/?q=hamstersoup', 'url from module, q from test'); 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("jsDump"); 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("jsDump output", function() { 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equals( QUnit.jsDump.parse([1, 2]), "[\n 1,\n 2\n]" ); 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equals( QUnit.jsDump.parse({top: 5, left: 0}), "{\n \"top\": 5,\n \"left\": 0\n}" ); 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (typeof document !== 'undefined' && document.getElementById("qunit-header")) { 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equals( QUnit.jsDump.parse(document.getElementById("qunit-header")), "<h1 id=\"qunit-header\"></h1>" ); 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equals( QUnit.jsDump.parse(document.getElementsByTagName("h1")), "[\n <h1 id=\"qunit-header\"></h1>\n]" ); 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("assertions"); 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("raises",function() { 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function CustomError( message ) { 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.message = message; 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CustomError.prototype.toString = function() { 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.message; 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) raises( 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function() { 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw "error" 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) raises( 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function() { 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw "error" 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 'raises with just a message, no expected' 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) raises( 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function() { 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw new CustomError(); 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CustomError, 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 'raised error is an instance of CustomError' 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) raises( 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function() { 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw new CustomError("some error description"); 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /description/, 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "raised error message contains 'description'" 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) raises( 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function() { 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw new CustomError("some error description"); 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function( err ) { 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (err instanceof CustomError) && /description/.test(err) ) { 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "custom validation function" 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if (typeof document !== "undefined") { 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("fixture"); 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("setup", function() { 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.getElementById("qunit-fixture").innerHTML = "foobar"; 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("basics", function() { 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) equal( document.getElementById("qunit-fixture").innerHTML, "test markup", "automatically reset" ); 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("custom assertions"); 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function() { 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function mod2(value, expected, message) { 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var actual = value % 2; 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) QUnit.push(actual == expected, actual, expected, message); 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) test("mod2", function() { 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mod2(2, 0, "2 % 2 == 0"); 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mod2(3, 1, "3 % 2 == 1"); 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function() { 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var reset = QUnit.reset; 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function afterTest() { 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ok( false, "reset should not modify test status" ); 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) module("reset"); 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) test("reset runs assertions", function() { 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) QUnit.reset = function() { 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) afterTest(); 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) reset.apply( this, arguments ); 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) test("reset runs assertions2", function() { 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) QUnit.reset = reset; 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)module("noglobals", { 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function() { 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete window.badGlobalVariableIntroducedInTest; 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test("let teardown clean up globals", function() { 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // this test will always pass if run without ?noglobals=true 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.badGlobalVariableIntroducedInTest = true; 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 325