all tests are green again

This commit is contained in:
Fabian Jakobs 2011-01-19 08:41:04 +01:00
commit 0fe4de2b62
15 changed files with 281 additions and 279 deletions

View file

@ -257,7 +257,7 @@ var Document = function(text) {
range.end = this.$clipPosition(range.end);
if (range.isEmpty())
return;
return range.start;
var firstRow = range.start.row;
var lastRow = range.end.row;
@ -274,6 +274,7 @@ var Document = function(text) {
else {
this.removeInLine(firstRow, range.start.column, range.end.column);
}
return range.start;
};
this.removeInLine = function(row, startColumn, endColumn) {

View file

@ -42,7 +42,7 @@ var event = require("pilot/event");
var lang = require("pilot/lang");
var TextInput = require("ace/keyboard/textinput").TextInput;
var KeyBinding = require("ace/keyboard/keybinding").KeyBinding;
var Document = require("ace/document").Document;
var EditSession = require("ace/edit_session").EditSession;
var Search = require("ace/search").Search;
var BackgroundTokenizer = require("ace/background_tokenizer").BackgroundTokenizer;
var Range = require("ace/range").Range;
@ -78,7 +78,7 @@ var Editor =function(renderer, doc) {
wrap: true
});
this.setDocument(doc || new Document(""));
this.setDocument(doc || new EditSession(""));
this.focus();
};

View file

