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 new Error("error") } ); raises( function() { throw new Error("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; });
})();