166 lines
No EOL
6 KiB
JavaScript
166 lines
No EOL
6 KiB
JavaScript
var TextDocumentTest = new TestCase("TextDocumentTest", {
|
|
|
|
"test: find matching opening bracket" : function() {
|
|
var doc = new ace.Document(["(()(", "())))"]);
|
|
|
|
assertPosition(0, 1, doc.findMatchingBracket({row: 0, column: 3}));
|
|
assertPosition(1, 0, doc.findMatchingBracket({row: 1, column: 2}));
|
|
assertPosition(0, 3, doc.findMatchingBracket({row: 1, column: 3}));
|
|
assertPosition(0, 0, doc.findMatchingBracket({row: 1, column: 4}));
|
|
assertEquals(null, doc.findMatchingBracket({row: 1, column: 5}));
|
|
},
|
|
|
|
"test: find matching closing bracket" : function() {
|
|
var doc = new ace.Document(["(()(", "())))"]);
|
|
|
|
assertPosition(1, 1, doc.findMatchingBracket({row: 1, column: 1}));
|
|
assertPosition(1, 1, doc.findMatchingBracket({row: 1, column: 1}));
|
|
assertPosition(1, 2, doc.findMatchingBracket({row: 0, column: 4}));
|
|
assertPosition(0, 2, doc.findMatchingBracket({row: 0, column: 2}));
|
|
assertPosition(1, 3, doc.findMatchingBracket({row: 0, column: 1}));
|
|
assertEquals(null, doc.findMatchingBracket({row: 0, column: 0}));
|
|
},
|
|
|
|
"test: match different bracket types" : function() {
|
|
var doc = new ace.Document(["({[", ")]}"]);
|
|
|
|
assertPosition(1, 0, doc.findMatchingBracket({row: 0, column: 1}));
|
|
assertPosition(1, 2, doc.findMatchingBracket({row: 0, column: 2}));
|
|
assertPosition(1, 1, doc.findMatchingBracket({row: 0, column: 3}));
|
|
|
|
assertPosition(0, 0, doc.findMatchingBracket({row: 1, column: 1}));
|
|
assertPosition(0, 2, doc.findMatchingBracket({row: 1, column: 2}));
|
|
assertPosition(0, 1, doc.findMatchingBracket({row: 1, column: 3}));
|
|
},
|
|
|
|
"test: move lines down" : function() {
|
|
var doc = new ace.Document(["1", "2", "3", "4"]);
|
|
|
|
doc.moveLinesDown(0, 1);
|
|
assertEquals(["3", "1", "2", "4"].join("\n"), doc.toString());
|
|
|
|
doc.moveLinesDown(1, 2);
|
|
assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString());
|
|
|
|
doc.moveLinesDown(2, 3);
|
|
assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString());
|
|
|
|
doc.moveLinesDown(2, 2);
|
|
assertEquals(["3", "4", "2", "1"].join("\n"), doc.toString());
|
|
},
|
|
|
|
"test: move lines up" : function() {
|
|
var doc = new ace.Document(["1", "2", "3", "4"]);
|
|
|
|
doc.moveLinesUp(2, 3);
|
|
assertEquals(["1", "3", "4", "2"].join("\n"), doc.toString());
|
|
|
|
doc.moveLinesUp(1, 2);
|
|
assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString());
|
|
|
|
doc.moveLinesUp(0, 1);
|
|
assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString());
|
|
|
|
doc.moveLinesUp(2, 2);
|
|
assertEquals(["3", "1", "4", "2"].join("\n"), doc.toString());
|
|
},
|
|
|
|
"test: duplicate lines" : function() {
|
|
var doc = new ace.Document(["1", "2", "3", "4"]);
|
|
|
|
doc.duplicateLines(1, 2);
|
|
assertEquals(["1", "2", "3", "2", "3", "4"].join("\n"), doc.toString());
|
|
},
|
|
|
|
"test: duplicate last line" : function() {
|
|
var doc = new ace.Document(["1", "2", "3"]);
|
|
|
|
doc.duplicateLines(2, 2);
|
|
assertEquals(["1", "2", "3", "3"].join("\n"), doc.toString());
|
|
},
|
|
|
|
"test: duplicate first line" : function() {
|
|
var doc = new ace.Document(["1", "2", "3"]);
|
|
|
|
doc.duplicateLines(0, 0);
|
|
assertEquals(["1", "1", "2", "3"].join("\n"), doc.toString());
|
|
},
|
|
|
|
"test: should handle unix style new lines" : function() {
|
|
var doc = new ace.Document(["1", "2", "3"]);
|
|
assertEquals(["1", "2", "3"].join("\n"), doc.toString());
|
|
},
|
|
|
|
"test: should handle windows style new lines" : function() {
|
|
var doc = new ace.Document(["1", "2", "3"].join("\r\n"));
|
|
doc.setNewLineMode("unix");
|
|
assertEquals(["1", "2", "3"].join("\n"), doc.toString());
|
|
},
|
|
|
|
"test: set new line mode to 'windows' should use '\r\n' as new lines": function() {
|
|
var doc = new ace.Document(["1", "2", "3"].join("\n"));
|
|
doc.setNewLineMode("windows");
|
|
assertEquals(["1", "2", "3"].join("\r\n"), doc.toString());
|
|
},
|
|
|
|
"test: set new line mode to 'unix' should use '\n' as new lines": function() {
|
|
var doc = new ace.Document(["1", "2", "3"].join("\r\n"));
|
|
doc.setNewLineMode("unix");
|
|
assertEquals(["1", "2", "3"].join("\n"), doc.toString());
|
|
},
|
|
|
|
"test: set new line mode to 'auto' should use detect the incoming nl type": function() {
|
|
var doc = new ace.Document(["1", "2", "3"].join("\n"));
|
|
doc.setNewLineMode("auto");
|
|
assertEquals(["1", "2", "3"].join("\n"), doc.toString());
|
|
|
|
var doc = new ace.Document(["1", "2", "3"].join("\r\n"));
|
|
doc.setNewLineMode("auto");
|
|
assertEquals(["1", "2", "3"].join("\r\n"), doc.toString());
|
|
|
|
doc.replace(new ace.Range(0, 0, 2, 1), ["4", "5", "6"].join("\n"));
|
|
assertEquals(["4", "5", "6"].join("\n"), doc.toString());
|
|
},
|
|
|
|
"test: undo/redo for delete line" : function() {
|
|
var doc = new ace.Document(["111", "222", "333"]);
|
|
var undoManager = new ace.UndoManager();
|
|
doc.setUndoManager(undoManager);
|
|
|
|
var initialText = doc.toString();
|
|
|
|
var editor = new ace.Editor(new MockRenderer(), doc);
|
|
|
|
editor.removeLines();
|
|
var step1 = doc.toString();
|
|
assertEquals("222\n333", step1);
|
|
doc.$informUndoManager.call();
|
|
|
|
editor.removeLines();
|
|
var step2 = doc.toString();
|
|
assertEquals("333", step2);
|
|
doc.$informUndoManager.call();
|
|
|
|
editor.removeLines();
|
|
var step3 = doc.toString();
|
|
assertEquals("", step3);
|
|
doc.$informUndoManager.call();
|
|
|
|
|
|
undoManager.undo();
|
|
doc.$informUndoManager.call();
|
|
assertEquals(step2, doc.toString());
|
|
|
|
undoManager.undo();
|
|
doc.$informUndoManager.call();
|
|
assertEquals(step1, doc.toString());
|
|
|
|
undoManager.undo();
|
|
doc.$informUndoManager.call();
|
|
assertEquals(initialText, doc.toString());
|
|
|
|
undoManager.undo();
|
|
doc.$informUndoManager.call();
|
|
assertEquals(initialText, doc.toString());
|
|
}
|
|
}); |