add_task(async function test_number() {
_("Try saving a number");
await Utils.jsonSave("num", {}, 42);
let num = await Utils.jsonLoad("num", {}); Assert.equal(typeof num, "number"); Assert.equal(num, 42);
});
add_task(async function test_nonexistent_file() {
_("Try loading a non-existent file.");
let val = await Utils.jsonLoad("non-existent", {}); Assert.equal(val, undefined);
});
add_task(async function test_save_logging() {
_("Verify that writes are logged.");
let trace;
await Utils.jsonSave( "log",
{
_log: {
trace(msg) {
trace = msg;
},
},
}, "hi"
); Assert.ok(!!trace);
});
add_task(async function test_load_logging() {
_("Verify that reads and read errors are logged.");
// Write a file with some invalid JSON
let file = await IOUtils.getFile(PathUtils.profileDir, "weave", "log.json");
let fos = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(
Ci.nsIFileOutputStream
);
let flags =
FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE;
fos.init(file, flags, FileUtils.PERMS_FILE, fos.DEFER_OPEN);
let stream = Cc["@mozilla.org/intl/converter-output-stream;1"].createInstance(
Ci.nsIConverterOutputStream
);
stream.init(fos, "UTF-8");
stream.writeString("invalid json!");
stream.close();
let trace, debug;
let obj = {
_log: {
trace(msg) {
trace = msg;
},
debug(msg) {
debug = msg;
},
},
};
let val = await Utils.jsonLoad("log", obj); Assert.ok(!val); Assert.ok(!!trace); Assert.ok(!!debug);
});
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.