fix more unit tests
This commit is contained in:
parent
968db75cd8
commit
85ed66edfe
12 changed files with 129 additions and 112 deletions
|
|
@ -314,13 +314,10 @@ var Editor = function(windowView, buffer) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.onTextInput = function(text, notPasted) {
|
this.onTextInput = function(text) {
|
||||||
if (!notPasted)
|
// In case we got only one character, then
|
||||||
this._emit("paste", text);
|
|
||||||
|
|
||||||
// In case the text was not pasted and we got only one character, then
|
|
||||||
// handel it as a command key stroke.
|
// handel it as a command key stroke.
|
||||||
if (notPasted && text.length == 1) {
|
if (text.length == 1) {
|
||||||
// Note: The `null` as `keyCode` is important here, as there are
|
// Note: The `null` as `keyCode` is important here, as there are
|
||||||
// some checks in the code for `keyCode == 0` meaning the text comes
|
// some checks in the code for `keyCode == 0` meaning the text comes
|
||||||
// from the keyBinding.onTextInput code path.
|
// from the keyBinding.onTextInput code path.
|
||||||
|
|
@ -340,6 +337,11 @@ var Editor = function(windowView, buffer) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.onPaste = function(text) {
|
||||||
|
this._emit("paste", text);
|
||||||
|
this.keyBinding.onTextInput(text);
|
||||||
|
};
|
||||||
|
|
||||||
this.onCommandKey = function(e, hashId, keyCode) {
|
this.onCommandKey = function(e, hashId, keyCode) {
|
||||||
this.keyBinding.onCommandKey(e, hashId, keyCode);
|
this.keyBinding.onCommandKey(e, hashId, keyCode);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -46,13 +46,13 @@ var Buffer = require("ace/model/buffer").Buffer;
|
||||||
var Editor = require("ace/editor").Editor;
|
var Editor = require("ace/editor").Editor;
|
||||||
var JavaScriptMode = require("ace/mode/javascript").Mode;
|
var JavaScriptMode = require("ace/mode/javascript").Mode;
|
||||||
var UndoManager = require("ace/undomanager").UndoManager;
|
var UndoManager = require("ace/undomanager").UndoManager;
|
||||||
var MockRenderer = require("ace/view/window_view_mock").MockRenderer;
|
var WindowViewMock = require("ace/view/window_view_mock").WindowViewMock;
|
||||||
var assert = require("ace/test/assertions");
|
var assert = require("ace/test/assertions");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
"test: delete line from the middle" : function() {
|
"test: delete line from the middle" : function() {
|
||||||
var session = new Buffer(["a", "b", "c", "d"].join("\n"));
|
var session = new Buffer(["a", "b", "c", "d"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(1, 1);
|
editor.moveCursorTo(1, 1);
|
||||||
editor.removeLines();
|
editor.removeLines();
|
||||||
|
|
@ -78,7 +78,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: delete multiple selected lines" : function() {
|
"test: delete multiple selected lines" : function() {
|
||||||
var session = new Buffer(["a", "b", "c", "d"].join("\n"));
|
var session = new Buffer(["a", "b", "c", "d"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(1, 1);
|
editor.moveCursorTo(1, 1);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -90,7 +90,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: delete first line" : function() {
|
"test: delete first line" : function() {
|
||||||
var session = new Buffer(["a", "b", "c"].join("\n"));
|
var session = new Buffer(["a", "b", "c"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.removeLines();
|
editor.removeLines();
|
||||||
|
|
||||||
|
|
@ -100,7 +100,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: delete last should also delete the new line of the previous line" : function() {
|
"test: delete last should also delete the new line of the previous line" : function() {
|
||||||
var session = new Buffer(["a", "b", "c", ""].join("\n"));
|
var session = new Buffer(["a", "b", "c", ""].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(3, 0);
|
editor.moveCursorTo(3, 0);
|
||||||
|
|
||||||
|
|
@ -115,7 +115,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: indent block" : function() {
|
"test: indent block" : function() {
|
||||||
var session = new Buffer(["a12345", "b12345", "c12345"].join("\n"));
|
var session = new Buffer(["a12345", "b12345", "c12345"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(1, 3);
|
editor.moveCursorTo(1, 3);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -133,7 +133,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: indent selected lines" : function() {
|
"test: indent selected lines" : function() {
|
||||||
var session = new Buffer(["a12345", "b12345", "c12345"].join("\n"));
|
var session = new Buffer(["a12345", "b12345", "c12345"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(1, 0);
|
editor.moveCursorTo(1, 0);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -144,7 +144,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: no auto indent if cursor is before the {" : function() {
|
"test: no auto indent if cursor is before the {" : function() {
|
||||||
var session = new Buffer("{", new JavaScriptMode());
|
var session = new Buffer("{", new JavaScriptMode());
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(0, 0);
|
editor.moveCursorTo(0, 0);
|
||||||
editor.onTextInput("\n");
|
editor.onTextInput("\n");
|
||||||
|
|
@ -153,7 +153,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: outdent block" : function() {
|
"test: outdent block" : function() {
|
||||||
var session = new Buffer([" a12345", " b12345", " c12345"].join("\n"));
|
var session = new Buffer([" a12345", " b12345", " c12345"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(0, 5);
|
editor.moveCursorTo(0, 5);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -178,7 +178,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: outent without a selection should update cursor" : function() {
|
"test: outent without a selection should update cursor" : function() {
|
||||||
var session = new Buffer(" 12");
|
var session = new Buffer(" 12");
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(0, 3);
|
editor.moveCursorTo(0, 3);
|
||||||
editor.blockOutdent(" ");
|
editor.blockOutdent(" ");
|
||||||
|
|
@ -189,7 +189,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: comment lines should perserve selection" : function() {
|
"test: comment lines should perserve selection" : function() {
|
||||||
var session = new Buffer([" abc", "cde"].join("\n"), new JavaScriptMode());
|
var session = new Buffer([" abc", "cde"].join("\n"), new JavaScriptMode());
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(0, 2);
|
editor.moveCursorTo(0, 2);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -204,7 +204,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: uncomment lines should perserve selection" : function() {
|
"test: uncomment lines should perserve selection" : function() {
|
||||||
var session = new Buffer(["// abc", "//cde"].join("\n"), new JavaScriptMode());
|
var session = new Buffer(["// abc", "//cde"].join("\n"), new JavaScriptMode());
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(0, 1);
|
editor.moveCursorTo(0, 1);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -219,7 +219,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: toggle comment lines twice should return the original text" : function() {
|
"test: toggle comment lines twice should return the original text" : function() {
|
||||||
var session = new Buffer([" abc", "cde", "fg"], new JavaScriptMode());
|
var session = new Buffer([" abc", "cde", "fg"], new JavaScriptMode());
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(0, 0);
|
editor.moveCursorTo(0, 0);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -235,7 +235,7 @@ module.exports = {
|
||||||
"test: comment lines - if the selection end is at the line start it should stay there": function() {
|
"test: comment lines - if the selection end is at the line start it should stay there": function() {
|
||||||
//select down
|
//select down
|
||||||
var session = new Buffer(["abc", "cde"].join("\n"), new JavaScriptMode());
|
var session = new Buffer(["abc", "cde"].join("\n"), new JavaScriptMode());
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(0, 0);
|
editor.moveCursorTo(0, 0);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -245,7 +245,7 @@ module.exports = {
|
||||||
|
|
||||||
// select up
|
// select up
|
||||||
var session = new Buffer(["abc", "cde"].join("\n"), new JavaScriptMode());
|
var session = new Buffer(["abc", "cde"].join("\n"), new JavaScriptMode());
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(1, 0);
|
editor.moveCursorTo(1, 0);
|
||||||
editor.getSelection().selectUp();
|
editor.getSelection().selectUp();
|
||||||
|
|
@ -256,7 +256,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: move lines down should select moved lines" : function() {
|
"test: move lines down should select moved lines" : function() {
|
||||||
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(0, 1);
|
editor.moveCursorTo(0, 1);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -283,7 +283,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: move lines up should select moved lines" : function() {
|
"test: move lines up should select moved lines" : function() {
|
||||||
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(2, 1);
|
editor.moveCursorTo(2, 1);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -304,7 +304,7 @@ module.exports = {
|
||||||
"test: move line without active selection should move cursor to start of the moved line" : function()
|
"test: move line without active selection should move cursor to start of the moved line" : function()
|
||||||
{
|
{
|
||||||
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(1, 1);
|
editor.moveCursorTo(1, 1);
|
||||||
editor.clearSelection();
|
editor.clearSelection();
|
||||||
|
|
@ -322,7 +322,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: copy lines down should select lines and place cursor at the selection start" : function() {
|
"test: copy lines down should select lines and place cursor at the selection start" : function() {
|
||||||
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(1, 1);
|
editor.moveCursorTo(1, 1);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -337,7 +337,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: copy lines up should select lines and place cursor at the selection start" : function() {
|
"test: copy lines up should select lines and place cursor at the selection start" : function() {
|
||||||
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
var session = new Buffer(["11", "22", "33", "44"].join("\n"));
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.moveCursorTo(1, 1);
|
editor.moveCursorTo(1, 1);
|
||||||
editor.getSelection().selectDown();
|
editor.getSelection().selectDown();
|
||||||
|
|
@ -352,7 +352,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: input a tab with soft tab should convert it to spaces" : function() {
|
"test: input a tab with soft tab should convert it to spaces" : function() {
|
||||||
var session = new Buffer("");
|
var session = new Buffer("");
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
session.setTabSize(2);
|
session.setTabSize(2);
|
||||||
session.setUseSoftTabs(true);
|
session.setUseSoftTabs(true);
|
||||||
|
|
@ -367,7 +367,7 @@ module.exports = {
|
||||||
|
|
||||||
"test: input tab without soft tabs should keep the tab character" : function() {
|
"test: input tab without soft tabs should keep the tab character" : function() {
|
||||||
var session = new Buffer("");
|
var session = new Buffer("");
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
session.setUseSoftTabs(false);
|
session.setUseSoftTabs(false);
|
||||||
|
|
||||||
|
|
@ -381,7 +381,7 @@ module.exports = {
|
||||||
session.setUndoManager(undoManager);
|
session.setUndoManager(undoManager);
|
||||||
|
|
||||||
var initialText = session.toString();
|
var initialText = session.toString();
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
|
|
||||||
editor.removeLines();
|
editor.removeLines();
|
||||||
var step1 = session.toString();
|
var step1 = session.toString();
|
||||||
|
|
@ -418,7 +418,7 @@ module.exports = {
|
||||||
"test: remove left should remove character left of the cursor" : function() {
|
"test: remove left should remove character left of the cursor" : function() {
|
||||||
var session = new Buffer(["123", "456"]);
|
var session = new Buffer(["123", "456"]);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 1);
|
editor.moveCursorTo(1, 1);
|
||||||
editor.removeLeft();
|
editor.removeLeft();
|
||||||
assert.equal(session.toString(), "123\n56");
|
assert.equal(session.toString(), "123\n56");
|
||||||
|
|
@ -427,7 +427,7 @@ module.exports = {
|
||||||
"test: remove left should remove line break if cursor is at line start" : function() {
|
"test: remove left should remove line break if cursor is at line start" : function() {
|
||||||
var session = new Buffer(["123", "456"]);
|
var session = new Buffer(["123", "456"]);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 0);
|
editor.moveCursorTo(1, 0);
|
||||||
editor.removeLeft();
|
editor.removeLeft();
|
||||||
assert.equal(session.toString(), "123456");
|
assert.equal(session.toString(), "123456");
|
||||||
|
|
@ -438,7 +438,7 @@ module.exports = {
|
||||||
session.setUseSoftTabs(true);
|
session.setUseSoftTabs(true);
|
||||||
session.setTabSize(4);
|
session.setTabSize(4);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 8);
|
editor.moveCursorTo(1, 8);
|
||||||
editor.removeLeft();
|
editor.removeLeft();
|
||||||
assert.equal(session.toString(), "123\n 456");
|
assert.equal(session.toString(), "123\n 456");
|
||||||
|
|
@ -447,7 +447,7 @@ module.exports = {
|
||||||
"test: transpose at line start should be a noop": function() {
|
"test: transpose at line start should be a noop": function() {
|
||||||
var session = new Buffer(["123", "4567", "89"]);
|
var session = new Buffer(["123", "4567", "89"]);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 0);
|
editor.moveCursorTo(1, 0);
|
||||||
editor.transposeLetters();
|
editor.transposeLetters();
|
||||||
|
|
||||||
|
|
@ -457,7 +457,7 @@ module.exports = {
|
||||||
"test: transpose in line should swap the charaters before and after the cursor": function() {
|
"test: transpose in line should swap the charaters before and after the cursor": function() {
|
||||||
var session = new Buffer(["123", "4567", "89"]);
|
var session = new Buffer(["123", "4567", "89"]);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 2);
|
editor.moveCursorTo(1, 2);
|
||||||
editor.transposeLetters();
|
editor.transposeLetters();
|
||||||
|
|
||||||
|
|
@ -467,7 +467,7 @@ module.exports = {
|
||||||
"test: transpose at line end should swap the last two characters": function() {
|
"test: transpose at line end should swap the last two characters": function() {
|
||||||
var session = new Buffer(["123", "4567", "89"]);
|
var session = new Buffer(["123", "4567", "89"]);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 4);
|
editor.moveCursorTo(1, 4);
|
||||||
editor.transposeLetters();
|
editor.transposeLetters();
|
||||||
|
|
||||||
|
|
@ -477,7 +477,7 @@ module.exports = {
|
||||||
"test: transpose with non empty selection should be a noop": function() {
|
"test: transpose with non empty selection should be a noop": function() {
|
||||||
var session = new Buffer(["123", "4567", "89"]);
|
var session = new Buffer(["123", "4567", "89"]);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 1);
|
editor.moveCursorTo(1, 1);
|
||||||
editor.getSelection().selectRight();
|
editor.getSelection().selectRight();
|
||||||
editor.transposeLetters();
|
editor.transposeLetters();
|
||||||
|
|
@ -488,7 +488,7 @@ module.exports = {
|
||||||
"test: transpose should move the cursor behind the last swapped character": function() {
|
"test: transpose should move the cursor behind the last swapped character": function() {
|
||||||
var session = new Buffer(["123", "4567", "89"]);
|
var session = new Buffer(["123", "4567", "89"]);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 2);
|
editor.moveCursorTo(1, 2);
|
||||||
editor.transposeLetters();
|
editor.transposeLetters();
|
||||||
assert.position(editor.getCursorPosition(), 1, 3);
|
assert.position(editor.getCursorPosition(), 1, 3);
|
||||||
|
|
@ -497,7 +497,7 @@ module.exports = {
|
||||||
"test: remove to line end": function() {
|
"test: remove to line end": function() {
|
||||||
var session = new Buffer(["123", "4567", "89"]);
|
var session = new Buffer(["123", "4567", "89"]);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 2);
|
editor.moveCursorTo(1, 2);
|
||||||
editor.removeToLineEnd();
|
editor.removeToLineEnd();
|
||||||
assert.equal(session.getValue(), ["123", "45", "89"].join("\n"));
|
assert.equal(session.getValue(), ["123", "45", "89"].join("\n"));
|
||||||
|
|
@ -506,7 +506,7 @@ module.exports = {
|
||||||
"test: remove to line end at line end should remove the new line": function() {
|
"test: remove to line end at line end should remove the new line": function() {
|
||||||
var session = new Buffer(["123", "4567", "89"]);
|
var session = new Buffer(["123", "4567", "89"]);
|
||||||
|
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
editor.moveCursorTo(1, 4);
|
editor.moveCursorTo(1, 4);
|
||||||
editor.removeToLineEnd();
|
editor.removeToLineEnd();
|
||||||
assert.position(editor.getCursorPosition(), 1, 4);
|
assert.position(editor.getCursorPosition(), 1, 4);
|
||||||
|
|
|
||||||
|
|
@ -67,13 +67,14 @@ var TextInput = function(parentNode, host) {
|
||||||
if (!copied) {
|
if (!copied) {
|
||||||
var value = valueToSend || text.value;
|
var value = valueToSend || text.value;
|
||||||
if (value) {
|
if (value) {
|
||||||
if (value.charCodeAt(value.length-1) == PLACEHOLDER.charCodeAt(0)) {
|
if (value.charCodeAt(value.length-1) == PLACEHOLDER.charCodeAt(0))
|
||||||
value = value.slice(0, -1);
|
value = value.slice(0, -1);
|
||||||
if (value)
|
|
||||||
host.onTextInput(value, !pasted);
|
if (value) {
|
||||||
}
|
if (pasted)
|
||||||
else {
|
host.onPaste(value);
|
||||||
host.onTextInput(value, !pasted);
|
else
|
||||||
|
host.onTextInput(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If editor is no longer focused we quit immediately, since
|
// If editor is no longer focused we quit immediately, since
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ var lang = require("ace/lib/lang");
|
||||||
var Buffer = require("ace/model/buffer").Buffer;
|
var Buffer = require("ace/model/buffer").Buffer;
|
||||||
var Editor = require("ace/editor").Editor;
|
var Editor = require("ace/editor").Editor;
|
||||||
var UndoManager = require("ace/undomanager").UndoManager;
|
var UndoManager = require("ace/undomanager").UndoManager;
|
||||||
var MockRenderer = require("ace/view/window_view_mock").MockRenderer;
|
var WindowViewMock = require("ace/view/window_view_mock").WindowViewMock;
|
||||||
var Range = require("ace/range").Range;
|
var Range = require("ace/range").Range;
|
||||||
var assert = require("ace/test/assertions");
|
var assert = require("ace/test/assertions");
|
||||||
|
|
||||||
|
|
@ -381,7 +381,7 @@ module.exports = {
|
||||||
|
|
||||||
"test issue 83": function() {
|
"test issue 83": function() {
|
||||||
var session = new Buffer("");
|
var session = new Buffer("");
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
var document = session.getDocument();
|
var document = session.getDocument();
|
||||||
|
|
||||||
session.setUseWrapMode(true);
|
session.setUseWrapMode(true);
|
||||||
|
|
@ -393,7 +393,7 @@ module.exports = {
|
||||||
|
|
||||||
"test wrapMode init has to create wrapData array": function() {
|
"test wrapMode init has to create wrapData array": function() {
|
||||||
var session = new Buffer("foo bar\nfoo bar");
|
var session = new Buffer("foo bar\nfoo bar");
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new WindowViewMock(), session);
|
||||||
var document = session.getDocument();
|
var document = session.getDocument();
|
||||||
|
|
||||||
session.setUseWrapMode(true);
|
session.setUseWrapMode(true);
|
||||||
|
|
|
||||||
|
|
@ -257,6 +257,10 @@ var Window = exports.Window = function(theme, search) {
|
||||||
|
|
||||||
// SELECTION HANDLING
|
// SELECTION HANDLING
|
||||||
|
|
||||||
|
this.getSelection = function() {
|
||||||
|
return this.selection;
|
||||||
|
};
|
||||||
|
|
||||||
this.centerSelection = function() {
|
this.centerSelection = function() {
|
||||||
var range = this.getSelectionRange();
|
var range = this.getSelectionRange();
|
||||||
var line = Math.floor(range.start.row + (range.end.row - range.start.row) / 2);
|
var line = Math.floor(range.start.row + (range.end.row - range.start.row) / 2);
|
||||||
|
|
@ -571,6 +575,10 @@ var Window = exports.Window = function(theme, search) {
|
||||||
this._emit("changeBuffer", {oldValue: oldValue, value: buffer});
|
this._emit("changeBuffer", {oldValue: oldValue, value: buffer});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.getBuffer = function() {
|
||||||
|
return this.buffer;
|
||||||
|
};
|
||||||
|
|
||||||
this.setTheme = function(theme) {
|
this.setTheme = function(theme) {
|
||||||
var _self = this;
|
var _self = this;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
if (typeof process !== "undefined") {
|
if (typeof process !== "undefined") {
|
||||||
require("../support/paths");
|
require("../../support/paths");
|
||||||
}
|
}
|
||||||
|
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
|
|
||||||
require("ace/lib/fixoldbrowsers");
|
require("ace/lib/fixoldbrowsers");
|
||||||
var AsyncTest = require("asyncjs").test;
|
var AsyncTest = require("asyncjs/test");
|
||||||
var async = require("asyncjs");
|
var async = require("asyncjs");
|
||||||
var dom = require("ace/lib/dom");
|
var dom = require("ace/lib/dom");
|
||||||
|
|
||||||
|
|
@ -11,15 +11,8 @@ var log = document.getElementById("log")
|
||||||
|
|
||||||
var tests = [
|
var tests = [
|
||||||
require("ace/anchor_test"),
|
require("ace/anchor_test"),
|
||||||
require("ace/edit_session_test"),
|
|
||||||
require("ace/editor_change_document_test"),
|
|
||||||
require("ace/editor_highlight_selected_word_test"),
|
|
||||||
require("ace/editor_navigation_test"),
|
|
||||||
require("ace/editor_text_edit_test"),
|
require("ace/editor_text_edit_test"),
|
||||||
require("ace/layer/text_test"),
|
|
||||||
require("ace/mode/coffee/parser_test"),
|
require("ace/mode/coffee/parser_test"),
|
||||||
require("ace/model/document_test"),
|
|
||||||
require("ace/view/window_view_test"),
|
|
||||||
require("ace/mode/css_test"),
|
require("ace/mode/css_test"),
|
||||||
require("ace/mode/css_tokenizer_test"),
|
require("ace/mode/css_tokenizer_test"),
|
||||||
require("ace/mode/css_worker"),
|
require("ace/mode/css_worker"),
|
||||||
|
|
@ -32,10 +25,16 @@ var tests = [
|
||||||
require("ace/mode/text_test"),
|
require("ace/mode/text_test"),
|
||||||
require("ace/mode/xml_test"),
|
require("ace/mode/xml_test"),
|
||||||
require("ace/mode/xml_tokenizer_test"),
|
require("ace/mode/xml_tokenizer_test"),
|
||||||
|
require("ace/model/buffer_test"),
|
||||||
|
require("ace/model/document_test"),
|
||||||
|
require("ace/model/editor_test"),
|
||||||
|
require("ace/model/window_navigation_test"),
|
||||||
|
require("ace/model/window_test"),
|
||||||
require("ace/range_test"),
|
require("ace/range_test"),
|
||||||
require("ace/search_test"),
|
require("ace/search_test"),
|
||||||
require("ace/selection_test"),
|
require("ace/selection_test"),
|
||||||
require("ace/test/event_emitter_test")
|
require("ace/test/event_emitter_test"),
|
||||||
|
require("ace/view/window_view_test")
|
||||||
]
|
]
|
||||||
|
|
||||||
async.list(tests)
|
async.list(tests)
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var require = {
|
var require = {
|
||||||
paths: {
|
paths: {
|
||||||
ace: "../"
|
ace: ".."
|
||||||
},
|
},
|
||||||
packages : [{
|
packages : [{
|
||||||
name: "asyncjs",
|
name: "asyncjs",
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,10 @@ define(function(require, exports, module) {
|
||||||
|
|
||||||
var Window = require("ace/model/window").Window;
|
var Window = require("ace/model/window").Window;
|
||||||
|
|
||||||
exports.MockRenderer = exports.WindowViewMock = WindowViewMock = function() {
|
exports.WindowViewMock = WindowViewMock = function() {
|
||||||
this.container = {};
|
this.container = {
|
||||||
|
appendChild: function() {}
|
||||||
|
};
|
||||||
this.isWindowViewMock = true;
|
this.isWindowViewMock = true;
|
||||||
this.model = new Window({});
|
this.model = new Window({});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -66,8 +66,8 @@ module.exports = {
|
||||||
document.body.appendChild(el);
|
document.body.appendChild(el);
|
||||||
|
|
||||||
var renderer = new WindowView(new Window(), el);
|
var renderer = new WindowView(new Window(), el);
|
||||||
renderer.setPadding(0);
|
renderer.model.setPadding(0);
|
||||||
renderer.setSession(new Buffer("1234"));
|
renderer.model.setBuffer(new Buffer("1234"));
|
||||||
|
|
||||||
assert.position(renderer.screenToTextCoordinates(0, 0), 0, 0);
|
assert.position(renderer.screenToTextCoordinates(0, 0), 0, 0);
|
||||||
assert.position(renderer.screenToTextCoordinates(4, 0), 0, 0);
|
assert.position(renderer.screenToTextCoordinates(4, 0), 0, 0);
|
||||||
|
|
|
||||||
|
|
@ -37,123 +37,128 @@
|
||||||
|
|
||||||
if (typeof process !== "undefined") {
|
if (typeof process !== "undefined") {
|
||||||
require("../support/paths");
|
require("../support/paths");
|
||||||
require("ace/test/mockdom");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
|
|
||||||
var Buffer = require("ace/model/buffer").Buffer;
|
var Buffer = require("ace/model/buffer").Buffer;
|
||||||
var Editor = require("ace/editor").Editor;
|
var TextMode = require("ace/mode/text").Mode;
|
||||||
var Text = require("ace/mode/text").Mode;
|
|
||||||
var JavaScriptMode = require("ace/mode/javascript").Mode;
|
var JavaScriptMode = require("ace/mode/javascript").Mode;
|
||||||
var MockRenderer = require("ace/view/window_view_mock").MockRenderer;
|
var WindowViewMock = require("ace/view/window_view_mock").WindowViewMock;
|
||||||
|
var Window = require("ace/model/window").Window;
|
||||||
|
var WindowController = require("ace/window_controller").WindowController;
|
||||||
var assert = require("ace/test/assertions");
|
var assert = require("ace/test/assertions");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
||||||
|
name: "window controller",
|
||||||
|
|
||||||
setUp : function(next) {
|
setUp : function(next) {
|
||||||
this.session1 = new Buffer(["abc", "def"]);
|
this.buffer1 = new Buffer(["abc", "def"]);
|
||||||
this.session2 = new Buffer(["ghi", "jkl"]);
|
this.buffer2 = new Buffer(["ghi", "jkl"]);
|
||||||
this.editor = new Editor(new MockRenderer());
|
|
||||||
|
this.win = new Window({});
|
||||||
|
this.winController = new WindowController(this.win, new WindowViewMock());
|
||||||
|
|
||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
|
|
||||||
"test: change document" : function() {
|
"test: change document" : function() {
|
||||||
this.editor.setSession(this.session1);
|
this.win.setBuffer(this.buffer1);
|
||||||
assert.equal(this.editor.getSession(), this.session1);
|
assert.equal(this.win.getBuffer(), this.buffer1);
|
||||||
|
|
||||||
this.editor.setSession(this.session2);
|
this.win.setBuffer(this.buffer2);
|
||||||
assert.equal(this.editor.getSession(), this.session2);
|
assert.equal(this.win.getBuffer(), this.buffer2);
|
||||||
},
|
},
|
||||||
|
|
||||||
"test: only changes to the new document should have effect" : function() {
|
"test: only changes to the new document should have effect" : function() {
|
||||||
var called = false;
|
var called = false;
|
||||||
this.editor.onDocumentChange = function() {
|
this.winController.onDocumentChange = function() {
|
||||||
called = true;
|
called = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.editor.setSession(this.session1);
|
this.win.setBuffer(this.buffer1);
|
||||||
this.editor.setSession(this.session2);
|
this.win.setBuffer(this.buffer2);
|
||||||
|
|
||||||
this.session1.duplicateLines(0, 0);
|
this.buffer1.duplicateLines(0, 0);
|
||||||
assert.notOk(called);
|
assert.notOk(called);
|
||||||
|
|
||||||
this.session2.duplicateLines(0, 0);
|
this.buffer2.duplicateLines(0, 0);
|
||||||
assert.ok(called);
|
assert.ok(called);
|
||||||
},
|
},
|
||||||
|
|
||||||
"test: should use cursor of new document" : function() {
|
"test: should use cursor of new document" : function() {
|
||||||
this.session1.getSelection().moveCursorTo(0, 1);
|
this.buffer1.getSelection().moveCursorTo(0, 1);
|
||||||
this.session2.getSelection().moveCursorTo(1, 0);
|
this.buffer2.getSelection().moveCursorTo(1, 0);
|
||||||
|
|
||||||
this.editor.setSession(this.session1);
|
this.win.setBuffer(this.buffer1);
|
||||||
assert.position(this.editor.getCursorPosition(), 0, 1);
|
assert.position(this.win.getCursorPosition(), 0, 1);
|
||||||
|
|
||||||
this.editor.setSession(this.session2);
|
this.win.setBuffer(this.buffer2);
|
||||||
assert.position(this.editor.getCursorPosition(), 1, 0);
|
assert.position(this.win.getCursorPosition(), 1, 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
"test: only changing the cursor of the new doc should not have an effect" : function() {
|
"test: only changing the cursor of the new doc should not have an effect" : function() {
|
||||||
this.editor.onCursorChange = function() {
|
this.winController.onChangeCursor = function() {
|
||||||
called = true;
|
called = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.editor.setSession(this.session1);
|
this.win.setBuffer(this.buffer1);
|
||||||
this.editor.setSession(this.session2);
|
this.win.setBuffer(this.buffer2);
|
||||||
assert.position(this.editor.getCursorPosition(), 0, 0);
|
assert.position(this.win.getCursorPosition(), 0, 0);
|
||||||
|
|
||||||
var called = false;
|
var called = false;
|
||||||
this.session1.getSelection().moveCursorTo(0, 1);
|
this.buffer1.getSelection().moveCursorTo(0, 1);
|
||||||
assert.position(this.editor.getCursorPosition(), 0, 0);
|
assert.position(this.win.getCursorPosition(), 0, 0);
|
||||||
assert.notOk(called);
|
assert.notOk(called);
|
||||||
|
|
||||||
this.session2.getSelection().moveCursorTo(1, 1);
|
this.buffer2.getSelection().moveCursorTo(1, 1);
|
||||||
assert.position(this.editor.getCursorPosition(), 1, 1);
|
assert.position(this.win.getCursorPosition(), 1, 1);
|
||||||
assert.ok(called);
|
assert.ok(called);
|
||||||
},
|
},
|
||||||
|
|
||||||
"test: should use selection of new document" : function() {
|
"test: should use selection of new document" : function() {
|
||||||
this.session1.getSelection().selectTo(0, 1);
|
this.buffer1.getSelection().selectTo(0, 1);
|
||||||
this.session2.getSelection().selectTo(1, 0);
|
this.buffer2.getSelection().selectTo(1, 0);
|
||||||
|
|
||||||
this.editor.setSession(this.session1);
|
this.win.setBuffer(this.buffer1);
|
||||||
assert.position(this.editor.getSelection().getSelectionLead(), 0, 1);
|
assert.position(this.win.getSelection().getSelectionLead(), 0, 1);
|
||||||
|
|
||||||
this.editor.setSession(this.session2);
|
this.win.setBuffer(this.buffer2);
|
||||||
assert.position(this.editor.getSelection().getSelectionLead(), 1, 0);
|
assert.position(this.win.getSelection().getSelectionLead(), 1, 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
"test: only changing the selection of the new doc should not have an effect" : function() {
|
"test: only changing the selection of the new doc should not have an effect" : function() {
|
||||||
this.editor.onSelectionChange = function() {
|
this.winController.onSelectionChange = function() {
|
||||||
called = true;
|
called = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.editor.setSession(this.session1);
|
this.win.setBuffer(this.buffer1);
|
||||||
this.editor.setSession(this.session2);
|
this.win.setBuffer(this.buffer2);
|
||||||
assert.position(this.editor.getSelection().getSelectionLead(), 0, 0);
|
assert.position(this.win.getSelection().getSelectionLead(), 0, 0);
|
||||||
|
|
||||||
var called = false;
|
var called = false;
|
||||||
this.session1.getSelection().selectTo(0, 1);
|
this.buffer1.getSelection().selectTo(0, 1);
|
||||||
assert.position(this.editor.getSelection().getSelectionLead(), 0, 0);
|
assert.position(this.win.getSelection().getSelectionLead(), 0, 0);
|
||||||
assert.notOk(called);
|
assert.notOk(called);
|
||||||
|
|
||||||
this.session2.getSelection().selectTo(1, 1);
|
this.buffer2.getSelection().selectTo(1, 1);
|
||||||
assert.position(this.editor.getSelection().getSelectionLead(), 1, 1);
|
assert.position(this.win.getSelection().getSelectionLead(), 1, 1);
|
||||||
assert.ok(called);
|
assert.ok(called);
|
||||||
},
|
},
|
||||||
|
|
||||||
"test: should use mode of new document" : function() {
|
"test: should use mode of new document" : function() {
|
||||||
this.editor.onChangeMode = function() {
|
this.winController.view.updateText = function() {
|
||||||
called = true;
|
called = true;
|
||||||
};
|
};
|
||||||
this.editor.setSession(this.session1);
|
this.win.setBuffer(this.buffer1);
|
||||||
this.editor.setSession(this.session2);
|
this.win.setBuffer(this.buffer2);
|
||||||
|
|
||||||
var called = false;
|
var called = false;
|
||||||
this.session1.setMode(new Text());
|
this.buffer1.setMode(new TextMode());
|
||||||
assert.notOk(called);
|
assert.notOk(called);
|
||||||
|
|
||||||
this.session2.setMode(new JavaScriptMode());
|
this.buffer2.setMode(new JavaScriptMode());
|
||||||
assert.ok(called);
|
assert.ok(called);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue