diff options
Diffstat (limited to 'devtools/client/shared/sourceeditor/test/browser_editor_basic.js')
-rw-r--r-- | devtools/client/shared/sourceeditor/test/browser_editor_basic.js | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/devtools/client/shared/sourceeditor/test/browser_editor_basic.js b/devtools/client/shared/sourceeditor/test/browser_editor_basic.js new file mode 100644 index 0000000000..9373990bf7 --- /dev/null +++ b/devtools/client/shared/sourceeditor/test/browser_editor_basic.js @@ -0,0 +1,75 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +async function test() { + waitForExplicitFinish(); + const { ed, win } = await setup(); + // appendTo + const cmFrame = win.document.querySelector("iframe"); + const cmStyle = cmFrame.contentDocument.getElementById("cmBaseStyle"); + ok(~cmStyle.innerHTML.indexOf(".CodeMirror"), "correct iframe is there"); + + // getOption/setOption + ok(ed.getOption("styleActiveLine"), "getOption works"); + ed.setOption("styleActiveLine", false); + ok(!ed.getOption("styleActiveLine"), "setOption works"); + + // Language modes + is(ed.getMode(), Editor.modes.text, "getMode"); + ed.setMode(Editor.modes.js); + is(ed.getMode(), Editor.modes.js, "setMode"); + + // Content + is(ed.getText(), "Hello.", "getText"); + ed.setText("Hi.\nHow are you?"); + is(ed.getText(), "Hi.\nHow are you?", "setText"); + is(ed.getText(1), "How are you?", "getText(num)"); + is(ed.getText(5), "", "getText(num) when num is out of scope"); + + ed.replaceText("YOU", { line: 1, ch: 8 }, { line: 1, ch: 11 }); + is(ed.getText(1), "How are YOU?", "replaceText(str, from, to)"); + ed.replaceText("you?", { line: 1, ch: 8 }); + is(ed.getText(1), "How are you?", "replaceText(str, from)"); + ed.replaceText("Hello."); + is(ed.getText(), "Hello.", "replaceText(str)"); + + ed.insertText(", sir/madam", { line: 0, ch: 5 }); + is(ed.getText(), "Hello, sir/madam.", "insertText"); + + // Add-ons + ed.extend({ whoami: () => "Anton", whereami: () => "Mozilla" }); + is(ed.whoami(), "Anton", "extend/1"); + is(ed.whereami(), "Mozilla", "extend/2"); + + // Line classes + ed.setText("Hello!\nHow are you?"); + ok(!ed.hasLineClass(0, "test"), "no test line class"); + ed.addLineClass(0, "test"); + ok(ed.hasLineClass(0, "test"), "test line class is there"); + ed.removeLineClass(0, "test"); + ok(!ed.hasLineClass(0, "test"), "test line class is gone"); + + // Font size + const size = ed.getFontSize(); + is("number", typeof size, "we have the default font size"); + ed.setFontSize(ed.getFontSize() + 1); + is(ed.getFontSize(), size + 1, "new font size was set"); + + info("Check that we display unicode values for non-printable characters"); + ed.setText("> \u202e \u2066 - \u2069 \u2066 <"); + + const doc = win.document.querySelector("iframe").contentWindow.document; + const nonPrintableCharElements = Array.from( + doc.querySelectorAll(".cm-non-printable-char") + ); + + Assert.deepEqual( + nonPrintableCharElements.map(el => el.textContent), + ["\\u202e", "\\u2066", "\\u2069", "\\u2066"], + "non printable chars are displayed as expected" + ); + + teardown(ed, win); +} |