gecko/browser/devtools/sourceeditor/test/browser_detectindent.js

104 lines
2.1 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const TWO_SPACES_CODE = [
"/*",
" * tricky comment block",
" */",
"div {",
" color: red;",
" background: blue;",
"}",
" ",
"span {",
" padding-left: 10px;",
"}"
].join("\n");
const FOUR_SPACES_CODE = [
"var obj = {",
" addNumbers: function() {",
" var x = 5;",
" var y = 18;",
" return x + y;",
" },",
" ",
" /*",
" * Do some stuff to two numbers",
" * ",
" * @param x",
" * @param y",
" * ",
" * @return the result of doing stuff",
" */",
" subtractNumbers: function(x, y) {",
" var x += 7;",
" var y += 18;",
" var result = x - y;",
" result %= 2;",
" }",
"}"
].join("\n");
const TABS_CODE = [
"/*",
" * tricky comment block",
" */",
"div {",
"\tcolor: red;",
"\tbackground: blue;",
"}",
"",
"span {",
"\tpadding-left: 10px;",
"}"
].join("\n");
const NONE_CODE = [
"var x = 0;",
" // stray thing",
"var y = 9;",
" ",
""
].join("\n");
function test() {
waitForExplicitFinish();
setup((ed, win) => {
is(ed.getOption("indentUnit"), 2,
"2 spaces before code added");
is(ed.getOption("indentWithTabs"), false,
"spaces is default");
ed.setText(NONE_CODE);
is(ed.getOption("indentUnit"), 2,
"2 spaces after un-detectable code");
is(ed.getOption("indentWithTabs"), false,
"spaces still set after un-detectable code");
ed.setText(FOUR_SPACES_CODE);
is(ed.getOption("indentUnit"), 4,
"4 spaces detected in 4 space code");
is(ed.getOption("indentWithTabs"), false,
"spaces detected in 4 space code");
ed.setText(TWO_SPACES_CODE);
is(ed.getOption("indentUnit"), 2,
"2 spaces detected in 2 space code");
is(ed.getOption("indentWithTabs"), false,
"spaces detected in 2 space code");
ed.setText(TABS_CODE);
is(ed.getOption("indentUnit"), 2,
"2 space indentation unit");
is(ed.getOption("indentWithTabs"), true,
"tabs detected in majority tabs code");
teardown(ed, win);
});
}