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()); } });