Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"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);
}