Mypal/dom/base/test/test_domcursor.html
2019-03-11 13:26:37 +03:00

141 lines
4.2 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<title>Test for DOMCursor</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script class="testbody" type="application/javascript;version=1.7">
"use strict";
SimpleTest.waitForExplicitFinish();
var reqserv = SpecialPowers.getDOMRequestService();
ok("createRequest" in reqserv, "appears to be a service");
var req;
var lastContinue = false;
var index = 0;
function next() {
if (index < tests.length) {
ok(true, "Begin test");
tests[index++]();
} else {
ok(true, "All done");
SimpleTest.finish();
}
}
var tests = [
function() {
// create a cursor, test its interface and its initial state
req = reqserv.createCursor(window, function() {
if (lastContinue) {
reqserv.fireDone(req);
} else {
reqserv.fireSuccess(req, "next result")
}
});
ok("result" in req, "cursor has result");
ok("error" in req, "cursor has error");
ok("onsuccess" in req, "cursor has onsuccess");
ok("onerror" in req, "cursor has onerror");
ok("readyState" in req, "cursor has readyState");
ok("done" in req, "cursor has finished");
ok("continue" in req, "cursor has continue");
ok(!("then" in req), "cursor should not have a then method");
is(req.readyState, "pending", "readyState is pending");
is(req.result, undefined, "result is undefined");
is(req.onsuccess, null, "onsuccess is null");
is(req.onerror, null, "onerror is null");
next();
},
function() {
// fire success
req.onsuccess = function(e) {
ok(e, "got success event");
is(e.type, "success", "correct type during success");
is(e.target, req, "correct target during success");
is(req.readyState, "done", "correct readyState after success");
is(req.error, null, "correct error after success");
is(req.result, "my result", "correct result after success");
is(req.done, false, "cursor is not done after continue")
next();
}
reqserv.fireSuccess(req, "my result");
},
function() {
// continue
req.onsuccess = function(e) {
ok(e, "got success event after continue");
is(e.type, "success", "correct type during continue");
is(e.target, req, "correct target during continue");
is(req.readyState, "done", "correct readyState after continue");
is(req.error, null, "correct error after continue");
is(req.result, "next result", "correct result after continue");
is(req.done, false, "cursor is not done after continue")
next();
}
req.continue();
},
function() {
// FireDone
req.onsuccess = function(e) {
ok(e, "got success event after continue");
is(e.type, "success", "correct type during continue");
is(e.target, req, "correct target during continue");
is(req.readyState, "done", "correct readyState after continue");
is(req.error, null, "correct error after continue");
is(req.result, undefined, "no result after last continue");
is(req.done, true, "cursor is done after last continue")
try {
req.continue();
ok(false, "continue when cursor is done should fail");
} catch (e) {
ok(true, "continue when cursor is done should fail");
}
next();
}
lastContinue = true;
req.continue();
},
function() {
// fire error
req = reqserv.createCursor(window, function(){});
req.onerror = function(e) {
ok(e, "got success event");
is(e.type, "error", "correct type during error");
is(e.target, req, "correct target during error");
is(req.readyState, "done", "correct readyState after error");
is(req.error.name, "error msg", "correct error after error");
is(req.result, undefined, "correct result after error");
try {
req.continue();
ok(false, "continue while in an error state should fail");
} catch (e) {
ok(true, "continue while in an error state should fail");
}
next();
}
reqserv.fireError(req, "error msg");
}
];
next();
</script>
</pre>
</body>
</html>