| test("module without setup/teardown (default)", function() { |
| expect(1); |
| ok(true); |
| }); |
| |
| test("expect in test", 3, function() { |
| ok(true); |
| ok(true); |
| ok(true); |
| }); |
| |
| test("expect in test", 1, function() { |
| ok(true); |
| }); |
| |
| module("setup test", { |
| setup: function() { |
| ok(true); |
| } |
| }); |
| |
| test("module with setup", function() { |
| expect(2); |
| ok(true); |
| }); |
| |
| test("module with setup, expect in test call", 2, function() { |
| ok(true); |
| }); |
| |
| var state; |
| |
| module("setup/teardown test", { |
| setup: function() { |
| state = true; |
| ok(true); |
| }, |
| teardown: function() { |
| ok(true); |
| } |
| }); |
| |
| test("module with setup/teardown", function() { |
| expect(3); |
| ok(true); |
| }); |
| |
| module("setup/teardown test 2"); |
| |
| test("module without setup/teardown", function() { |
| expect(1); |
| ok(true); |
| }); |
| |
| if (typeof setTimeout !== 'undefined') { |
| state = 'fail'; |
| |
| module("teardown and stop", { |
| teardown: function() { |
| equal(state, "done", "Test teardown."); |
| } |
| }); |
| |
| test("teardown must be called after test ended", function() { |
| expect(1); |
| stop(); |
| setTimeout(function() { |
| state = "done"; |
| start(); |
| }, 13); |
| }); |
| |
| module("async setup test", { |
| setup: function() { |
| stop(); |
| setTimeout(function(){ |
| ok(true); |
| start(); |
| }, 500); |
| } |
| }); |
| |
| asyncTest("module with async setup", function() { |
| expect(2); |
| ok(true); |
| start(); |
| }); |
| |
| module("async teardown test", { |
| teardown: function() { |
| stop(); |
| setTimeout(function(){ |
| ok(true); |
| start(); |
| }, 500); |
| } |
| }); |
| |
| asyncTest("module with async teardown", function() { |
| expect(2); |
| ok(true); |
| start(); |
| }); |
| |
| module("asyncTest"); |
| |
| asyncTest("asyncTest", function() { |
| expect(2); |
| ok(true); |
| setTimeout(function() { |
| state = "done"; |
| ok(true); |
| start(); |
| }, 13); |
| }); |
| |
| asyncTest("asyncTest", 2, function() { |
| ok(true); |
| setTimeout(function() { |
| state = "done"; |
| ok(true); |
| start(); |
| }, 13); |
| }); |
| |
| test("sync", 2, function() { |
| stop(); |
| setTimeout(function() { |
| ok(true); |
| start(); |
| }, 13); |
| stop(); |
| setTimeout(function() { |
| ok(true); |
| start(); |
| }, 125); |
| }); |
| } |
| |
| module("save scope", { |
| setup: function() { |
| this.foo = "bar"; |
| }, |
| teardown: function() { |
| deepEqual(this.foo, "bar"); |
| } |
| }); |
| test("scope check", function() { |
| expect(2); |
| deepEqual(this.foo, "bar"); |
| }); |
| |
| module("simple testEnvironment setup", { |
| foo: "bar", |
| bugid: "#5311" // example of meta-data |
| }); |
| test("scope check", function() { |
| deepEqual(this.foo, "bar"); |
| }); |
| test("modify testEnvironment",function() { |
| this.foo="hamster"; |
| }); |
| test("testEnvironment reset for next test",function() { |
| deepEqual(this.foo, "bar"); |
| }); |
| |
| module("testEnvironment with object", { |
| options:{ |
| recipe:"soup", |
| ingredients:["hamster","onions"] |
| } |
| }); |
| test("scope check", function() { |
| deepEqual(this.options, {recipe:"soup",ingredients:["hamster","onions"]}) ; |
| }); |
| test("modify testEnvironment",function() { |
| // since we do a shallow copy, the testEnvironment can be modified |
| this.options.ingredients.push("carrots"); |
| }); |
| test("testEnvironment reset for next test",function() { |
| deepEqual(this.options, {recipe:"soup",ingredients:["hamster","onions","carrots"]}, "Is this a bug or a feature? Could do a deep copy") ; |
| }); |
| |
| |
| module("testEnvironment tests"); |
| |
| function makeurl() { |
| var testEnv = QUnit.current_testEnvironment; |
| var url = testEnv.url || 'http://example.com/search'; |
| var q = testEnv.q || 'a search test'; |
| return url + '?q='+encodeURIComponent(q); |
| } |
| |
| test("makeurl working",function() { |
| equal( QUnit.current_testEnvironment, this, 'The current testEnvironment is global'); |
| equal( makeurl(), 'http://example.com/search?q=a%20search%20test', 'makeurl returns a default url if nothing specified in the testEnvironment'); |
| }); |
| |
| module("testEnvironment with makeurl settings", { |
| url: 'http://google.com/', |
| q: 'another_search_test' |
| }); |
| test("makeurl working with settings from testEnvironment", function() { |
| equal( makeurl(), 'http://google.com/?q=another_search_test', 'rather than passing arguments, we use test metadata to form the url'); |
| }); |
| test("each test can extend the module testEnvironment", { |
| q:'hamstersoup' |
| }, function() { |
| equal( makeurl(), 'http://google.com/?q=hamstersoup', 'url from module, q from test'); |
| }); |
| |
| module("jsDump"); |
| test("jsDump output", function() { |
| equals( QUnit.jsDump.parse([1, 2]), "[\n 1,\n 2\n]" ); |
| equals( QUnit.jsDump.parse({top: 5, left: 0}), "{\n \"top\": 5,\n \"left\": 0\n}" ); |
| if (typeof document !== 'undefined' && document.getElementById("qunit-header")) { |
| equals( QUnit.jsDump.parse(document.getElementById("qunit-header")), "<h1 id=\"qunit-header\"></h1>" ); |
| equals( QUnit.jsDump.parse(document.getElementsByTagName("h1")), "[\n <h1 id=\"qunit-header\"></h1>\n]" ); |
| } |
| }); |
| |
| module("assertions"); |
| test("raises",function() { |
| function CustomError( message ) { |
| this.message = message; |
| } |
| |
| CustomError.prototype.toString = function() { |
| return this.message; |
| }; |
| |
| raises( |
| function() { |
| throw "error" |
| } |
| ); |
| |
| raises( |
| function() { |
| throw "error" |
| }, |
| 'raises with just a message, no expected' |
| ); |
| |
| raises( |
| function() { |
| throw new CustomError(); |
| }, |
| CustomError, |
| 'raised error is an instance of CustomError' |
| ); |
| |
| raises( |
| function() { |
| throw new CustomError("some error description"); |
| }, |
| /description/, |
| "raised error message contains 'description'" |
| ); |
| |
| raises( |
| function() { |
| throw new CustomError("some error description"); |
| }, |
| function( err ) { |
| if ( (err instanceof CustomError) && /description/.test(err) ) { |
| return true; |
| } |
| }, |
| "custom validation function" |
| ); |
| |
| }); |
| |
| if (typeof document !== "undefined") { |
| |
| module("fixture"); |
| test("setup", function() { |
| document.getElementById("qunit-fixture").innerHTML = "foobar"; |
| }); |
| test("basics", function() { |
| equal( document.getElementById("qunit-fixture").innerHTML, "test markup", "automatically reset" ); |
| }); |
| |
| } |
| |
| module("custom assertions"); |
| (function() { |
| function mod2(value, expected, message) { |
| var actual = value % 2; |
| QUnit.push(actual == expected, actual, expected, message); |
| } |
| test("mod2", function() { |
| mod2(2, 0, "2 % 2 == 0"); |
| mod2(3, 1, "3 % 2 == 1"); |
| }) |
| })(); |
| |
| (function() { |
| var reset = QUnit.reset; |
| function afterTest() { |
| ok( false, "reset should not modify test status" ); |
| } |
| module("reset"); |
| test("reset runs assertions", function() { |
| QUnit.reset = function() { |
| afterTest(); |
| reset.apply( this, arguments ); |
| }; |
| }); |
| test("reset runs assertions2", function() { |
| QUnit.reset = reset; |
| }); |
| })(); |
| |
| module("noglobals", { |
| teardown: function() { |
| delete window.badGlobalVariableIntroducedInTest; |
| } |
| }); |
| test("let teardown clean up globals", function() { |
| // this test will always pass if run without ?noglobals=true |
| window.badGlobalVariableIntroducedInTest = true; |
| }); |