browser_editor_basic.js (2664B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 async function test() { 7 waitForExplicitFinish(); 8 const { ed, win } = await setup(); 9 // appendTo 10 const cmFrame = win.document.querySelector("iframe"); 11 const cmStyle = cmFrame.contentDocument.getElementById("cmBaseStyle"); 12 ok(~cmStyle.innerHTML.indexOf(".CodeMirror"), "correct iframe is there"); 13 14 // getOption/setOption 15 ok(ed.getOption("styleActiveLine"), "getOption works"); 16 ed.setOption("styleActiveLine", false); 17 ok(!ed.getOption("styleActiveLine"), "setOption works"); 18 19 // Language modes 20 is(ed.getMode(), Editor.modes.text, "getMode"); 21 ed.setMode(Editor.modes.javascript); 22 is(ed.getMode(), Editor.modes.javascript, "setMode"); 23 24 // Content 25 is(ed.getText(), "Hello.", "getText"); 26 ed.setText("Hi.\nHow are you?"); 27 is(ed.getText(), "Hi.\nHow are you?", "setText"); 28 is(ed.getText(1), "How are you?", "getText(num)"); 29 is(ed.getText(5), "", "getText(num) when num is out of scope"); 30 31 ed.replaceText("YOU", { line: 1, ch: 8 }, { line: 1, ch: 11 }); 32 is(ed.getText(1), "How are YOU?", "replaceText(str, from, to)"); 33 ed.replaceText("you?", { line: 1, ch: 8 }); 34 is(ed.getText(1), "How are you?", "replaceText(str, from)"); 35 ed.replaceText("Hello."); 36 is(ed.getText(), "Hello.", "replaceText(str)"); 37 38 ed.insertText(", sir/madam", { line: 0, ch: 5 }); 39 is(ed.getText(), "Hello, sir/madam.", "insertText"); 40 41 // Add-ons 42 ed.extend({ whoami: () => "Anton", whereami: () => "Mozilla" }); 43 is(ed.whoami(), "Anton", "extend/1"); 44 is(ed.whereami(), "Mozilla", "extend/2"); 45 46 // Line classes 47 ed.setText("Hello!\nHow are you?"); 48 ok(!ed.hasLineClass(0, "test"), "no test line class"); 49 ed.addLineClass(0, "test"); 50 ok(ed.hasLineClass(0, "test"), "test line class is there"); 51 ed.removeLineClass(0, "test"); 52 ok(!ed.hasLineClass(0, "test"), "test line class is gone"); 53 54 // Font size 55 const size = ed.getFontSize(); 56 is("number", typeof size, "we have the default font size"); 57 ed.setFontSize(ed.getFontSize() + 1); 58 is(ed.getFontSize(), size + 1, "new font size was set"); 59 60 info("Check that we display unicode values for non-printable characters"); 61 ed.setText("> \u202e \u2066 - \u2069 \u2066 <"); 62 63 const doc = win.document.querySelector("iframe").contentWindow.document; 64 const nonPrintableCharElements = Array.from( 65 doc.querySelectorAll(".cm-non-printable-char") 66 ); 67 68 Assert.deepEqual( 69 nonPrintableCharElements.map(el => el.textContent), 70 ["\\u202e", "\\u2066", "\\u2069", "\\u2066"], 71 "non printable chars are displayed as expected" 72 ); 73 74 teardown(ed, win); 75 }