@ -67,14 +67,14 @@ Search.SELECTION = 2;
return lang.copyObject(this.$options);
};
this.find = function(doc) {
this.find = function(session) {
if (!this.$options.needle)
return null;
if (this.$options.backwards) {
var iterator = this.$backwardMatchIterator(doc);
var iterator = this.$backwardMatchIterator(session);
} else {
iterator = this.$forwardMatchIterator(doc);
iterator = this.$forwardMatchIterator(session);
}
var firstRange = null;
@ -86,14 +86,14 @@ Search.SELECTION = 2;
return firstRange;
};
this.findAll = function(doc) {
this.findAll = function(session) {
if (!this.$options.needle)
return [];
if (this.$options.backwards) {
var iterator = this.$backwardMatchIterator(doc);
var iterator = this.$backwardMatchIterator(session);
} else {
iterator = this.$forwardMatchIterator(doc);
iterator = this.$forwardMatchIterator(session);
}
var ranges = [];
@ -118,13 +118,13 @@ Search.SELECTION = 2;
}
};
this.$forwardMatchIterator = function(doc) {
this.$forwardMatchIterator = function(session) {
var re = this.$assembleRegExp();
var self = this;
return {
forEach: function(callback) {
self.$forwardLineIterator(doc).forEach(function(line, startIndex, row) {
self.$forwardLineIterator(session).forEach(function(line, startIndex, row) {
if (startIndex) {
line = line.substring(startIndex);
}
@ -152,13 +152,13 @@ Search.SELECTION = 2;
};
};
this.$backwardMatchIterator = function(doc) {
this.$backwardMatchIterator = function(session) {
var re = this.$assembleRegExp();
var self = this;
return {
forEach: function(callback) {
self.$backwardLineIterator(doc).forEach(function(line, startIndex, row) {
self.$backwardLineIterator(session).forEach(function(line, startIndex, row) {
if (startIndex) {
line = line.substring(startIndex);
}
@ -208,20 +208,20 @@ Search.SELECTION = 2;
return re;
};
this.$forwardLineIterator = function(doc) {
this.$forwardLineIterator = function(session) {
var searchSelection = this.$options.scope == Search.SELECTION;
var range = doc.getSelection().getRange();
var start = doc.getSelection().getCursor();
var range = session.getSelection().getRange();
var start = session.getSelection().getCursor();
var firstRow = searchSelection ? range.start.row : 0;
var firstColumn = searchSelection ? range.start.column : 0;
var lastRow = searchSelection ? range.end.row : doc.getLength() - 1;
var lastRow = searchSelection ? range.end.row : session.getLength() - 1;
var wrap = this.$options.wrap;
function getLine(row) {
var line = doc.getLine(row);
var line = session.getLine(row);
if (searchSelection && row == range.end.row) {
line = line.substring(0, range.end.column);
}
@ -264,15 +264,15 @@ Search.SELECTION = 2;
};
};
this.$backwardLineIterator = function(doc) {
this.$backwardLineIterator = function(session) {
var searchSelection = this.$options.scope == Search.SELECTION;
var range = doc.getSelection().getRange();
var range = session.getSelection().getRange();
var start = searchSelection ? range.end : range.start;
var firstRow = searchSelection ? range.start.row : 0;
var firstColumn = searchSelection ? range.start.column : 0;
var lastRow = searchSelection ? range.end.row : doc.getLength() - 1;
var lastRow = searchSelection ? range.end.row : session.getLength() - 1;
var wrap = this.$options.wrap;
@ -280,7 +280,7 @@ Search.SELECTION = 2;
forEach : function(callback) {
var row = start.row;
var line = doc.getLine(row).substring(0, start.column);
var line = session.getLine(row).substring(0, start.column);
var startIndex = 0;
var stop = false;
@ -303,7 +303,7 @@ Search.SELECTION = 2;
if (row == start.row)
stop = true;
line = doc.getLine(row);
line = session.getLine(row);
if (searchSelection) {
if (row == firstRow)
startIndex = firstColumn;

View file

@ -42,6 +42,7 @@ var async = require("async");
async.concat(
require("./change_document_test"),
require("./document_test"),
require("./edit_session_test"),
require("./event_emitter_test"),
require("./navigation_test"),
require("./range_test"),

View file

@ -39,7 +39,7 @@ define(function(require, exports, module) {
require("./mockdom");
var Document = require("../document").Document,
var EditSession = require("../edit_session").EditSession,
Editor = require("../editor").Editor,
Text = require("../mode/text").Mode,
JavaScriptMode = require("../mode/javascript").Mode,
@ -47,10 +47,12 @@ var Document = require("../document").Document,
assert = require("./assertions");
var Test = {
setUp : function() {
this.doc1 = new Document(["abc", "def"].join("\n"));
this.doc2 = new Document(["ghi", "jkl"].join("\n"));
setUp : function(next) {
this.doc1 = new EditSession(["abc", "def"]);
this.doc2 = new EditSession(["ghi", "jkl"]);
this.editor = new Editor(new MockRenderer());
next();
},
"test: change document" : function() {

View file

@ -37,10 +37,10 @@
define(function(require, exports, module) {
var EditSession = require("../edit_session").EditSession,
UndoManager = require("../undomanager").UndoManager,
var EditSession = require("ace/edit_session").EditSession,
UndoManager = require("ace/undomanager").UndoManager,
MockRenderer = require("./mockrenderer"),
Range = require("../range").Range,
Range = require("ace/range").Range,
assert = require("./assertions"),
async = require("async");

View file

@ -37,7 +37,7 @@
define(function(require, exports, module) {
var Document = require("ace/document").Document;
var EditSession = require("ace/edit_session").EditSession;
var CssMode = require("ace/mode/css").Mode;
var assert = require("../assertions");
@ -47,10 +47,10 @@ var Test = {
},
"test: toggle comment lines should not do anything" : function() {
var doc = new Document([" abc", "cde", "fg"].join("\n"));
var session = new EditSession([" abc", "cde", "fg"].join("\n"));
var comment = this.mode.toggleCommentLines("start", doc, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), doc.toString());
var comment = this.mode.toggleCommentLines("start", session, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), session.toString());
},

View file

@ -37,7 +37,7 @@
define(function(require, exports, module) {
var Document = require("ace/document").Document;
var EditSession = require("ace/edit_session").EditSession;
var Range = require("ace/range").Range;
var HtmlMode = require("ace/mode/html").Mode;
var assert = require("../assertions");
@ -48,11 +48,11 @@ var Test = {
},
"test: toggle comment lines should not do anything" : function() {
var doc = new Document([" abc", "cde", "fg"]);
var session = new EditSession([" abc", "cde", "fg"]);
var range = new Range(0, 3, 1, 1);
var comment = this.mode.toggleCommentLines("start", doc, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), doc.toString());
var comment = this.mode.toggleCommentLines("start", session, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), session.toString());
},
"test: next line indent should be the same as the current line indent" : function() {

View file

@ -37,7 +37,7 @@
define(function(require, exports, module) {
var Document = require("ace/document").Document;
var EditSession = require("ace/edit_session").EditSession;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var JavaScriptMode = require("ace/mode/javascript").Mode;
var assert = require("../assertions");
@ -57,39 +57,39 @@ var Test = {
},
"test: toggle comment lines should prepend '//' to each line" : function() {
var doc = new Document([" abc", "cde", "fg"]);
var session = new EditSession([" abc", "cde", "fg"]);
var comment = this.mode.toggleCommentLines("start", doc, 0, 1);
assert.equal(["// abc", "//cde", "fg"].join("\n"), doc.toString());
var comment = this.mode.toggleCommentLines("start", session, 0, 1);
assert.equal(["// abc", "//cde", "fg"].join("\n"), session.toString());
},
"test: toggle comment on commented lines should remove leading '//' chars" : function() {
var doc = new Document(["// abc", "//cde", "fg"]);
var session = new EditSession(["// abc", "//cde", "fg"]);
var comment = this.mode.toggleCommentLines("start", doc, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), doc.toString());
var comment = this.mode.toggleCommentLines("start", session, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), session.toString());
},
"test: toggle comment lines twice should return the original text" : function() {
var doc = new Document([" abc", "cde", "fg"]);
var session = new EditSession([" abc", "cde", "fg"]);
this.mode.toggleCommentLines("start", doc, 0, 2);
this.mode.toggleCommentLines("start", doc, 0, 2);
assert.equal([" abc", "cde", "fg"].join("\n"), doc.toString());
this.mode.toggleCommentLines("start", session, 0, 2);
this.mode.toggleCommentLines("start", session, 0, 2);
assert.equal([" abc", "cde", "fg"].join("\n"), session.toString());
},
"test: toggle comment on multiple lines with one commented line prepend '//' to each line" : function() {
var doc = new Document(["// abc", "//cde", "fg"]);
var session = new EditSession(["// abc", "//cde", "fg"]);
var comment = this.mode.toggleCommentLines("start", doc, 0, 2);
assert.equal(["//// abc", "////cde", "//fg"].join("\n"), doc.toString());
var comment = this.mode.toggleCommentLines("start", session, 0, 2);
assert.equal(["//// abc", "////cde", "//fg"].join("\n"), session.toString());
},
"test: toggle comment on a comment line with leading white space": function() {
var doc = new Document(["//cde", " //fg"]);
var session = new EditSession(["//cde", " //fg"]);
var comment = this.mode.toggleCommentLines("start", doc, 0, 1);
assert.equal(["cde", " fg"].join("\n"), doc.toString());
var comment = this.mode.toggleCommentLines("start", session, 0, 1);
assert.equal(["cde", " fg"].join("\n"), session.toString());
},
"test: auto indent after opening brace" : function() {
@ -132,15 +132,15 @@ var Test = {
},
"test: auto outdent should indent the line with the same indent as the line with the matching opening brace" : function() {
var doc = new Document([" function foo() {", " bla", " }"]);
this.mode.autoOutdent("start", doc, 2);
assert.equal(" }", doc.getLine(2));
var session = new EditSession([" function foo() {", " bla", " }"]);
this.mode.autoOutdent("start", session, 2);
assert.equal(" }", session.getLine(2));
},
"test: no auto outdent if no matching brace is found" : function() {
var doc = new Document([" function foo()", " bla", " }"]);
this.mode.autoOutdent("start", doc, 2);
assert.equal(" }", doc.getLine(2));
var session = new EditSession([" function foo()", " bla", " }"]);
this.mode.autoOutdent("start", session, 2);
assert.equal(" }", session.getLine(2));
}
};

View file

@ -37,7 +37,7 @@
define(function(require, exports, module) {
var Document = require("ace/document").Document;
var EditSession = require("ace/edit_session").EditSession;
var TextMode = require("ace/mode/text").Mode;
var assert = require("../assertions");
@ -47,10 +47,10 @@ var Test = {
},
"test: toggle comment lines should not do anything" : function() {
var doc = new Document([" abc", "cde", "fg"]);
var session = new EditSession([" abc", "cde", "fg"]);
var comment = this.mode.toggleCommentLines("start", doc, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), doc.toString());
var comment = this.mode.toggleCommentLines("start", session, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), session.toString());
},

View file

@ -37,7 +37,7 @@
define(function(require, exports, module) {
var Document = require("ace/document").Document;
var EditSession = require("ace/edit_session").EditSession;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var XmlMode = require("ace/mode/xml").Mode;
var assert = require("../assertions");
@ -57,10 +57,10 @@ var Test = {
},
"test: toggle comment lines should not do anything" : function() {
var doc = new Document([" abc", "cde", "fg"]);
var session = new EditSession([" abc", "cde", "fg"]);
var comment = this.mode.toggleCommentLines("start", doc, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), doc.toString());
var comment = this.mode.toggleCommentLines("start", session, 0, 1);
assert.equal([" abc", "cde", "fg"].join("\n"), session.toString());
},
"test: next line indent should be the same as the current line indent" : function() {

View file

@ -39,20 +39,20 @@ define(function(require, exports, module) {
require("./mockdom");
var Document = require("../Document").Document,
var EditSession = require("ace/edit_session").EditSession,
Editor = require("../Editor").Editor,
MockRenderer = require("./mockrenderer"),
assert = require("./assertions");
var Test = {
createTextDocument : function(rows, cols) {
createEditSession : function(rows, cols) {
var line = new Array(cols + 1).join("a");
var text = new Array(rows).join(line + "\n") + line;
return new Document(text);
return new EditSession(text);
},
"test: navigate to end of file should scroll the last line into view" : function() {
var doc = this.createTextDocument(200, 10);
var doc = this.createEditSession(200, 10);
var editor = new Editor(new MockRenderer(), doc);
editor.navigateFileEnd();
@ -63,7 +63,7 @@ var Test = {
},
"test: navigate to start of file should scroll the first row into view" : function() {
var doc = this.createTextDocument(200, 10);
var doc = this.createEditSession(200, 10);
var editor = new Editor(new MockRenderer(), doc);
editor.moveCursorTo(editor.getLastVisibleRow() + 20);
@ -73,7 +73,7 @@ var Test = {
},
"test: goto hidden line should scroll the line into the middle of the viewport" : function() {
var editor = new Editor(new MockRenderer(), this.createTextDocument(200, 5));
var editor = new Editor(new MockRenderer(), this.createEditSession(200, 5));
editor.navigateTo(0, 0);
editor.gotoLine(101);
@ -107,7 +107,7 @@ var Test = {
},
"test: goto visible line should only move the cursor and not scroll": function() {
var editor = new Editor(new MockRenderer(), this.createTextDocument(200, 5));
var editor = new Editor(new MockRenderer(), this.createEditSession(200, 5));
editor.navigateTo(0, 0);
editor.gotoLine(12);
@ -121,7 +121,7 @@ var Test = {
},
"test: navigate from the end of a long line down to a short line and back should maintain the curser column": function() {
var editor = new Editor(new MockRenderer(), new Document(["123456", "1"]));
var editor = new Editor(new MockRenderer(), new EditSession(["123456", "1"]));
editor.navigateTo(0, 6);
assert.position(editor.getCursorPosition(), 0, 6);
@ -134,7 +134,7 @@ var Test = {
},
"test: reset desired column on navigate left or right": function() {
var editor = new Editor(new MockRenderer(), new Document(["123456", "12"]));
var editor = new Editor(new MockRenderer(), new EditSession(["123456", "12"]));
editor.navigateTo(0, 6);
assert.position(editor.getCursorPosition(), 0, 6);

View file

@ -37,7 +37,7 @@
define(function(require, exports, module) {
var Document = require("../document").Document,
var EditSession = require("ace/edit_session").EditSession,
Search = require("../search").Search,
assert = require("./assertions");
@ -51,128 +51,128 @@ var Test = {
},
"test: find simple text in document" : function() {
var doc = new Document(["juhu kinners 123", "456"]);
var session = new EditSession(["juhu kinners 123", "456"]);
var search = new Search().set({
needle: "kinners"
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 0, 5);
assert.position(range.end, 0, 12);
},
"test: find simple text in next line" : function() {
var doc = new Document(["abc", "juhu kinners 123", "456"]);
var session = new EditSession(["abc", "juhu kinners 123", "456"]);
var search = new Search().set({
needle: "kinners"
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 1, 5);
assert.position(range.end, 1, 12);
},
"test: find text starting at cursor position" : function() {
var doc = new Document(["juhu kinners", "juhu kinners 123"]);
doc.getSelection().moveCursorTo(0, 6);
var session = new EditSession(["juhu kinners", "juhu kinners 123"]);
session.getSelection().moveCursorTo(0, 6);
var search = new Search().set({
needle: "kinners"
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 1, 5);
assert.position(range.end, 1, 12);
},
"test: wrap search is off by default" : function() {
var doc = new Document(["abc", "juhu kinners 123", "456"]);
doc.getSelection().moveCursorTo(2, 1);
var session = new EditSession(["abc", "juhu kinners 123", "456"]);
session.getSelection().moveCursorTo(2, 1);
var search = new Search().set({
needle: "kinners"
});
assert.equal(search.find(doc), null);
assert.equal(search.find(session), null);
},
"test: wrap search should wrap at file end" : function() {
var doc = new Document(["abc", "juhu kinners 123", "456"]);
doc.getSelection().moveCursorTo(2, 1);
var session = new EditSession(["abc", "juhu kinners 123", "456"]);
session.getSelection().moveCursorTo(2, 1);
var search = new Search().set({
needle: "kinners",
wrap: true
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 1, 5);
assert.position(range.end, 1, 12);
},
"test: wrap search with no match should return 'null'": function() {
var doc = new Document(["abc", "juhu kinners 123", "456"]);
doc.getSelection().moveCursorTo(2, 1);
var session = new EditSession(["abc", "juhu kinners 123", "456"]);
session.getSelection().moveCursorTo(2, 1);
var search = new Search().set({
needle: "xyz",
wrap: true
});
assert.equal(search.find(doc), null);
assert.equal(search.find(session), null);
},
"test: case sensitive is by default off": function() {
var doc = new Document(["abc", "juhu kinners 123", "456"]);
var session = new EditSession(["abc", "juhu kinners 123", "456"]);
var search = new Search().set({
needle: "JUHU"
});
assert.range(search.find(doc), 1, 0, 1, 4);
assert.range(search.find(session), 1, 0, 1, 4);
},
"test: case sensitive search": function() {
var doc = new Document(["abc", "juhu kinners 123", "456"]);
var session = new EditSession(["abc", "juhu kinners 123", "456"]);
var search = new Search().set({
needle: "KINNERS",
caseSensitive: true
});
var range = search.find(doc);
var range = search.find(session);
assert.equal(range, null);
},
"test: whole word search should not match inside of words": function() {
var doc = new Document(["juhukinners", "juhu kinners 123", "456"]);
var session = new EditSession(["juhukinners", "juhu kinners 123", "456"]);
var search = new Search().set({
needle: "kinners",
wholeWord: true
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 1, 5);
assert.position(range.end, 1, 12);
},
"test: find backwards": function() {
var doc = new Document(["juhu juhu juhu juhu"]);
doc.getSelection().moveCursorTo(0, 10);
var session = new EditSession(["juhu juhu juhu juhu"]);
session.getSelection().moveCursorTo(0, 10);
var search = new Search().set({
needle: "juhu",
backwards: true
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 0, 5);
assert.position(range.end, 0, 9);
},
"test: find in selection": function() {
var doc = new Document(["juhu", "juhu", "juhu", "juhu"]);
doc.getSelection().setSelectionAnchor(1, 0);
doc.getSelection().selectTo(3, 5);
var session = new EditSession(["juhu", "juhu", "juhu", "juhu"]);
session.getSelection().setSelectionAnchor(1, 0);
session.getSelection().selectTo(3, 5);
var search = new Search().set({
needle: "juhu",
@ -180,20 +180,20 @@ var Test = {
scope: Search.SELECTION
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 1, 0);
assert.position(range.end, 1, 4);
doc.getSelection().setSelectionAnchor(0, 2);
doc.getSelection().selectTo(3, 2);
session.getSelection().setSelectionAnchor(0, 2);
session.getSelection().selectTo(3, 2);
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 1, 0);
assert.position(range.end, 1, 4);
},
"test: find backwards in selection": function() {
var doc = new Document(["juhu", "juhu", "juhu", "juhu"]);
var session = new EditSession(["juhu", "juhu", "juhu", "juhu"]);
var search = new Search().set({
needle: "juhu",
@ -202,36 +202,36 @@ var Test = {
scope: Search.SELECTION
});
doc.getSelection().setSelectionAnchor(0, 2);
doc.getSelection().selectTo(3, 2);
session.getSelection().setSelectionAnchor(0, 2);
session.getSelection().selectTo(3, 2);
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 2, 0);
assert.position(range.end, 2, 4);
doc.getSelection().setSelectionAnchor(0, 2);
doc.getSelection().selectTo(1, 2);
session.getSelection().setSelectionAnchor(0, 2);
session.getSelection().selectTo(1, 2);
assert.equal(search.find(doc), null);
assert.equal(search.find(session), null);
},
"test: edge case - match directly before the cursor" : function() {
var doc = new Document(["123", "123", "juhu"]);
var session = new EditSession(["123", "123", "juhu"]);
var search = new Search().set({
needle: "juhu",
wrap: true
});
doc.getSelection().moveCursorTo(2, 5);
session.getSelection().moveCursorTo(2, 5);
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 2, 0);
assert.position(range.end, 2, 4);
},
"test: edge case - match backwards directly after the cursor" : function() {
var doc = new Document(["123", "123", "juhu"]);
var session = new EditSession(["123", "123", "juhu"]);
var search = new Search().set({
needle: "juhu",
@ -239,28 +239,28 @@ var Test = {
backwards: true
});
doc.getSelection().moveCursorTo(2, 0);
session.getSelection().moveCursorTo(2, 0);
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 2, 0);
assert.position(range.end, 2, 4);
},
"test: find using a regular expression" : function() {
var doc = new Document(["abc123 123 cd", "abc"]);
var session = new EditSession(["abc123 123 cd", "abc"]);
var search = new Search().set({
needle: "\\d+",
regExp: true
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 0, 3);
assert.position(range.end, 0, 6);
},
"test: find using a regular expression and whole word" : function() {
var doc = new Document(["abc123 123 cd", "abc"]);
var session = new EditSession(["abc123 123 cd", "abc"]);
var search = new Search().set({
needle: "\\d+\\b",
@ -268,26 +268,26 @@ var Test = {
wholeWord: true
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 0, 7);
assert.position(range.end, 0, 10);
},
"test: use regular expressions with capture groups": function() {
var doc = new Document([" ab: 12px", " <h1 abc"]);
var session = new EditSession([" ab: 12px", " <h1 abc"]);
var search = new Search().set({
needle: "(\\d+)",
regExp: true
});
var range = search.find(doc);
var range = search.find(session);
assert.position(range.start, 0, 6);
assert.position(range.end, 0, 8);
},
"test: find all matches in selection" : function() {
var doc = new Document(["juhu", "juhu", "juhu", "juhu"]);
var session = new EditSession(["juhu", "juhu", "juhu", "juhu"]);
var search = new Search().set({
needle: "uh",
@ -295,10 +295,10 @@ var Test = {
scope: Search.SELECTION
});
doc.getSelection().setSelectionAnchor(0, 2);
doc.getSelection().selectTo(3, 2);
session.getSelection().setSelectionAnchor(0, 2);
session.getSelection().selectTo(3, 2);
var ranges = search.findAll(doc);
var ranges = search.findAll(session);
assert.equal(ranges.length, 2);
assert.position(ranges[0].start, 1, 1);

View file

@ -37,35 +37,35 @@
define(function(require, exports, module) {
var Document = require("../document").Document,
var EditSession = require("ace/edit_session").EditSession,
assert = require("./assertions");
var Test = {
createTextDocument : function(rows, cols) {
createSession : function(rows, cols) {
var line = new Array(cols + 1).join("a");
var text = new Array(rows).join(line + "\n") + line;
return new Document(text);
return new EditSession(text);
},
"test: move cursor to end of file should place the cursor on last row and column" : function() {
var doc = this.createTextDocument(200, 10);
var selection = doc.getSelection();
var session = this.createSession(200, 10);
var selection = session.getSelection();
selection.moveCursorFileEnd();
assert.position(selection.getCursor(), 199, 10);
},
"test: moveCursor to start of file should place the cursor on the first row and column" : function() {
var doc = this.createTextDocument(200, 10);
var selection = doc.getSelection();
var session = this.createSession(200, 10);
var selection = session.getSelection();
selection.moveCursorFileStart();
assert.position(selection.getCursor(), 0, 0);
},
"test: move selection lead to end of file" : function() {
var doc = this.createTextDocument(200, 10);
var selection = doc.getSelection();
var session = this.createSession(200, 10);
var selection = session.getSelection();
selection.moveCursorTo(100, 5);
selection.selectFileEnd();
@ -77,8 +77,8 @@ var Test = {
},
"test: move selection lead to start of file" : function() {
var doc = this.createTextDocument(200, 10);
var selection = doc.getSelection();
var session = this.createSession(200, 10);
var selection = session.getSelection();
selection.moveCursorTo(100, 5);
selection.selectFileStart();
@ -90,9 +90,9 @@ var Test = {
},
"test: move cursor word right" : function() {
var doc = new Document( ["ab",
var session = new EditSession( ["ab",
" Juhu Kinners (abc, 12)", " cde"].join("\n"));
var selection = doc.getSelection();
var selection = session.getSelection();
selection.moveCursorDown();
assert.position(selection.getCursor(), 1, 0);
@ -130,8 +130,8 @@ var Test = {
},
"test: select word right if cursor in word" : function() {
var doc = new Document("Juhu Kinners");
var selection = doc.getSelection();
var session = new EditSession("Juhu Kinners");
var selection = session.getSelection();
selection.moveCursorTo(0, 2);
selection.moveCursorWordRight();
@ -140,9 +140,9 @@ var Test = {
},
"test: moveCursor word left" : function() {
var doc = new Document( ["ab",
var session = new EditSession( ["ab",
" Juhu Kinners (abc, 12)", " cde"].join("\n"));
var selection = doc.getSelection();
var selection = session.getSelection();
selection.moveCursorDown();
selection.moveCursorLineEnd();
@ -181,8 +181,8 @@ var Test = {
},
"test: select word left if cursor in word" : function() {
var doc = new Document("Juhu Kinners");
var selection = doc.getSelection();
var session = new EditSession("Juhu Kinners");
var selection = session.getSelection();
selection.moveCursorTo(0, 8);
@ -191,8 +191,8 @@ var Test = {
},
"test: select word right and select" : function() {
var doc = new Document("Juhu Kinners");
var selection = doc.getSelection();
var session = new EditSession("Juhu Kinners");
var selection = session.getSelection();
selection.moveCursorTo(0, 0);
selection.selectWordRight();
@ -204,8 +204,8 @@ var Test = {
},
"test: select word left and select" : function() {
var doc = new Document("Juhu Kinners");
var selection = doc.getSelection();
var session = new EditSession("Juhu Kinners");
var selection = session.getSelection();
selection.moveCursorTo(0, 3);
selection.selectWordLeft();
@ -217,8 +217,8 @@ var Test = {
},
"test: select word with cursor in word should select the word" : function() {
var doc = new Document("Juhu Kinners 123");
var selection = doc.getSelection();
var session = new EditSession("Juhu Kinners 123");
var selection = session.getSelection();
selection.moveCursorTo(0, 8);
selection.selectWord();
@ -229,8 +229,8 @@ var Test = {
},
"test: select word with cursor betwen white space and word should select the word" : function() {
var doc = new Document("Juhu Kinners");
var selection = doc.getSelection();
var session = new EditSession("Juhu Kinners");
var selection = session.getSelection();
selection.moveCursorTo(0, 4);
selection.selectWord();
@ -248,8 +248,8 @@ var Test = {
},
"test: select word with cursor in white space should select white space" : function() {
var doc = new Document("Juhu Kinners");
var selection = doc.getSelection();
var session = new EditSession("Juhu Kinners");
var selection = session.getSelection();
selection.moveCursorTo(0, 5);
selection.selectWord();
@ -260,8 +260,8 @@ var Test = {
},
"test: moving cursor should fire a 'changeCursor' event" : function() {
var doc = new Document("Juhu Kinners");
var selection = doc.getSelection();
var session = new EditSession("Juhu Kinners");
var selection = session.getSelection();
selection.moveCursorTo(0, 5);
@ -275,8 +275,8 @@ var Test = {
},
"test: calling setCursor with the same position should not fire an event": function() {
var doc = new Document("Juhu Kinners");
var selection = doc.getSelection();
var session = new EditSession("Juhu Kinners");
var selection = session.getSelection();
selection.moveCursorTo(0, 5);

View file

@ -38,7 +38,7 @@
define(function(require, exports, module) {
require("./mockdom");
var Document = require("../document").Document,
var EditSession = require("ace/edit_session").EditSession,
Editor = require("../editor").Editor,
JavaScriptMode = require("../mode/javascript").Mode,
UndoManager = require("../undomanager").UndoManager,
@ -47,74 +47,74 @@ var Document = require("../document").Document,
var Test = {
"test: delete line from the middle" : function() {
var doc = new Document(["a", "b", "c", "d"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["a", "b", "c", "d"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 1);
editor.removeLines();
assert.equal(doc.toString(), "a\nc\nd");
assert.equal(session.toString(), "a\nc\nd");
assert.position(editor.getCursorPosition(), 1, 0);
editor.removeLines();
assert.equal(doc.toString(), "a\nd");
assert.equal(session.toString(), "a\nd");
assert.position(editor.getCursorPosition(), 1, 0);
editor.removeLines();
assert.equal(doc.toString(), "a\n");
assert.equal(session.toString(), "a\n");
assert.position(editor.getCursorPosition(), 1, 0);
editor.removeLines();
assert.equal(doc.toString(), "a\n");
assert.equal(session.toString(), "a\n");
assert.position(editor.getCursorPosition(), 1, 0);
},
"test: delete multiple selected lines" : function() {
var doc = new Document(["a", "b", "c", "d"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["a", "b", "c", "d"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 1);
editor.getSelection().selectDown();
editor.removeLines();
assert.equal(doc.toString(), "a\nd");
assert.equal(session.toString(), "a\nd");
assert.position(editor.getCursorPosition(), 1, 0);
},
"test: delete first line" : function() {
var doc = new Document(["a", "b", "c"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["a", "b", "c"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.removeLines();
assert.equal(doc.toString(), "b\nc");
assert.equal(session.toString(), "b\nc");
assert.position(editor.getCursorPosition(), 0, 0);
},
"test: delete last" : function() {
var doc = new Document(["a", "b", "c"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["a", "b", "c"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(2, 1);
editor.removeLines();
assert.equal(doc.toString(), "a\nb\n");
assert.equal(session.toString(), "a\nb\n");
assert.position(editor.getCursorPosition(), 2, 0);
},
"test: indent block" : function() {
var doc = new Document(["a12345", "b12345", "c12345"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["a12345", "b12345", "c12345"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 3);
editor.getSelection().selectDown();
editor.indent();
assert.equal(["a12345", " b12345", " c12345"].join("\n"), doc.toString());
assert.equal(["a12345", " b12345", " c12345"].join("\n"), session.toString());
assert.position(editor.getCursorPosition(), 2, 7);
@ -124,35 +124,35 @@ var Test = {
},
"test: indent selected lines" : function() {
var doc = new Document(["a12345", "b12345", "c12345"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
editor.moveCursorTo(1, 0);
editor.getSelection().selectDown();
editor.indent();
assert.equal(["a12345", " b12345", "c12345"].join("\n"), doc.toString());
},
var session = new EditSession(["a12345", "b12345", "c12345"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 0);
editor.getSelection().selectDown();
editor.indent();
assert.equal(["a12345", " b12345", "c12345"].join("\n"), session.toString());
},
"test: no auto indent if cursor is before the {" : function() {
var doc = new Document("{", new JavaScriptMode());
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession("{", new JavaScriptMode());
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(0, 0);
editor.onTextInput("\n");
assert.equal(["", "{"].join("\n"), doc.toString());
assert.equal(["", "{"].join("\n"), session.toString());
},
"test: outdent block" : function() {
var doc = new Document([" a12345", " b12345", " c12345"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession([" a12345", " b12345", " c12345"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(0, 5);
editor.getSelection().selectDown();
editor.getSelection().selectDown();
editor.blockOutdent();
assert.equal(doc.toString(), [" a12345", "b12345", " c12345"].join("\n"));
assert.equal(session.toString(), [" a12345", "b12345", " c12345"].join("\n"));
assert.position(editor.getCursorPosition(), 2, 1);
@ -161,7 +161,7 @@ var Test = {
assert.position(range.end, 2, 1);
editor.blockOutdent();
assert.equal(doc.toString(), ["a12345", "b12345", "c12345"].join("\n"));
assert.equal(session.toString(), ["a12345", "b12345", "c12345"].join("\n"));
var range = editor.getSelectionRange();
assert.position(range.start, 0, 0);
@ -169,25 +169,25 @@ var Test = {
},
"test: outent without a selection should update cursor" : function() {
var doc = new Document(" 12");
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(" 12");
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(0, 3);
editor.blockOutdent(" ");
assert.equal(doc.toString(), " 12");
assert.equal(session.toString(), " 12");
assert.position(editor.getCursorPosition(), 0, 0);
},
"test: comment lines should perserve selection" : function() {
var doc = new Document([" abc", "cde"].join("\n"), new JavaScriptMode());
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession([" abc", "cde"].join("\n"), new JavaScriptMode());
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(0, 2);
editor.getSelection().selectDown();
editor.toggleCommentLines();
assert.equal(["// abc", "//cde"].join("\n"), doc.toString());
assert.equal(["// abc", "//cde"].join("\n"), session.toString());
var selection = editor.getSelectionRange();
assert.position(selection.start, 0, 4);
@ -195,8 +195,8 @@ var Test = {
},
"test: uncomment lines should perserve selection" : function() {
var doc = new Document(["// abc", "//cde"].join("\n"), new JavaScriptMode());
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["// abc", "//cde"].join("\n"), new JavaScriptMode());
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(0, 1);
editor.getSelection().selectDown();
@ -205,13 +205,13 @@ var Test = {
editor.toggleCommentLines();
assert.equal([" abc", "cde"].join("\n"), doc.toString());
assert.equal([" abc", "cde"].join("\n"), session.toString());
assert.range(editor.getSelectionRange(), 0, 0, 1, 1);
},
"test: toggle comment lines twice should return the original text" : function() {
var doc = new Document([" abc", "cde", "fg"], new JavaScriptMode());
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession([" abc", "cde", "fg"], new JavaScriptMode());
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(0, 0);
editor.getSelection().selectDown();
@ -220,14 +220,14 @@ var Test = {
editor.toggleCommentLines();
editor.toggleCommentLines();
assert.equal([" abc", "cde", "fg"].join("\n"), doc.toString());
assert.equal([" abc", "cde", "fg"].join("\n"), session.toString());
},
"test: comment lines - if the selection end is at the line start it should stay there": function() {
//select down
var doc = new Document(["abc", "cde"].join("\n"), new JavaScriptMode());
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["abc", "cde"].join("\n"), new JavaScriptMode());
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(0, 0);
editor.getSelection().selectDown();
@ -236,8 +236,8 @@ var Test = {
assert.range(editor.getSelectionRange(), 0, 2, 1, 0);
// select up
var doc = new Document(["abc", "cde"].join("\n"), new JavaScriptMode());
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["abc", "cde"].join("\n"), new JavaScriptMode());
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 0);
editor.getSelection().selectUp();
@ -247,47 +247,47 @@ var Test = {
},
"test: move lines down should select moved lines" : function() {
var doc = new Document(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(0, 1);
editor.getSelection().selectDown();
editor.moveLinesDown();
assert.equal(["33", "11", "22", "44"].join("\n"), doc.toString());
assert.equal(["33", "11", "22", "44"].join("\n"), session.toString());
assert.position(editor.getCursorPosition(), 1, 0);
assert.position(editor.getSelection().getSelectionAnchor(), 3, 0);
assert.position(editor.getSelection().getSelectionLead(), 1, 0);
editor.moveLinesDown();
assert.equal(["33", "44", "11", "22"].join("\n"), doc.toString());
assert.equal(["33", "44", "11", "22"].join("\n"), session.toString());
assert.position(editor.getCursorPosition(), 2, 0);
assert.position(editor.getSelection().getSelectionAnchor(), 3, 2);
assert.position(editor.getSelection().getSelectionLead(), 2, 0);
// moving again should have no effect
editor.moveLinesDown();
assert.equal(["33", "44", "11", "22"].join("\n"), doc.toString());
assert.equal(["33", "44", "11", "22"].join("\n"), session.toString());
assert.position(editor.getCursorPosition(), 2, 0);
assert.position(editor.getSelection().getSelectionAnchor(), 3, 2);
assert.position(editor.getSelection().getSelectionLead(), 2, 0);
},
"test: move lines up should select moved lines" : function() {
var doc = new Document(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(2, 1);
editor.getSelection().selectDown();
editor.moveLinesUp();
assert.equal(doc.toString(), ["11", "33", "44", "22"].join("\n"));
assert.equal(session.toString(), ["11", "33", "44", "22"].join("\n"));
assert.position(editor.getCursorPosition(), 1, 0);
assert.position(editor.getSelection().getSelectionAnchor(), 3, 0);
assert.position(editor.getSelection().getSelectionLead(), 1, 0);
editor.moveLinesUp();
assert.equal(doc.toString(), ["33", "44", "11", "22"].join("\n"));
assert.equal(session.toString(), ["33", "44", "11", "22"].join("\n"));
assert.position(editor.getCursorPosition(), 0, 0);
assert.position(editor.getSelection().getSelectionAnchor(), 2, 0);
assert.position(editor.getSelection().getSelectionLead(), 0, 0);
@ -295,32 +295,32 @@ var Test = {
"test: move line without active selection should move cursor to start of the moved line" : function()
{
var doc = new Document(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 1);
editor.clearSelection();
editor.moveLinesDown();
assert.equal(["11", "33", "22", "44"].join("\n"), doc.toString());
assert.equal(["11", "33", "22", "44"].join("\n"), session.toString());
assert.position(editor.getCursorPosition(), 2, 0);
editor.clearSelection();
editor.moveLinesUp();
assert.equal(["11", "22", "33", "44"].join("\n"), doc.toString());
assert.equal(["11", "22", "33", "44"].join("\n"), session.toString());
assert.position(editor.getCursorPosition(), 1, 0);
},
"test: copy lines down should select lines and place cursor at the selection start" : function() {
var doc = new Document(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 1);
editor.getSelection().selectDown();
editor.copyLinesDown();
assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString());
assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), session.toString());
assert.position(editor.getCursorPosition(), 3, 0);
assert.position(editor.getSelection().getSelectionAnchor(), 5, 0);
@ -328,14 +328,14 @@ var Test = {
},
"test: copy lines up should select lines and place cursor at the selection start" : function() {
var doc = new Document(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession(["11", "22", "33", "44"].join("\n"));
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 1);
editor.getSelection().selectDown();
editor.copyLinesUp();
assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString());
assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), session.toString());
assert.position(editor.getCursorPosition(), 1, 0);
assert.position(editor.getSelection().getSelectionAnchor(), 3, 0);
@ -343,100 +343,98 @@ var Test = {
},
"test: input a tab with soft tab should convert it to spaces" : function() {
var doc = new Document("");
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession("");
var editor = new Editor(new MockRenderer(), session);
doc.setTabSize(2);
doc.setUseSoftTabs(true);
session.setTabSize(2);
session.setUseSoftTabs(true);
editor.onTextInput("\t");
assert.equal(doc.toString(), " ");
assert.equal(session.toString(), " ");
doc.setTabSize(5);
session.setTabSize(5);
editor.onTextInput("\t");
assert.equal(doc.toString(), " ");
assert.equal(session.toString(), " ");
},
"test: input tab without soft tabs should keep the tab character" : function() {
var doc = new Document("");
var editor = new Editor(new MockRenderer(), doc);
var session = new EditSession("");
var editor = new Editor(new MockRenderer(), session);
doc.setUseSoftTabs(false);
session.setUseSoftTabs(false);
editor.onTextInput("\t");
assert.equal(doc.toString(), "\t");
assert.equal(session.toString(), "\t");
},
"test: undo/redo for delete line" : function() {
var doc = new Document(["111", "222", "333"]);
var session = new EditSession(["111", "222", "333"]);
var undoManager = new UndoManager();
doc.setUndoManager(undoManager);
session.setUndoManager(undoManager);
var initialText = doc.toString();
var editor = new Editor(new MockRenderer(), doc);
var initialText = session.toString();
var editor = new Editor(new MockRenderer(), session);
editor.removeLines();
var step1 = doc.toString();
var step1 = session.toString();
assert.equal(step1, "222\n333");
doc.$informUndoManager.call();
session.$informUndoManager.call();
editor.removeLines();
var step2 = doc.toString();
var step2 = session.toString();
assert.equal(step2, "333");
doc.$informUndoManager.call();
session.$informUndoManager.call();
editor.removeLines();
var step3 = doc.toString();
var step3 = session.toString();
assert.equal(step3, "");
doc.$informUndoManager.call();
session.$informUndoManager.call();
undoManager.undo();
doc.$informUndoManager.call();
assert.equal(doc.toString(), step2);
session.$informUndoManager.call();
assert.equal(session.toString(), step2);
undoManager.undo();
doc.$informUndoManager.call();
assert.equal(doc.toString(), step1);
session.$informUndoManager.call();
assert.equal(session.toString(), step1);
undoManager.undo();
doc.$informUndoManager.call();
assert.equal(doc.toString(), initialText);
session.$informUndoManager.call();
assert.equal(session.toString(), initialText);
undoManager.undo();
doc.$informUndoManager.call();
assert.equal(doc.toString(), initialText);
session.$informUndoManager.call();
assert.equal(session.toString(), initialText);
},
"test: remove left should remove character left of the cursor" : function() {
var doc = new Document(["123", "456"]);
var session = new EditSession(["123", "456"]);
var editor = new Editor(new MockRenderer(), doc);
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 1);
editor.removeLeft();
assert.equal(doc.toString(), "123\n56");
assert.equal(session.toString(), "123\n56");
},
"test: remove left should remove line break if cursor is at line start" : function() {
var doc = new Document(["123", "456"]);
var session = new EditSession(["123", "456"]);
var editor = new Editor(new MockRenderer(), doc);
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 0);
editor.removeLeft();
assert.equal(doc.toString(), "123456");
assert.equal(session.toString(), "123456");
},
"test: remove left should remove tabsize spaces if cursor is on a tab stop and preceeded by spaces" : function() {
var doc = new Document(["123", " 456"]);
doc.setUseSoftTabs(true);
doc.setTabSize(4);
var session = new EditSession(["123", " 456"]);
session.setUseSoftTabs(true);
session.setTabSize(4);
var editor = new Editor(new MockRenderer(), doc);
var editor = new Editor(new MockRenderer(), session);
editor.moveCursorTo(1, 8);
editor.removeLeft();
assert.equal(doc.toString(), "123\n 456");
assert.equal(session.toString(), "123\n 456");
}
};