ace/build/ace/test/mode/JavaScriptTest.js
2010-11-04 16:34:15 +01:00

59 lines
No EOL
3.7 KiB
JavaScript

require.def(["ace/Document", "ace/Range", "ace/Tokenizer", "ace/mode/JavaScript"], function(c, d, e, f) {
new TestCase("mode.JavaScriptTest", {setUp:function() {
this.mode = new f
}, "test: getTokenizer() (smoke test)":function() {
var a = this.mode.getTokenizer();
assertTrue(a instanceof e);
a = a.getLineTokens("'juhu'", "start").tokens;
assertEquals("string", a[0].type)
}, "test: toggle comment lines should prepend '//' to each line":function() {
var a = new c([" abc", "cde", "fg"]), b = new d(0, 3, 1, 1);
this.mode.toggleCommentLines("start", a, b);
assertEquals("// abc\n//cde\nfg", a.toString())
}, "test: toggle comment on commented lines should remove leading '//' chars":function() {
var a = new c(["// abc", "//cde", "fg"]), b = new d(0, 3, 1, 1);
this.mode.toggleCommentLines("start", a, b);
assertEquals(" abc\ncde\nfg", a.toString())
}, "test: toggle comment on multiple lines with one commented line prepend '//' to each line":function() {
var a = new c(["// abc", "//cde", "fg"]), b = new d(0, 3, 2, 1);
this.mode.toggleCommentLines("start", a, b);
assertEquals("//// abc\n////cde\n//fg", a.toString())
}, "test: toggle comment on a comment line with leading white space":function() {
var a = new c(["//cde", " //fg"]), b = new d(0, 3, 1, 1);
this.mode.toggleCommentLines("start", a, b);
assertEquals("cde\n fg", a.toString())
}, "test: auto indent after opening brace":function() {
assertEquals(" ", this.mode.getNextLineIndent("start", "if () {", " "))
}, "test: no auto indent after opening brace in multi line comment":function() {
assertEquals("", this.mode.getNextLineIndent("start", "/*if () {", " "));
assertEquals(" ", this.mode.getNextLineIndent("comment", " abcd", " "))
}, "test: no auto indent after opening brace in single line comment":function() {
assertEquals("", this.mode.getNextLineIndent("start", "//if () {", " "));
assertEquals(" ", this.mode.getNextLineIndent("start", " //if () {", " "))
}, "test: no auto indent should add to existing indent":function() {
assertEquals(" ", this.mode.getNextLineIndent("start", " if () {", " "));
assertEquals(" ", this.mode.getNextLineIndent("start", " cde", " "))
}, "test: special indent in doc comments":function() {
assertEquals(" * ", this.mode.getNextLineIndent("doc-start", "/**", " "));
assertEquals(" * ", this.mode.getNextLineIndent("doc-start", " /**", " "));
assertEquals(" * ", this.mode.getNextLineIndent("doc-start", " *", " "));
assertEquals(" * ", this.mode.getNextLineIndent("doc-start", " *", " "));
assertEquals(" ", this.mode.getNextLineIndent("doc-start", " abc", " "))
}, "test: no indent after doc comments":function() {
assertEquals("", this.mode.getNextLineIndent("doc-start", " */", " "))
}, "test: trigger outdent if line is space and new text starts with closing brace":function() {
assertTrue(this.mode.checkOutdent("start", " ", " }"));
assertFalse(this.mode.checkOutdent("start", " a ", " }"));
assertFalse(this.mode.checkOutdent("start", "", "}"));
assertFalse(this.mode.checkOutdent("start", " ", "a }"));
assertFalse(this.mode.checkOutdent("start", " }", "}"))
}, "test: auto outdent should indent the line with the same indent as the line with the matching opening brace":function() {
var a = new c([" function foo() {", " bla", " }"]);
this.mode.autoOutdent("start", a, 2);
assertEquals(" }", a.getLine(2))
}, "test: no auto outdent if no matching brace is found":function() {
var a = new c([" function foo()", " bla", " }"]);
this.mode.autoOutdent("start", a, 2);
assertEquals(" }", a.getLine(2))
}})
});