diff options
Diffstat (limited to 'devtools/client/scratchpad/test/browser_scratchpad_open.js')
-rw-r--r-- | devtools/client/scratchpad/test/browser_scratchpad_open.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/devtools/client/scratchpad/test/browser_scratchpad_open.js b/devtools/client/scratchpad/test/browser_scratchpad_open.js new file mode 100644 index 000000000..ec55f0101 --- /dev/null +++ b/devtools/client/scratchpad/test/browser_scratchpad_open.js @@ -0,0 +1,101 @@ +/* vim: set ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// only finish() when correct number of tests are done +const expected = 4; +var count = 0; +var lastUniqueName = null; + +function done() +{ + if (++count == expected) { + finish(); + } +} + +function test() +{ + waitForExplicitFinish(); + testOpen(); + testOpenWithState(); + testOpenInvalidState(); + testOpenTestFile(); +} + +function testUniqueName(name) +{ + ok(name, "Scratchpad has a uniqueName"); + + if (lastUniqueName === null) { + lastUniqueName = name; + return; + } + + ok(name !== lastUniqueName, + "Unique name for this instance differs from the last one."); +} + +function testOpen() +{ + openScratchpad(function (win) { + is(win.Scratchpad.filename, undefined, "Default filename is undefined"); + isnot(win.Scratchpad.getText(), null, "Default text should not be null"); + is(win.Scratchpad.executionContext, win.SCRATCHPAD_CONTEXT_CONTENT, + "Default execution context is content"); + testUniqueName(win.Scratchpad.uniqueName); + + win.close(); + done(); + }, {noFocus: true}); +} + +function testOpenWithState() +{ + let state = { + filename: "testfile", + executionContext: 2, + text: "test text" + }; + + openScratchpad(function (win) { + is(win.Scratchpad.filename, state.filename, "Filename loaded from state"); + is(win.Scratchpad.executionContext, state.executionContext, "Execution context loaded from state"); + is(win.Scratchpad.getText(), state.text, "Content loaded from state"); + testUniqueName(win.Scratchpad.uniqueName); + + win.close(); + done(); + }, {state: state, noFocus: true}); +} + +function testOpenInvalidState() +{ + let win = openScratchpad(null, {state: 7}); + ok(!win, "no scratchpad opened if state is not an object"); + done(); +} + +function testOpenTestFile() +{ + let win = openScratchpad(function (win) { + ok(win, "scratchpad opened for file open"); + try { + win.Scratchpad.importFromFile( + "http://example.com/browser/devtools/client/scratchpad/test/NS_ERROR_ILLEGAL_INPUT.txt", + "silent", + function (aStatus, content) { + let nb = win.document.querySelector("#scratchpad-notificationbox"); + is(nb.querySelectorAll("notification").length, 1, "There is just one notification"); + let cn = nb.currentNotification; + is(cn.priority, nb.PRIORITY_WARNING_HIGH, "notification priority is correct"); + is(cn.value, "file-import-convert-failed", "notification value is corrent"); + is(cn.type, "warning", "notification type is correct"); + done(); + }); + ok(true, "importFromFile does not cause exception"); + } catch (exception) { + ok(false, "importFromFile causes exception " + DevToolsUtils.safeErrorString(exception)); + } + }, {noFocus: true}); +} |