/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* vim:set ts=2 sw=2 sts=2 et: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* * Tests that the object-state-preservation mechanism works correctly.
*/
/* * In practice the current implementation will guarantee an exact ordering of * all start and stop callbacks. However, in the interests of robustness, this * test will pass given any valid ordering of callbacks. Any ordering of calls * which obeys the partial ordering shown by this directed acyclic graph will be * handled correctly: * * initialStart * | * V * intermediateStart * | * V * intermediateStop * | \ * | V * | initialStop * V * triggerStart * | * V * triggerStop *
*/
var initialStarted = false; function initialStart() {
dumpn("*** initialStart");
if (initialStarted) {
do_throw("initialStart: initialStarted is true?!?!");
}
initialStarted = true;
new HTTPTestLoader(
PATH + "?state=intermediate",
intermediateStart,
intermediateStop
);
}
var initialStopped = false; function initialStop(ch, status, data) {
dumpn("*** initialStop");
if (!initialStarted) {
do_throw("initialStop: initialStarted is false?!?!");
} if (initialStopped) {
do_throw("initialStop: initialStopped is true?!?!");
} if (!intermediateStarted) {
do_throw("initialStop: intermediateStarted is false?!?!");
} if (!intermediateStopped) {
do_throw("initialStop: intermediateStopped is false?!?!");
}
initialStopped = true;
checkForFinish();
}
var intermediateStarted = false; function intermediateStart() {
dumpn("*** intermediateStart");
if (!initialStarted) {
do_throw("intermediateStart: initialStarted is false?!?!");
} if (intermediateStarted) {
do_throw("intermediateStart: intermediateStarted is true?!?!");
}
intermediateStarted = true;
}
var intermediateStopped = false; function intermediateStop(ch, status, data) {
dumpn("*** intermediateStop");
if (!initialStarted) {
do_throw("intermediateStop: initialStarted is false?!?!");
} if (!intermediateStarted) {
do_throw("intermediateStop: intermediateStarted is false?!?!");
} if (intermediateStopped) {
do_throw("intermediateStop: intermediateStopped is true?!?!");
}
intermediateStopped = true;
new HTTPTestLoader(PATH + "?state=trigger", triggerStart, triggerStop);
}
var triggerStarted = false; function triggerStart() {
dumpn("*** triggerStart");
if (!initialStarted) {
do_throw("triggerStart: initialStarted is false?!?!");
} if (!intermediateStarted) {
do_throw("triggerStart: intermediateStarted is false?!?!");
} if (!intermediateStopped) {
do_throw("triggerStart: intermediateStopped is false?!?!");
} if (triggerStarted) {
do_throw("triggerStart: triggerStarted is true?!?!");
}
triggerStarted = true;
}
var triggerStopped = false; function triggerStop(ch, status, data) {
dumpn("*** triggerStop");
if (!initialStarted) {
do_throw("triggerStop: initialStarted is false?!?!");
} if (!intermediateStarted) {
do_throw("triggerStop: intermediateStarted is false?!?!");
} if (!intermediateStopped) {
do_throw("triggerStop: intermediateStopped is false?!?!");
} if (!triggerStarted) {
do_throw("triggerStop: triggerStarted is false?!?!");
} if (triggerStopped) {
do_throw("triggerStop: triggerStopped is false?!?!");
}
triggerStopped = true;
checkForFinish();
}
var finished = false; function checkForFinish() { if (finished) { try {
do_throw("uh-oh, how are we being finished twice?!?!");
} finally { // eslint-disable-next-line no-undef
quit(1);
}
}
if (!initialStarted) {
do_throw("checkForFinish: initialStarted is false?!?!");
} if (!intermediateStarted) {
do_throw("checkForFinish: intermediateStarted is false?!?!");
} if (!intermediateStopped) {
do_throw("checkForFinish: intermediateStopped is false?!?!");
} if (!triggerStarted) {
do_throw("checkForFinish: triggerStarted is false?!?!");
}
} finally {
srv.stop(do_test_finished);
}
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.