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) {
|
||||
if (!notPasted)
|
||||
this._emit("paste", text);
|
||||
|
||||
// In case the text was not pasted and we got only one character, then
|
||||
this.onTextInput = function(text) {
|
||||
// In case we got only one character, then
|
||||
// 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
|
||||
// some checks in the code for `keyCode == 0` meaning the text comes
|
||||
// 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.keyBinding.onCommandKey(e, hashId, keyCode);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -46,13 +46,13 @@ var Buffer = require("ace/model/buffer").Buffer;
|
|||
var Editor = require("ace/editor").Editor;
|
||||
var JavaScriptMode = require("ace/mode/javascript").Mode;
|
||||
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");
|
||||
|
||||
module.exports = {
|
||||
"test: delete line from the middle" : function() {
|
||||
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.removeLines();
|
||||
|
|
@ -78,7 +78,7 @@ module.exports = {
|
|||
|
||||
"test: delete multiple selected lines" : function() {
|
||||
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.getSelection().selectDown();
|
||||
|
|
@ -90,7 +90,7 @@ module.exports = {
|
|||
|
||||
"test: delete first line" : function() {
|
||||
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();
|
||||
|
||||
|
|
@ -100,7 +100,7 @@ module.exports = {
|
|||
|
||||
"test: delete last should also delete the new line of the previous line" : function() {
|
||||
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);
|
||||
|
||||
|
|
@ -115,7 +115,7 @@ module.exports = {
|
|||
|
||||
"test: indent block" : function() {
|
||||
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.getSelection().selectDown();
|
||||
|
|
@ -133,7 +133,7 @@ module.exports = {
|
|||
|
||||
"test: indent selected lines" : function() {
|
||||
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.getSelection().selectDown();
|
||||
|
|
@ -144,7 +144,7 @@ module.exports = {
|
|||
|
||||
"test: no auto indent if cursor is before the {" : function() {
|
||||
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.onTextInput("\n");
|
||||
|
|
@ -153,7 +153,7 @@ module.exports = {
|
|||
|
||||
"test: outdent block" : function() {
|
||||
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.getSelection().selectDown();
|
||||
|
|
@ -178,7 +178,7 @@ module.exports = {
|
|||
|
||||
"test: outent without a selection should update cursor" : function() {
|
||||
var session = new Buffer(" 12");
|
||||
var editor = new Editor(new MockRenderer(), session);
|
||||
var editor = new Editor(new WindowViewMock(), session);
|
||||
|
||||
editor.moveCursorTo(0, 3);
|
||||
editor.blockOutdent(" ");
|
||||
|
|
@ -189,7 +189,7 @@ module.exports = {
|
|||
|
||||
"test: comment lines should perserve selection" : function() {
|
||||
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.getSelection().selectDown();
|
||||
|
|
@ -204,7 +204,7 @@ module.exports = {
|
|||
|
||||
"test: uncomment lines should perserve selection" : function() {
|
||||
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.getSelection().selectDown();
|
||||
|
|
@ -219,7 +219,7 @@ module.exports = {
|
|||
|
||||
"test: toggle comment lines twice should return the original text" : function() {
|
||||
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.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() {
|
||||
//select down
|
||||
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.getSelection().selectDown();
|
||||
|
|
@ -245,7 +245,7 @@ module.exports = {
|
|||
|
||||
// select up
|
||||
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.getSelection().selectUp();
|
||||
|
|
@ -256,7 +256,7 @@ module.exports = {
|
|||
|
||||
"test: move lines down should select moved lines" : function() {
|
||||
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.getSelection().selectDown();
|
||||
|
|
@ -283,7 +283,7 @@ module.exports = {
|
|||
|
||||
"test: move lines up should select moved lines" : function() {
|
||||
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.getSelection().selectDown();
|
||||
|
|
@ -304,7 +304,7 @@ module.exports = {
|
|||
"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 editor = new Editor(new MockRenderer(), session);
|
||||
var editor = new Editor(new WindowViewMock(), session);
|
||||
|
||||
editor.moveCursorTo(1, 1);
|
||||
editor.clearSelection();
|
||||
|
|
@ -322,7 +322,7 @@ module.exports = {
|
|||
|
||||
"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 editor = new Editor(new MockRenderer(), session);
|
||||
var editor = new Editor(new WindowViewMock(), session);
|
||||
|
||||
editor.moveCursorTo(1, 1);
|
||||
editor.getSelection().selectDown();
|
||||
|
|
@ -337,7 +337,7 @@ module.exports = {
|
|||
|
||||
"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 editor = new Editor(new MockRenderer(), session);
|
||||
var editor = new Editor(new WindowViewMock(), session);
|
||||
|
||||
editor.moveCursorTo(1, 1);
|
||||
editor.getSelection().selectDown();
|
||||
|
|
@ -352,7 +352,7 @@ module.exports = {
|
|||
|
||||
"test: input a tab with soft tab should convert it to spaces" : function() {
|
||||
var session = new Buffer("");
|
||||
var editor = new Editor(new MockRenderer(), session);
|
||||
var editor = new Editor(new WindowViewMock(), session);
|
||||
|
||||
session.setTabSize(2);
|
||||
session.setUseSoftTabs(true);
|
||||
|
|
@ -367,7 +367,7 @@ module.exports = {
|
|||
|
||||
"test: input tab without soft tabs should keep the tab character" : function() {
|
||||
var session = new Buffer("");
|
||||
var editor = new Editor(new MockRenderer(), session);
|
||||
var editor = new Editor(new WindowViewMock(), session);
|
||||
|
||||
session.setUseSoftTabs(false);
|
||||
|
||||
|
|
@ -381,7 +381,7 @@ module.exports = {
|
|||
session.setUndoManager(undoManager);
|
||||
|
||||
var initialText = session.toString();
|
||||
var editor = new Editor(new MockRenderer(), session);
|
||||
var editor = new Editor(new WindowViewMock(), session);
|
||||
|
||||
editor.removeLines();
|
||||
var step1 = session.toString();
|
||||
|
|
@ -418,7 +418,7 @@ module.exports = {
|
|||
"test: remove left should remove character left of the cursor" : function() {
|
||||
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.removeLeft();
|
||||
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() {
|
||||
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.removeLeft();
|
||||
assert.equal(session.toString(), "123456");
|
||||
|
|
@ -438,7 +438,7 @@ module.exports = {
|
|||
session.setUseSoftTabs(true);
|
||||
session.setTabSize(4);
|
||||
|
||||
var editor = new Editor(new MockRenderer(), session);
|
||||
var editor = new Editor(new WindowViewMock(), session);
|
||||
editor.moveCursorTo(1, 8);
|
||||
editor.removeLeft();
|
||||
assert.equal(session.toString(), "123\n 456");
|
||||
|
|
@ -447,7 +447,7 @@ module.exports = {
|
|||
"test: transpose at line start should be a noop": function() {
|
||||
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.transposeLetters();
|
||||
|
||||
|
|
@ -457,7 +457,7 @@ module.exports = {
|
|||
"test: transpose in line should swap the charaters before and after the cursor": function() {
|
||||
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.transposeLetters();
|
||||
|
||||
|
|
@ -467,7 +467,7 @@ module.exports = {
|
|||
"test: transpose at line end should swap the last two characters": function() {
|
||||
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.transposeLetters();
|
||||
|
||||
|
|
@ -477,7 +477,7 @@ module.exports = {
|
|||
"test: transpose with non empty selection should be a noop": function() {
|
||||
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.getSelection().selectRight();
|
||||
editor.transposeLetters();
|
||||
|
|
@ -488,7 +488,7 @@ module.exports = {
|
|||
"test: transpose should move the cursor behind the last swapped character": function() {
|
||||
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.transposeLetters();
|
||||
assert.position(editor.getCursorPosition(), 1, 3);
|
||||
|
|
@ -497,7 +497,7 @@ module.exports = {
|
|||
"test: remove to line end": function() {
|
||||
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.removeToLineEnd();
|
||||
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() {
|
||||
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.removeToLineEnd();
|
||||
assert.position(editor.getCursorPosition(), 1, 4);
|
||||
|
|
|
|||
|
|
@ -67,13 +67,14 @@ var TextInput = function(parentNode, host) {
|
|||
if (!copied) {
|
||||
var value = valueToSend || text.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);
|
||||
if (value)
|
||||
host.onTextInput(value, !pasted);
|
||||
}
|
||||
else {
|
||||
host.onTextInput(value, !pasted);
|
||||
|
||||
if (value) {
|
||||
if (pasted)
|
||||
host.onPaste(value);
|
||||
else
|
||||
host.onTextInput(value);
|
||||
}
|
||||
|
||||
// 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 Editor = require("ace/editor").Editor;
|
||||
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 assert = require("ace/test/assertions");
|
||||
|
||||
|
|
@ -381,7 +381,7 @@ module.exports = {
|
|||
|
||||
"test issue 83": function() {
|
||||
var session = new Buffer("");
|
||||
var editor = new Editor(new MockRenderer(), session);
|
||||
var editor = new Editor(new WindowViewMock(), session);
|
||||
var document = session.getDocument();
|
||||
|
||||
session.setUseWrapMode(true);
|
||||
|
|
@ -393,7 +393,7 @@ module.exports = {
|
|||
|
||||
"test wrapMode init has to create wrapData array": function() {
|
||||
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();
|
||||
|
||||
session.setUseWrapMode(true);
|
||||
|
|
|
|||
|
|
@ -257,6 +257,10 @@ var Window = exports.Window = function(theme, search) {
|
|||
|
||||
// SELECTION HANDLING
|
||||
|
||||
this.getSelection = function() {
|
||||
return this.selection;
|
||||
};
|
||||
|
||||
this.centerSelection = function() {
|
||||
var range = this.getSelectionRange();
|
||||
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.getBuffer = function() {
|
||||
return this.buffer;
|
||||
};
|
||||
|
||||
this.setTheme = function(theme) {
|
||||
var _self = this;
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
if (typeof process !== "undefined") {
|
||||
require("../support/paths");
|
||||
require("../../support/paths");
|
||||
}
|
||||
|
||||
define(function(require, exports, module) {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
define(function(require, exports, module) {
|
||||
|
||||
require("ace/lib/fixoldbrowsers");
|
||||
var AsyncTest = require("asyncjs").test;
|
||||
var AsyncTest = require("asyncjs/test");
|
||||
var async = require("asyncjs");
|
||||
var dom = require("ace/lib/dom");
|
||||
|
||||
|
|
@ -11,15 +11,8 @@ var log = document.getElementById("log")
|
|||
|
||||
var tests = [
|
||||
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/layer/text_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_tokenizer_test"),
|
||||
require("ace/mode/css_worker"),
|
||||
|
|
@ -32,10 +25,16 @@ var tests = [
|
|||
require("ace/mode/text_test"),
|
||||
require("ace/mode/xml_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/search_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)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
<script type="text/javascript">
|
||||
var require = {
|
||||
paths: {
|
||||
ace: "../"
|
||||
ace: ".."
|
||||
},
|
||||
packages : [{
|
||||
name: "asyncjs",
|
||||
|
|
|
|||
|
|
@ -40,8 +40,10 @@ define(function(require, exports, module) {
|
|||
|
||||
var Window = require("ace/model/window").Window;
|
||||
|
||||
exports.MockRenderer = exports.WindowViewMock = WindowViewMock = function() {
|
||||
this.container = {};
|
||||
exports.WindowViewMock = WindowViewMock = function() {
|
||||
this.container = {
|
||||
appendChild: function() {}
|
||||
};
|
||||
this.isWindowViewMock = true;
|
||||
this.model = new Window({});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -66,8 +66,8 @@ module.exports = {
|
|||
document.body.appendChild(el);
|
||||
|
||||
var renderer = new WindowView(new Window(), el);
|
||||
renderer.setPadding(0);
|
||||
renderer.setSession(new Buffer("1234"));
|
||||
renderer.model.setPadding(0);
|
||||
renderer.model.setBuffer(new Buffer("1234"));
|
||||
|
||||
assert.position(renderer.screenToTextCoordinates(0, 0), 0, 0);
|
||||
assert.position(renderer.screenToTextCoordinates(4, 0), 0, 0);
|
||||
|
|
|
|||
|
|
@ -37,123 +37,128 @@
|
|||
|
||||
if (typeof process !== "undefined") {
|
||||
require("../support/paths");
|
||||
require("ace/test/mockdom");
|
||||
}
|
||||
|
||||
define(function(require, exports, module) {
|
||||
|
||||
var Buffer = require("ace/model/buffer").Buffer;
|
||||
var Editor = require("ace/editor").Editor;
|
||||
var Text = require("ace/mode/text").Mode;
|
||||
var TextMode = require("ace/mode/text").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");
|
||||
|
||||
module.exports = {
|
||||
|
||||
name: "window controller",
|
||||
|
||||
setUp : function(next) {
|
||||
this.session1 = new Buffer(["abc", "def"]);
|
||||
this.session2 = new Buffer(["ghi", "jkl"]);
|
||||
this.editor = new Editor(new MockRenderer());
|
||||
this.buffer1 = new Buffer(["abc", "def"]);
|
||||
this.buffer2 = new Buffer(["ghi", "jkl"]);
|
||||
|
||||
this.win = new Window({});
|
||||
this.winController = new WindowController(this.win, new WindowViewMock());
|
||||
|
||||
next();
|
||||
},
|
||||
|
||||
"test: change document" : function() {
|
||||
this.editor.setSession(this.session1);
|
||||
assert.equal(this.editor.getSession(), this.session1);
|
||||
this.win.setBuffer(this.buffer1);
|
||||
assert.equal(this.win.getBuffer(), this.buffer1);
|
||||
|
||||
this.editor.setSession(this.session2);
|
||||
assert.equal(this.editor.getSession(), this.session2);
|
||||
this.win.setBuffer(this.buffer2);
|
||||
assert.equal(this.win.getBuffer(), this.buffer2);
|
||||
},
|
||||
|
||||
"test: only changes to the new document should have effect" : function() {
|
||||
var called = false;
|
||||
this.editor.onDocumentChange = function() {
|
||||
this.winController.onDocumentChange = function() {
|
||||
called = true;
|
||||
};
|
||||
|
||||
this.editor.setSession(this.session1);
|
||||
this.editor.setSession(this.session2);
|
||||
this.win.setBuffer(this.buffer1);
|
||||
this.win.setBuffer(this.buffer2);
|
||||
|
||||
this.session1.duplicateLines(0, 0);
|
||||
this.buffer1.duplicateLines(0, 0);
|
||||
assert.notOk(called);
|
||||
|
||||
this.session2.duplicateLines(0, 0);
|
||||
this.buffer2.duplicateLines(0, 0);
|
||||
assert.ok(called);
|
||||
},
|
||||
|
||||
"test: should use cursor of new document" : function() {
|
||||
this.session1.getSelection().moveCursorTo(0, 1);
|
||||
this.session2.getSelection().moveCursorTo(1, 0);
|
||||
this.buffer1.getSelection().moveCursorTo(0, 1);
|
||||
this.buffer2.getSelection().moveCursorTo(1, 0);
|
||||
|
||||
this.editor.setSession(this.session1);
|
||||
assert.position(this.editor.getCursorPosition(), 0, 1);
|
||||
this.win.setBuffer(this.buffer1);
|
||||
assert.position(this.win.getCursorPosition(), 0, 1);
|
||||
|
||||
this.editor.setSession(this.session2);
|
||||
assert.position(this.editor.getCursorPosition(), 1, 0);
|
||||
this.win.setBuffer(this.buffer2);
|
||||
assert.position(this.win.getCursorPosition(), 1, 0);
|
||||
},
|
||||
|
||||
"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;
|
||||
};
|
||||
|
||||
this.editor.setSession(this.session1);
|
||||
this.editor.setSession(this.session2);
|
||||
assert.position(this.editor.getCursorPosition(), 0, 0);
|
||||
this.win.setBuffer(this.buffer1);
|
||||
this.win.setBuffer(this.buffer2);
|
||||
assert.position(this.win.getCursorPosition(), 0, 0);
|
||||
|
||||
var called = false;
|
||||
this.session1.getSelection().moveCursorTo(0, 1);
|
||||
assert.position(this.editor.getCursorPosition(), 0, 0);
|
||||
this.buffer1.getSelection().moveCursorTo(0, 1);
|
||||
assert.position(this.win.getCursorPosition(), 0, 0);
|
||||
assert.notOk(called);
|
||||
|
||||
this.session2.getSelection().moveCursorTo(1, 1);
|
||||
assert.position(this.editor.getCursorPosition(), 1, 1);
|
||||
this.buffer2.getSelection().moveCursorTo(1, 1);
|
||||
assert.position(this.win.getCursorPosition(), 1, 1);
|
||||
assert.ok(called);
|
||||
},
|
||||
|
||||
"test: should use selection of new document" : function() {
|
||||
this.session1.getSelection().selectTo(0, 1);
|
||||
this.session2.getSelection().selectTo(1, 0);
|
||||
this.buffer1.getSelection().selectTo(0, 1);
|
||||
this.buffer2.getSelection().selectTo(1, 0);
|
||||
|
||||
this.editor.setSession(this.session1);
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 0, 1);
|
||||
this.win.setBuffer(this.buffer1);
|
||||
assert.position(this.win.getSelection().getSelectionLead(), 0, 1);
|
||||
|
||||
this.editor.setSession(this.session2);
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 1, 0);
|
||||
this.win.setBuffer(this.buffer2);
|
||||
assert.position(this.win.getSelection().getSelectionLead(), 1, 0);
|
||||
},
|
||||
|
||||
"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;
|
||||
};
|
||||
|
||||
this.editor.setSession(this.session1);
|
||||
this.editor.setSession(this.session2);
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 0, 0);
|
||||
this.win.setBuffer(this.buffer1);
|
||||
this.win.setBuffer(this.buffer2);
|
||||
assert.position(this.win.getSelection().getSelectionLead(), 0, 0);
|
||||
|
||||
var called = false;
|
||||
this.session1.getSelection().selectTo(0, 1);
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 0, 0);
|
||||
this.buffer1.getSelection().selectTo(0, 1);
|
||||
assert.position(this.win.getSelection().getSelectionLead(), 0, 0);
|
||||
assert.notOk(called);
|
||||
|
||||
this.session2.getSelection().selectTo(1, 1);
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 1, 1);
|
||||
this.buffer2.getSelection().selectTo(1, 1);
|
||||
assert.position(this.win.getSelection().getSelectionLead(), 1, 1);
|
||||
assert.ok(called);
|
||||
},
|
||||
|
||||
"test: should use mode of new document" : function() {
|
||||
this.editor.onChangeMode = function() {
|
||||
this.winController.view.updateText = function() {
|
||||
called = true;
|
||||
};
|
||||
this.editor.setSession(this.session1);
|
||||
this.editor.setSession(this.session2);
|
||||
this.win.setBuffer(this.buffer1);
|
||||
this.win.setBuffer(this.buffer2);
|
||||
|
||||
var called = false;
|
||||
this.session1.setMode(new Text());
|
||||
this.buffer1.setMode(new TextMode());
|
||||
assert.notOk(called);
|
||||
|
||||
this.session2.setMode(new JavaScriptMode());
|
||||
this.buffer2.setMode(new JavaScriptMode());
|
||||
assert.ok(called);
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue