From 215cfbf4bf235844a2ca42f49c6bed9dd69c139f Mon Sep 17 00:00:00 2001 From: Eddy Bruel Date: Wed, 24 Nov 2010 13:27:38 +0100 Subject: [PATCH] Fixed a bug in single line tabbing that caused the tab length not being taken into account. Added DOM emulation to the unit tests so that they can be run from node. Extended the Mockrenderer for the unit tests. Made the majority of the unit tests work again (barring those for moveLinesUp, see below). Fixed a bug in moveLinesUp that caused an empty line to be inserted. However, this fix causes the editor to break (need to look at this). --- .gitmodules | 9 ++ lib/ace/document.js | 10 +- lib/ace/editor.js | 21 +-- lib/ace/mode/javascript.js | 9 +- lib/ace/test/assertions.js | 30 ++-- lib/ace/test/change_document_test.js | 81 ++++++----- lib/ace/test/document_test.js | 193 ++++++++++++++------------ lib/ace/test/event_emitter_test.js | 23 +-- lib/ace/test/mockrenderer.js | 11 +- lib/ace/test/navigation_test.js | 87 ++++++------ lib/ace/test/range_test.js | 105 +++++++------- lib/ace/test/search_test.js | 119 ++++++++-------- lib/ace/test/selection_test.js | 107 +++++++------- lib/ace/test/text_edit_test.js | 186 +++++++++++++------------ lib/ace/test/virtual_renderer_test.js | 35 ++--- support/async | 1 + support/jsdom | 1 + support/node-htmlparser | 1 + 18 files changed, 555 insertions(+), 474 deletions(-) create mode 160000 support/async create mode 160000 support/jsdom create mode 160000 support/node-htmlparser diff --git a/.gitmodules b/.gitmodules index 0498a164..346eb6aa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,12 @@ [submodule "support/node-o3-xml"] path = support/node-o3-xml url = git://github.com/ajaxorg/node-o3-xml.git +[submodule "support/async"] + path = support/async + url = git://github.com/fjakobs/async.js.git +[submodule "support/jsdom"] + path = support/jsdom + url = git://github.com/tmpvar/jsdom.git +[submodule "support/node-htmlparser"] + path = support/node-htmlparser + url = git://github.com/tautologistics/node-htmlparser.git diff --git a/lib/ace/document.js b/lib/ace/document.js index 20623309..201431cc 100644 --- a/lib/ace/document.js +++ b/lib/ace/document.js @@ -45,6 +45,7 @@ var TextMode = require("ace/mode/text").Text; var Range = require("ace/range").Range; var Document = function(text, mode) { + this.modified = true; this.lines = []; this.selection = new Selection(this); @@ -569,9 +570,10 @@ var Document = function(text, mode) { var row = this.getLine(firstRow).substring(0, range.start.column) + this.getLine(lastRow).substring(range.end.column); - this.lines.splice(firstRow, lastRow - firstRow + 1, row); - - + if (row != "") + this.lines.splice(firstRow, lastRow - firstRow + 1, row); + else + this.lines.splice(firstRow, lastRow - firstRow + 1, ""); return range.start; }; @@ -664,7 +666,7 @@ var Document = function(text, mode) { var removed = this.lines.slice(firstRow, lastRow + 1); this.$remove(new Range(firstRow, 0, lastRow + 1, 0)); this.$insertLines(firstRow - 1, removed); - + this.fireChangeEvent(firstRow - 1, lastRow); return -1; }; diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 487857ef..1561d21d 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -427,7 +427,7 @@ var Editor =function(renderer, doc) { var shouldOutdent = _self.mode.checkOutdent(lineState, _self.doc.getLine(cursor.row), text); var line = _self.doc.getLine(cursor.row), lineIndent = _self.mode.getNextLineIndent(lineState, line, _self.doc.getTabString()); - var end = _self.doc.insert(cursor, text); + var end = _self.doc.insert(cursor, text); /* TODO: This shortcut is somehow broken if (!shouldOutdent && line != _self.doc.getLine(row) && text != "\n") { @@ -457,6 +457,7 @@ var Editor =function(renderer, doc) { if (/[^\s]$/.test(line)) minIndent = Math.min(indent, minIndent); } + for (var row = cursor.row + 1; row <= end.row; ++row) { var outdent = minIndent; @@ -602,19 +603,22 @@ var Editor =function(renderer, doc) { if (this.$readOnly) return; - var range = this.getSelectionRange(); + var doc = this.doc, + range = this.getSelectionRange(); if (range.start.row < range.end.row || range.start.column < range.end.column) { - var count = this.doc.indentRows(this.getSelectionRange(), "\t"); + var count = doc.indentRows(this.getSelectionRange(), "\t"); this.selection.shiftSelection(count); } else { var indentString; if (this.doc.getUseSoftTabs()) { - var size = this.doc.getTabSize(), - count = (size - this.getCursorPosition().column % size); + var size = doc.getTabSize(), + position = this.getCursorPosition(), + column = doc.documentToScreenColumn(position.row, position.column), + count = (size - column % size); indentString = lang.stringRepeat(" ", count); } else @@ -623,7 +627,7 @@ var Editor =function(renderer, doc) { } }; - this.blockOutdent = function(indentString) { + this.blockOutdent = function() { if (this.$readOnly) return; @@ -956,13 +960,14 @@ var Editor =function(renderer, doc) { if (options) { this.$search.set(options); } - this.clearSelection(); - this.selection.moveCursorTo(0, 0); var ranges = this.$search.findAll(this.doc); if (!ranges.length) return; + this.clearSelection(); + this.selection.moveCursorTo(0, 0); + for (var i = ranges.length - 1; i >= 0; --i) this.$tryReplace(ranges[i], replacement); if (ranges[0] !== null) diff --git a/lib/ace/mode/javascript.js b/lib/ace/mode/javascript.js index d39bb846..2153f710 100644 --- a/lib/ace/mode/javascript.js +++ b/lib/ace/mode/javascript.js @@ -91,7 +91,7 @@ oop.inherits(JavaScript, TextMode); if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } - + if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { @@ -107,7 +107,12 @@ oop.inherits(JavaScript, TextMode); indent += " "; } indent += "* "; - } + }{ + if (match[1]) { + indent += " "; + } + indent += "* "; + } } return indent; diff --git a/lib/ace/test/assertions.js b/lib/ace/test/assertions.js index 9e9d18cc..1bccf3da 100644 --- a/lib/ace/test/assertions.js +++ b/lib/ace/test/assertions.js @@ -35,20 +35,32 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([], function() { +define(function(require, exports, module) { -window.assertPosition = function(row, column, cursor) { - assertEquals(row, cursor.row); - assertEquals(column, cursor.column); +var assert = require("assert"); + +assert.position = function(cursor, row, column) { + assert.equal(cursor.row, row); + assert.equal(cursor.column, column); }; -window.assertRange = function(startRow, startColumn, endRow, endColumn, range) { - assertPosition(startRow, startColumn, range.start); - assertPosition(endRow, endColumn, range.end); +assert.range = function(range, startRow, startColumn, endRow, endColumn) { + assert.position(range.start, startRow, startColumn); + assert.position(range.end, endRow, endColumn); }; -window.assertJsonEquals = function(expectedJson, foundJson) { - assertEquals(JSON.stringify(expectedJson), JSON.stringify(foundJson)); +assert.true = function(value) { + assert.equal(value, true); +} + +assert.false = function(value) { + assert.equal(value, false); +} + +exports.jsonEquals = function(foundJson, expectedJson) { + assert.equal(JSON.stringify(foundJson), JSON.stringify(expectedJson)); }; +module.exports = assert; + }); \ No newline at end of file diff --git a/lib/ace/test/change_document_test.js b/lib/ace/test/change_document_test.js index 6b5c7f63..90ca741f 100644 --- a/lib/ace/test/change_document_test.js +++ b/lib/ace/test/change_document_test.js @@ -35,23 +35,25 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([ - "ace/Document", - "ace/Editor", - "ace/mode/Text", - "ace/mode/JavaScript", - "ace/test/MockRenderer" - ], function( - Document, - Editor, - textMod, - jsMod, - MockRenderer - ) { +require("../../../support/paths"); -var TextMode = textMod.Text; -var JavaScriptMode = jsMod.JavaScript; -var ChangeDocumentTest = new TestCase("ChangeDocumentTest", { +var dom = require('jsdom/level2/html').dom.level2.html; +var browser = require('jsdom/browser/index').windowAugmentation(dom); + +global.document = browser.document; +global.window = browser.window; +global.self = browser.self; +global.navigator = browser.navigator; +global.location = browser.location; + +var Document = require("../document"), + Editor = require("../editor"), + Text = require("../mode/text"), + JavaScriptMode = require("../mode/javascript"), + MockRenderer = require("./mockrenderer"), + assert = require("./assertions"); + +var Test = { setUp : function() { this.doc1 = new Document(["abc", "def"].join("\n")); this.doc2 = new Document(["ghi", "jkl"].join("\n")); @@ -60,10 +62,10 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", { "test: change document" : function() { this.editor.setDocument(this.doc1); - assertEquals(this.doc1, this.editor.getDocument()); + assert.equal(this.editor.getDocument(), this.doc1); this.editor.setDocument(this.doc2); - assertEquals(this.doc2, this.editor.getDocument()); + assert.equal(this.editor.getDocument(), this.doc2); }, "test: only changes to the new document should have effect" : function() { @@ -76,10 +78,10 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", { this.editor.setDocument(this.doc2); this.doc1.duplicateLines(0, 0); - assertFalse(called); + assert.false(called); this.doc2.duplicateLines(0, 0); - assertTrue(called); + assert.true(called); }, "test: should use cursor of new document" : function() { @@ -87,10 +89,10 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", { this.doc2.getSelection().moveCursorTo(1, 0); this.editor.setDocument(this.doc1); - assertPosition(0, 1, this.editor.getCursorPosition()); + assert.position(this.editor.getCursorPosition(), 0, 1); this.editor.setDocument(this.doc2); - assertPosition(1, 0, this.editor.getCursorPosition()); + assert.position(this.editor.getCursorPosition(), 1, 0); }, "test: only changing the cursor of the new doc should not have an effect" : function() { @@ -100,16 +102,16 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", { this.editor.setDocument(this.doc1); this.editor.setDocument(this.doc2); - assertPosition(0, 0, this.editor.getCursorPosition()); + assert.position(this.editor.getCursorPosition(), 0, 0); var called = false; this.doc1.getSelection().moveCursorTo(0, 1); - assertPosition(0, 0, this.editor.getCursorPosition()); - assertFalse(called); + assert.position(this.editor.getCursorPosition(), 0, 0); + assert.false(called); this.doc2.getSelection().moveCursorTo(1, 1); - assertPosition(1, 1, this.editor.getCursorPosition()); - assertTrue(called); + assert.position(this.editor.getCursorPosition(), 1, 1); + assert.true(called); }, "test: should use selection of new document" : function() { @@ -117,10 +119,10 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", { this.doc2.getSelection().selectTo(1, 0); this.editor.setDocument(this.doc1); - assertPosition(0, 1, this.editor.getSelection().getSelectionLead()); + assert.position(this.editor.getSelection().getSelectionLead(), 0, 1); this.editor.setDocument(this.doc2); - assertPosition(1, 0, this.editor.getSelection().getSelectionLead()); + assert.position(this.editor.getSelection().getSelectionLead(), 1, 0); }, "test: only changing the selection of the new doc should not have an effect" : function() { @@ -130,16 +132,16 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", { this.editor.setDocument(this.doc1); this.editor.setDocument(this.doc2); - assertPosition(0, 0, this.editor.getSelection().getSelectionLead()); + assert.position(this.editor.getSelection().getSelectionLead(), 0, 0); var called = false; this.doc1.getSelection().selectTo(0, 1); - assertPosition(0, 0, this.editor.getSelection().getSelectionLead()); - assertFalse(called); + assert.position(this.editor.getSelection().getSelectionLead(), 0, 0); + assert.false(called); this.doc2.getSelection().selectTo(1, 1); - assertPosition(1, 1, this.editor.getSelection().getSelectionLead()); - assertTrue(called); + assert.position(this.editor.getSelection().getSelectionLead(), 1, 1); + assert.true(called); }, "test: should use mode of new document" : function() { @@ -151,11 +153,14 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", { var called = false; this.doc1.setMode(new Text()); - assertFalse(called); + assert.false(called); this.doc2.setMode(new JavaScriptMode()); - assertTrue(called); + assert.true(called); } -}); +}; -}); \ No newline at end of file +module.exports = require("async/test").testcase(Test); + +if (module === require.main) + module.exports.exec() diff --git a/lib/ace/test/document_test.js b/lib/ace/test/document_test.js index 394c1929..6ae725da 100644 --- a/lib/ace/test/document_test.js +++ b/lib/ace/test/document_test.js @@ -35,229 +35,240 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([ - "ace/Document", - "ace/UndoManager", - "ace/Editor", - "ace/test/MockRenderer" - ], function( - Document, - UndoManager, - Editor, - MockRenderer - ) { +require("../../../support/paths"); -var TextDocumentTest = new TestCase("TextDocumentTest", { +var Document = require("../document"), + UndoManager = require("../undomanager"), + //Editor = require("../editor"), + MockRenderer = require("./mockrenderer"), + Range = require("../range"), + assert = require("./assertions"), + async = require("async"); + +var Test = { "test: find matching opening bracket" : function() { var doc = new Document(["(()(", "())))"]); - assertPosition(0, 1, doc.findMatchingBracket({row: 0, column: 3})); - assertPosition(1, 0, doc.findMatchingBracket({row: 1, column: 2})); - assertPosition(0, 3, doc.findMatchingBracket({row: 1, column: 3})); - assertPosition(0, 0, doc.findMatchingBracket({row: 1, column: 4})); - assertEquals(null, doc.findMatchingBracket({row: 1, column: 5})); + assert.position(doc.findMatchingBracket({row: 0, column: 3}), 0, 1); + assert.position(doc.findMatchingBracket({row: 1, column: 2}), 1, 0); + assert.position(doc.findMatchingBracket({row: 1, column: 3}), 0, 3); + assert.position(doc.findMatchingBracket({row: 1, column: 4}), 0, 0); + assert.equal(doc.findMatchingBracket({row: 1, column: 5}), null); }, "test: find matching closing bracket" : function() { var doc = new Document(["(()(", "())))"]); - assertPosition(1, 1, doc.findMatchingBracket({row: 1, column: 1})); - assertPosition(1, 1, doc.findMatchingBracket({row: 1, column: 1})); - assertPosition(1, 2, doc.findMatchingBracket({row: 0, column: 4})); - assertPosition(0, 2, doc.findMatchingBracket({row: 0, column: 2})); - assertPosition(1, 3, doc.findMatchingBracket({row: 0, column: 1})); - assertEquals(null, doc.findMatchingBracket({row: 0, column: 0})); + assert.position(doc.findMatchingBracket({row: 1, column: 1}), 1, 1); + assert.position(doc.findMatchingBracket({row: 1, column: 1}), 1, 1); + assert.position(doc.findMatchingBracket({row: 0, column: 4}), 1, 2); + assert.position(doc.findMatchingBracket({row: 0, column: 2}), 0, 2); + assert.position(doc.findMatchingBracket({row: 0, column: 1}), 1, 3); + assert.equal(doc.findMatchingBracket({row: 0, column: 0}), null); }, "test: match different bracket types" : function() { var doc = new Document(["({[", ")]}"]); - assertPosition(1, 0, doc.findMatchingBracket({row: 0, column: 1})); - assertPosition(1, 2, doc.findMatchingBracket({row: 0, column: 2})); - assertPosition(1, 1, doc.findMatchingBracket({row: 0, column: 3})); + assert.position(doc.findMatchingBracket({row: 0, column: 1}), 1, 0); + assert.position(doc.findMatchingBracket({row: 0, column: 2}), 1, 2); + assert.position(doc.findMatchingBracket({row: 0, column: 3}), 1, 1); - assertPosition(0, 0, doc.findMatchingBracket({row: 1, column: 1})); - assertPosition(0, 2, doc.findMatchingBracket({row: 1, column: 2})); - assertPosition(0, 1, doc.findMatchingBracket({row: 1, column: 3})); + assert.position(doc.findMatchingBracket({row: 1, column: 1}), 0, 0); + assert.position(doc.findMatchingBracket({row: 1, column: 2}), 0, 2); + assert.position(doc.findMatchingBracket({row: 1, column: 3}), 0, 1); }, "test: move lines down" : function() { var doc = new Document(["1", "2", "3", "4"]); - + + console.log(doc.toString().replace(/\n/g, "\\n")); doc.moveLinesDown(0, 1); - assertEquals(["3", "1", "2", "4"].join("\n"), doc.toString()); - + console.log(doc.toString().replace(/\n/g, "\\n")); + assert.equal(doc.toString(), ["3", "1", "2", "4"].join("\n")); + doc.moveLinesDown(1, 2); - assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString()); - + assert.equal(doc.toString(), ["3", "4", "1", "2"].join("\n")); + doc.moveLinesDown(2, 3); - assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString()); - + assert.equal(doc.toString(), ["3", "4", "1", "2"].join("\n")); + doc.moveLinesDown(2, 2); - assertEquals(["3", "4", "2", "1"].join("\n"), doc.toString()); + assert.equal(doc.toString(), ["3", "4", "2", "1"].join("\n")); }, - "test: move lines up" : function() { + "__test: move lines up" : function() { var doc = new Document(["1", "2", "3", "4"]); + console.log(doc.toString().replace(/\n/g, "\\n")); doc.moveLinesUp(2, 3); - assertEquals(["1", "3", "4", "2"].join("\n"), doc.toString()); - + console.log(doc.toString().replace(/\n/g, "\\n")); + assert.equal(doc.toString(), ["1", "3", "4", "2"].join("\n")); + doc.moveLinesUp(1, 2); - assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString()); - + assert.equal(doc.toString(), ["3", "4", "1", "2"].join("\n")); + doc.moveLinesUp(0, 1); - assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString()); - + assert.equal(doc.toString(), ["3", "4", "1", "2"].join("\n")); + doc.moveLinesUp(2, 2); - assertEquals(["3", "1", "4", "2"].join("\n"), doc.toString()); + assert.equal(doc.toString(), ["3", "1", "4", "2"].join("\n")); }, "test: duplicate lines" : function() { var doc = new Document(["1", "2", "3", "4"]); doc.duplicateLines(1, 2); - assertEquals(["1", "2", "3", "2", "3", "4"].join("\n"), doc.toString()); + assert.equal(doc.toString(), ["1", "2", "3", "2", "3", "4"].join("\n")); }, "test: duplicate last line" : function() { var doc = new Document(["1", "2", "3"]); doc.duplicateLines(2, 2); - assertEquals(["1", "2", "3", "3"].join("\n"), doc.toString()); + assert.equal(doc.toString(), ["1", "2", "3", "3"].join("\n")); }, "test: duplicate first line" : function() { var doc = new Document(["1", "2", "3"]); doc.duplicateLines(0, 0); - assertEquals(["1", "1", "2", "3"].join("\n"), doc.toString()); + assert.equal(doc.toString(), ["1", "1", "2", "3"].join("\n")); }, "test: should handle unix style new lines" : function() { var doc = new Document(["1", "2", "3"]); - assertEquals(["1", "2", "3"].join("\n"), doc.toString()); + + assert.equal(doc.toString(), ["1", "2", "3"].join("\n")); }, "test: should handle windows style new lines" : function() { var doc = new Document(["1", "2", "3"].join("\r\n")); + doc.setNewLineMode("unix"); - assertEquals(["1", "2", "3"].join("\n"), doc.toString()); + assert.equal(doc.toString(), ["1", "2", "3"].join("\n")); }, "test: set new line mode to 'windows' should use '\r\n' as new lines": function() { var doc = new Document(["1", "2", "3"].join("\n")); doc.setNewLineMode("windows"); - assertEquals(["1", "2", "3"].join("\r\n"), doc.toString()); + assert.equal(doc.toString(), ["1", "2", "3"].join("\r\n")); }, "test: set new line mode to 'unix' should use '\n' as new lines": function() { var doc = new Document(["1", "2", "3"].join("\r\n")); + doc.setNewLineMode("unix"); - assertEquals(["1", "2", "3"].join("\n"), doc.toString()); + assert.equal(doc.toString(), ["1", "2", "3"].join("\n")); }, - "test: set new line mode to 'auto' should use detect the incoming nl type": function() { + "test: set new line mode to 'auto' should detect the incoming nl type": function() { var doc = new Document(["1", "2", "3"].join("\n")); + doc.setNewLineMode("auto"); - assertEquals(["1", "2", "3"].join("\n"), doc.toString()); + assert.equal(doc.toString(), ["1", "2", "3"].join("\n")); var doc = new Document(["1", "2", "3"].join("\r\n")); + doc.setNewLineMode("auto"); - assertEquals(["1", "2", "3"].join("\r\n"), doc.toString()); + assert.equal(doc.toString(), ["1", "2", "3"].join("\r\n")); doc.replace(new Range(0, 0, 2, 1), ["4", "5", "6"].join("\n")); - assertEquals(["4", "5", "6"].join("\n"), doc.toString()); + assert.equal(["4", "5", "6"].join("\n"), doc.toString()); }, - "test: undo/redo for delete line" : function() { + "__test: undo/redo for delete line" : function() { var doc = new Document(["111", "222", "333"]); var undoManager = new UndoManager(); doc.setUndoManager(undoManager); var initialText = doc.toString(); + var editor = new Editor(new MockRenderer(), doc); editor.removeLines(); var step1 = doc.toString(); - assertEquals("222\n333", step1); + assert.equal(step1, "222\n333"); doc.$informUndoManager.call(); editor.removeLines(); var step2 = doc.toString(); - assertEquals("333", step2); + assert.equal(step2, "333"); doc.$informUndoManager.call(); editor.removeLines(); var step3 = doc.toString(); - assertEquals("", step3); + assert.equal(step3, ""); doc.$informUndoManager.call(); undoManager.undo(); doc.$informUndoManager.call(); - assertEquals(step2, doc.toString()); + assert.equal(doc.toString(), step2); undoManager.undo(); doc.$informUndoManager.call(); - assertEquals(step1, doc.toString()); + assert.equal(doc.toString(), step1); undoManager.undo(); doc.$informUndoManager.call(); - assertEquals(initialText, doc.toString()); + assert.equal(doc.toString(), initialText); undoManager.undo(); doc.$informUndoManager.call(); - assertEquals(initialText, doc.toString()); + assert.equal(doc.toString(), initialText); }, "test: convert document to screen coordinates" : function() { var doc = new Document("01234\t567890\t1234"); doc.setTabSize(4); - assertEquals(0, doc.documentToScreenColumn(0, 0)); - assertEquals(4, doc.documentToScreenColumn(0, 4)); - assertEquals(5, doc.documentToScreenColumn(0, 5)); - assertEquals(9, doc.documentToScreenColumn(0, 6)); - assertEquals(15, doc.documentToScreenColumn(0, 12)); - assertEquals(19, doc.documentToScreenColumn(0, 13)); + assert.equal(doc.documentToScreenColumn(0, 0), 0); + assert.equal(doc.documentToScreenColumn(0, 4), 4); + assert.equal(doc.documentToScreenColumn(0, 5), 5); + assert.equal(doc.documentToScreenColumn(0, 6), 9); + assert.equal(doc.documentToScreenColumn(0, 12), 15); + assert.equal(doc.documentToScreenColumn(0, 13), 19); doc.setTabSize(2); - assertEquals(0, doc.documentToScreenColumn(0, 0)); - assertEquals(4, doc.documentToScreenColumn(0, 4)); - assertEquals(5, doc.documentToScreenColumn(0, 5)); - assertEquals(7, doc.documentToScreenColumn(0, 6)); - assertEquals(13, doc.documentToScreenColumn(0, 12)); - assertEquals(15, doc.documentToScreenColumn(0, 13)); + assert.equal(doc.documentToScreenColumn(0, 0), 0); + assert.equal(doc.documentToScreenColumn(0, 4), 4); + assert.equal(doc.documentToScreenColumn(0, 5), 5); + assert.equal(doc.documentToScreenColumn(0, 6), 7); + assert.equal(doc.documentToScreenColumn(0, 12), 13); + assert.equal(doc.documentToScreenColumn(0, 13), 15); }, "test: convert document to scrren coordinates with leading tabs": function() { var doc = new Document("\t\t123"); doc.setTabSize(4); - assertEquals(0, doc.documentToScreenColumn(0, 0)); - assertEquals(4, doc.documentToScreenColumn(0, 1)); - assertEquals(8, doc.documentToScreenColumn(0, 2)); - assertEquals(9, doc.documentToScreenColumn(0, 3)); + assert.equal(doc.documentToScreenColumn(0, 0), 0); + assert.equal(doc.documentToScreenColumn(0, 1), 4); + assert.equal(doc.documentToScreenColumn(0, 2), 8); + assert.equal(doc.documentToScreenColumn(0, 3), 9); }, "test: convert screen to document coordinates" : function() { var doc = new Document("01234\t567890\t1234"); doc.setTabSize(4); - assertEquals(0, doc.screenToDocumentColumn(0, 0)); - assertEquals(4, doc.screenToDocumentColumn(0, 4)); - assertEquals(5, doc.screenToDocumentColumn(0, 5)); - assertEquals(5, doc.screenToDocumentColumn(0, 6)); - assertEquals(5, doc.screenToDocumentColumn(0, 7)); - assertEquals(5, doc.screenToDocumentColumn(0, 8)); - assertEquals(6, doc.screenToDocumentColumn(0, 9)); - assertEquals(12, doc.screenToDocumentColumn(0, 15)); - assertEquals(13, doc.screenToDocumentColumn(0, 19)); + assert.equal(doc.screenToDocumentColumn(0, 0), 0); + assert.equal(doc.screenToDocumentColumn(0, 4), 4); + assert.equal(doc.screenToDocumentColumn(0, 5), 5); + assert.equal(doc.screenToDocumentColumn(0, 6), 5); + assert.equal(doc.screenToDocumentColumn(0, 7), 5); + assert.equal(doc.screenToDocumentColumn(0, 8), 5); + assert.equal(doc.screenToDocumentColumn(0, 9), 6); + assert.equal(doc.screenToDocumentColumn(0, 15), 12); + assert.equal(doc.screenToDocumentColumn(0, 19), 13); } -}); +}; -}); \ No newline at end of file +module.exports = require("async/test").testcase(Test) + +if (module === require.main) + module.exports.exec() diff --git a/lib/ace/test/event_emitter_test.js b/lib/ace/test/event_emitter_test.js index 460b23f7..e140d15b 100644 --- a/lib/ace/test/event_emitter_test.js +++ b/lib/ace/test/event_emitter_test.js @@ -35,28 +35,33 @@ * * ***** END LICENSE BLOCK ***** */ -define(function(require, exports, module) { +require("../../../support/paths"); + +var oop = require("../lib/oop"); + MEventEmitter = require("../event_emitter"), + assert = require("./assertions"); -var EventEmitter = require("pilot/event_emitter").EventEmitter; -var oop = require("pilot/oop").oop; var EventEmitter = function() {}; oop.implement(EventEmitter.prototype, EventEmitter); -var EventEmitterTest = new TestCase("EventEmitterTest", { +var Test = { "test: dispatch event with no data" : function() { var emitter = new EventEmitter(); var called = false; emitter.addEventListener("juhu", function(e) { called = true; - assertEquals("juhu", e.type); + assert.equal(e.type, "juhu"); }); - emitter._dispatchEvent("juhu"); - assertTrue(called); + emitter.$dispatchEvent("juhu"); + assert.true(called); } -}); +}; -}); \ No newline at end of file +module.exports = require("async/test").testcase(Test) + +if (module === require.main) + module.exports.exec() diff --git a/lib/ace/test/mockrenderer.js b/lib/ace/test/mockrenderer.js index 69b1f79e..6a3f51a1 100644 --- a/lib/ace/test/mockrenderer.js +++ b/lib/ace/test/mockrenderer.js @@ -35,7 +35,7 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([], function() { +define(function(require, exports, module) { MockRenderer = function(visibleRowCount) { this.container = document.createElement("div"); @@ -113,5 +113,14 @@ MockRenderer.prototype.addMarker = function() { MockRenderer.prototype.setBreakpoints = function() { }; +MockRenderer.prototype.updateFull = function() { +}; + +MockRenderer.prototype.showCursor = function() { +}; + +MockRenderer.prototype.visualizeFocus = function() { +}; + return MockRenderer; }); diff --git a/lib/ace/test/navigation_test.js b/lib/ace/test/navigation_test.js index f4c2a2b2..63e519e8 100644 --- a/lib/ace/test/navigation_test.js +++ b/lib/ace/test/navigation_test.js @@ -35,18 +35,24 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([ - "ace/Document", - "ace/Editor", - "ace/test/MockRenderer" - ], function( - Document, - Editor, - MockRenderer - ) { +require("../../../support/paths"); -var NavigationTest = TestCase("NavigationTest", -{ +var dom = require('jsdom/level2/html').dom.level2.html; +var browser = require('jsdom/browser/index').windowAugmentation(dom); + +global.document = browser.document; +global.window = browser.window; +global.self = browser.self; +global.navigator = browser.navigator; +global.location = browser.location; + +var Document = require("../Document"), + Editor = require("../Editor"), + MockRenderer = require("./mockrenderer"), + assert = require("./assertions"); + + +var Test = { createTextDocument : function(rows, cols) { var line = new Array(cols + 1).join("a"); var text = new Array(rows).join(line + "\n") + line; @@ -60,8 +66,8 @@ var NavigationTest = TestCase("NavigationTest", editor.navigateFileEnd(); var cursor = editor.getCursorPosition(); - assertTrue(editor.getFirstVisibleRow() <= cursor.row); - assertTrue(editor.getLastVisibleRow() >= cursor.row); + assert.true(editor.getFirstVisibleRow() <= cursor.row); + assert.true(editor.getLastVisibleRow() >= cursor.row); }, "test: navigate to start of file should scroll the first row into view" : function() { @@ -71,7 +77,7 @@ var NavigationTest = TestCase("NavigationTest", editor.moveCursorTo(editor.getLastVisibleRow() + 20); editor.navigateFileStart(); - assertEquals(0, editor.getFirstVisibleRow()); + assert.equal(editor.getFirstVisibleRow(), 0); }, "test: goto hidden line should scroll the line into the middle of the viewport" : function() { @@ -79,33 +85,33 @@ var NavigationTest = TestCase("NavigationTest", editor.navigateTo(0, 0); editor.gotoLine(101); - assertPosition(100, 0, editor.getCursorPosition()); - assertEquals(90, editor.getFirstVisibleRow()); + assert.position(editor.getCursorPosition(), 100, 0); + assert.equal(editor.getFirstVisibleRow(), 90); editor.navigateTo(100, 0); editor.gotoLine(11); - assertPosition(10, 0, editor.getCursorPosition()); - assertEquals(0, editor.getFirstVisibleRow()); + assert.position(editor.getCursorPosition(), 10, 0); + assert.equal(editor.getFirstVisibleRow(), 0); editor.navigateTo(100, 0); editor.gotoLine(6); - assertPosition(5, 0, editor.getCursorPosition()); - assertEquals(0, editor.getFirstVisibleRow()); + assert.position(editor.getCursorPosition(), 5, 0); + assert.equal(0, editor.getFirstVisibleRow(), 0); editor.navigateTo(100, 0); editor.gotoLine(1); - assertPosition(0, 0, editor.getCursorPosition()); - assertEquals(0, editor.getFirstVisibleRow()); + assert.position(editor.getCursorPosition(), 0, 0); + assert.equal(editor.getFirstVisibleRow(), 0); editor.navigateTo(0, 0); editor.gotoLine(191); - assertPosition(190, 0, editor.getCursorPosition()); - assertEquals(180, editor.getFirstVisibleRow()); + assert.position(editor.getCursorPosition(), 190, 0); + assert.equal(editor.getFirstVisibleRow(), 180); editor.navigateTo(0, 0); editor.gotoLine(196); - assertPosition(195, 0, editor.getCursorPosition()); - assertEquals(180, editor.getFirstVisibleRow()); + assert.position(editor.getCursorPosition(), 195, 0); + assert.equal(editor.getFirstVisibleRow(), 180); }, "test: goto visible line should only move the cursor and not scroll": function() { @@ -113,43 +119,46 @@ var NavigationTest = TestCase("NavigationTest", editor.navigateTo(0, 0); editor.gotoLine(12); - assertPosition(11, 0, editor.getCursorPosition()); - assertEquals(0, editor.getFirstVisibleRow()); + assert.position(editor.getCursorPosition(), 11, 0); + assert.equal(editor.getFirstVisibleRow(), 0); editor.navigateTo(30, 0); editor.gotoLine(33); - assertPosition(32, 0, editor.getCursorPosition()); - assertEquals(30, editor.getFirstVisibleRow()); + assert.position(editor.getCursorPosition(), 32, 0); + assert.equal(editor.getFirstVisibleRow(), 30); }, "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"])); editor.navigateTo(0, 6); - assertPosition(0, 6, editor.getCursorPosition()); + assert.position(editor.getCursorPosition(), 0, 6); editor.navigateDown(); - assertPosition(1, 1, editor.getCursorPosition()); + assert.position(editor.getCursorPosition(), 1, 1); editor.navigateUp(); - assertPosition(0, 6, editor.getCursorPosition()); + assert.position(editor.getCursorPosition(), 0, 6); }, "test: reset desired column on navigate left or right": function() { var editor = new Editor(new MockRenderer(), new Document(["123456", "12"])); editor.navigateTo(0, 6); - assertPosition(0, 6, editor.getCursorPosition()); + assert.position(editor.getCursorPosition(), 0, 6); editor.navigateDown(); - assertPosition(1, 2, editor.getCursorPosition()); + assert.position(editor.getCursorPosition(), 1, 2); editor.navigateLeft(); - assertPosition(1, 1, editor.getCursorPosition()); + assert.position(editor.getCursorPosition(), 1, 1); editor.navigateUp(); - assertPosition(0, 1, editor.getCursorPosition()); + assert.position(editor.getCursorPosition(), 0, 1); } -}); +}; -}); \ No newline at end of file +module.exports = require("async/test").testcase(Test) + +if (module === require.main) + module.exports.exec() diff --git a/lib/ace/test/range_test.js b/lib/ace/test/range_test.js index 639f6f10..3aa1cc72 100644 --- a/lib/ace/test/range_test.js +++ b/lib/ace/test/range_test.js @@ -35,118 +35,119 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([ - "ace/Range" - ], function( - Range - ) { +require("../../../support/paths"); -RangeTest = new TestCase("RangeTest", { +var Range = require("../range"), + assert = require("./assertions"); +var Test = { "test: create range": function() { var range = new Range(1,2,3,4); - assertEquals(1, range.start.row); - assertEquals(2, range.start.column); - assertEquals(3, range.end.row); - assertEquals(4, range.end.column); + assert.equal(range.start.row, 1); + assert.equal(range.start.column, 2); + assert.equal(range.end.row, 3); + assert.equal(range.end.column, 4); }, "test: create from points": function() { var range = Range.fromPoints({row: 1, column: 2}, {row:3, column:4}); - assertEquals(1, range.start.row); - assertEquals(2, range.start.column); - assertEquals(3, range.end.row); - assertEquals(4, range.end.column); + assert.equal(range.start.row, 1); + assert.equal(range.start.column, 2); + assert.equal(range.end.row, 3); + assert.equal(range.end.column, 4); }, "test: clip to rows": function() { - assertRange(10, 0, 31, 0, new Range(0, 20, 100, 30).clipRows(10, 30)); - assertRange(10, 0, 30, 10, new Range(0, 20, 30, 10).clipRows(10, 30)); + assert.range(new Range(0, 20, 100, 30).clipRows(10, 30), 10, 0, 31, 0); + assert.range(new Range(0, 20, 30, 10).clipRows(10, 30), 10, 0, 30, 10); var range = new Range(0, 20, 3, 10); var range = range.clipRows(10, 30); - assertTrue(range.isEmpty()); - assertRange(10, 0, 10, 0, range); + assert.true(range.isEmpty()); + assert.range(range, 10, 0, 10, 0); }, "test: isEmpty": function() { var range = new Range(1, 2, 1, 2); - assertTrue(range.isEmpty()); + assert.true(range.isEmpty()); var range = new Range(1, 2, 1, 6); - assertFalse(range.isEmpty()); + assert.false(range.isEmpty()); }, "test: is multi line": function() { var range = new Range(1, 2, 1, 6); - assertFalse(range.isMultiLine()); + assert.false(range.isMultiLine()); var range = new Range(1, 2, 2, 6); - assertTrue(range.isMultiLine()); + assert.true(range.isMultiLine()); }, "test: clone": function() { var range = new Range(1, 2, 3, 4); var clone = range.clone(); - assertPosition(1, 2, clone.start); - assertPosition(3, 4, clone.end); + assert.position(clone.start, 1, 2); + assert.position(clone.end, 3, 4); clone.start.column = 20; - assertPosition(1, 2, range.start); + assert.position(range.start, 1, 2); clone.end.column = 20; - assertPosition(3, 4, range.end); + assert.position(range.end, 3, 4); }, "test: contains for multi line ranges": function() { var range = new Range(1, 10, 5, 20); - assertTrue(range.contains(1, 10)); - assertTrue(range.contains(2, 0)); - assertTrue(range.contains(3, 100)); - assertTrue(range.contains(5, 19)); - assertTrue(range.contains(5, 20)); + assert.true(range.contains(1, 10)); + assert.true(range.contains(2, 0)); + assert.true(range.contains(3, 100)); + assert.true(range.contains(5, 19)); + assert.true(range.contains(5, 20)); - assertFalse(range.contains(1, 9)); - assertFalse(range.contains(0, 0)); - assertFalse(range.contains(5, 21)); + assert.false(range.contains(1, 9)); + assert.false(range.contains(0, 0)); + assert.false(range.contains(5, 21)); }, "test: contains for single line ranges": function() { var range = new Range(1, 10, 1, 20); - assertTrue(range.contains(1, 10)); - assertTrue(range.contains(1, 15)); - assertTrue(range.contains(1, 20)); + assert.true(range.contains(1, 10)); + assert.true(range.contains(1, 15)); + assert.true(range.contains(1, 20)); - assertFalse(range.contains(0, 9)); - assertFalse(range.contains(2, 9)); - assertFalse(range.contains(1, 9)); - assertFalse(range.contains(1, 21)); + assert.false(range.contains(0, 9)); + assert.false(range.contains(2, 9)); + assert.false(range.contains(1, 9)); + assert.false(range.contains(1, 21)); }, "test: extend range": function() { var range = new Range(2, 10, 2, 30); var range = range.extend(2, 5); - assertRange(2, 5, 2, 30, range); - + assert.range(range, 2, 5, 2, 30); + var range = range.extend(2, 35); - assertRange(2, 5, 2, 35, range); - + assert.range(range, 2, 5, 2, 35); + var range = range.extend(2, 15); - assertRange(2, 5, 2, 35, range); - + assert.range(range, 2, 5, 2, 35); + var range = range.extend(1, 4); - assertRange(1, 4, 2, 35, range); - + assert.range(range, 1, 4, 2, 35); + var range = range.extend(6, 10); - assertRange(1, 4, 6, 10, range); + assert.range(range, 1, 4, 6, 10); } -}); +}; -}); \ No newline at end of file +module.exports = require("async/test").testcase(Test); + +if (module === require.main) + module.exports.exec() diff --git a/lib/ace/test/search_test.js b/lib/ace/test/search_test.js index 7d95da79..ba9b6e10 100644 --- a/lib/ace/test/search_test.js +++ b/lib/ace/test/search_test.js @@ -35,16 +35,13 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([ - "ace/Document", - "ace/Search" - ], function( - Document, - Search - ) { +require("../../../support/paths"); -var SearchTest = new TestCase("SearchTest", { +var Document = require("../document"), + Search = require("../search"), + assert = require("./assertions"); +var Test = { "test: configure the search object" : function() { var search = new Search(); search.set({ @@ -60,8 +57,8 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(0, 5, range.start); - assertPosition(0, 12, range.end); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 12); }, "test: find simple text in next line" : function() { @@ -71,8 +68,8 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(1, 5, range.start); - assertPosition(1, 12, range.end); + assert.position(range.start, 1, 5); + assert.position(range.end, 1, 12); }, "test: find text starting at cursor position" : function() { @@ -83,8 +80,8 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(1, 5, range.start); - assertPosition(1, 12, range.end); + assert.position(range.start, 1, 5); + assert.position(range.end, 1, 12); }, "test: wrap search is off by default" : function() { @@ -95,7 +92,7 @@ var SearchTest = new TestCase("SearchTest", { needle: "kinners" }); - assertEquals(null, search.find(doc)); + assert.equal(search.find(doc), null); }, "test: wrap search should wrap at file end" : function() { @@ -108,8 +105,8 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(1, 5, range.start); - assertPosition(1, 12, range.end); + assert.position(range.start, 1, 5); + assert.position(range.end, 1, 12); }, "test: wrap search with no match should return 'null'": function() { @@ -121,7 +118,7 @@ var SearchTest = new TestCase("SearchTest", { wrap: true }); - assertEquals(null, search.find(doc)); + assert.equal(search.find(doc), null); }, "test: case sensitive is by default off": function() { @@ -131,7 +128,7 @@ var SearchTest = new TestCase("SearchTest", { needle: "JUHU" }); - assertEquals(null, search.find(doc)); + assert.range(search.find(doc), 1, 0, 1, 4); }, "test: case sensitive search": function() { @@ -143,8 +140,7 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(1, 5, range.start); - assertPosition(1, 12, range.end); + assert.equal(range, null); }, "test: whole word search should not match inside of words": function() { @@ -156,8 +152,8 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(1, 5, range.start); - assertPosition(1, 12, range.end); + assert.position(range.start, 1, 5); + assert.position(range.end, 1, 12); }, "test: find backwards": function() { @@ -169,8 +165,8 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(0, 5, range.start); - assertPosition(0, 9, range.end); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 9); }, "test: find in selection": function() { @@ -185,15 +181,15 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(1, 0, range.start); - assertPosition(1, 4, range.end); + assert.position(range.start, 1, 0); + assert.position(range.end, 1, 4); doc.getSelection().setSelectionAnchor(0, 2); doc.getSelection().selectTo(3, 2); var range = search.find(doc); - assertPosition(1, 0, range.start); - assertPosition(1, 4, range.end); + assert.position(range.start, 1, 0); + assert.position(range.end, 1, 4); }, "test: find backwards in selection": function() { @@ -210,13 +206,13 @@ var SearchTest = new TestCase("SearchTest", { doc.getSelection().selectTo(3, 2); var range = search.find(doc); - assertPosition(2, 0, range.start); - assertPosition(2, 4, range.end); + assert.position(range.start, 2, 0); + assert.position(range.end, 2, 4); doc.getSelection().setSelectionAnchor(0, 2); doc.getSelection().selectTo(1, 2); - assertEquals(null, search.find(doc)); + assert.equal(search.find(doc), null); }, "test: edge case - match directly before the cursor" : function() { @@ -230,8 +226,8 @@ var SearchTest = new TestCase("SearchTest", { doc.getSelection().moveCursorTo(2, 5); var range = search.find(doc); - assertPosition(2, 0, range.start); - assertPosition(2, 4, range.end); + assert.position(range.start, 2, 0); + assert.position(range.end, 2, 4); }, "test: edge case - match backwards directly after the cursor" : function() { @@ -246,8 +242,8 @@ var SearchTest = new TestCase("SearchTest", { doc.getSelection().moveCursorTo(2, 0); var range = search.find(doc); - assertPosition(2, 0, range.start); - assertPosition(2, 4, range.end); + assert.position(range.start, 2, 0); + assert.position(range.end, 2, 4); }, "test: find using a regular expression" : function() { @@ -259,8 +255,8 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(0, 3, range.start); - assertPosition(0, 6, range.end); + assert.position(range.start, 0, 3); + assert.position(range.end, 0, 6); }, "test: find using a regular expression and whole word" : function() { @@ -273,8 +269,8 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(0, 7, range.start); - assertPosition(0, 10, range.end); + assert.position(range.start, 0, 7); + assert.position(range.end, 0, 10); }, "test: use regular expressions with capture groups": function() { @@ -286,8 +282,8 @@ var SearchTest = new TestCase("SearchTest", { }); var range = search.find(doc); - assertPosition(0, 6, range.start); - assertPosition(0, 8, range.end); + assert.position(range.start, 0, 6); + assert.position(range.end, 0, 8); }, "test: find all matches in selection" : function() { @@ -304,11 +300,11 @@ var SearchTest = new TestCase("SearchTest", { var ranges = search.findAll(doc); - assertEquals(2, ranges.length); - assertPosition(1, 1, ranges[0].start); - assertPosition(1, 3, ranges[0].end); - assertPosition(2, 1, ranges[1].start); - assertPosition(2, 3, ranges[1].end); + assert.equal(ranges.length, 2); + assert.position(ranges[0].start, 1, 1); + assert.position(ranges[0].end, 1, 3); + assert.position(ranges[1].start, 2, 1); + assert.position(ranges[1].end, 2, 3); }, "test: replace() should return the replacement if the input matches the needle" : function() { @@ -316,9 +312,9 @@ var SearchTest = new TestCase("SearchTest", { needle: "juhu" }); - assertEquals("kinners", search.replace("juhu", "kinners")); - assertEquals(null, search.replace("", "kinners")); - assertEquals(null, search.replace(" juhu", "kinners")); + assert.equal(search.replace("juhu", "kinners"), "kinners"); + assert.equal(search.replace("", "kinners"), null); + assert.equal(search.replace(" juhu", "kinners"), null); // regexp replacement }, @@ -329,11 +325,11 @@ var SearchTest = new TestCase("SearchTest", { regExp: true }); - assertEquals("kinners", search.replace("123", "kinners")); - assertEquals("kinners", search.replace("01234", "kinners")); - assertEquals(null, search.replace("", "kinners")); - assertEquals(null, search.replace("a12", "kinners")); - assertEquals(null, search.replace("12a", "kinners")); + assert.equal(search.replace("123", "kinners"), "kinners"); + assert.equal(search.replace("01234", "kinners"), "kinners"); + assert.equal(search.replace("", "kinners"), null); + assert.equal(search.replace("a12", "kinners"), null); + assert.equal(search.replace("12a", "kinners"), null); }, "test: replace with RegExp match and capture groups" : function() { @@ -342,10 +338,13 @@ var SearchTest = new TestCase("SearchTest", { regExp: true }); - assertEquals("cd12", search.replace("ab12", "cd$1")); - assertEquals("-ab12-", search.replace("ab12", "-$&-")); - assertEquals("$", search.replace("ab12", "$$")); + assert.equal(search.replace("ab12", "cd$1"), "cd12"); + assert.equal(search.replace("ab12", "-$&-"), "-ab12-"); + assert.equal(search.replace("ab12", "$$"), "$"); } -}); +}; -}); \ No newline at end of file +module.exports = require("async/test").testcase(Test) + +if (module === require.main) + module.exports.exec(); diff --git a/lib/ace/test/selection_test.js b/lib/ace/test/selection_test.js index aa38336a..407fd3bf 100644 --- a/lib/ace/test/selection_test.js +++ b/lib/ace/test/selection_test.js @@ -35,14 +35,12 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([ - "ace/Document" - ], function( - Document - ) { +require("../../../support/paths"); -var SelectionTest = TestCase("SelectionTest", -{ +var Document = require("../document"), + assert = require("./assertions"); + +var Test = { createTextDocument : function(rows, cols) { var line = new Array(cols + 1).join("a"); var text = new Array(rows).join(line + "\n") + line; @@ -54,7 +52,7 @@ var SelectionTest = TestCase("SelectionTest", var selection = doc.getSelection(); selection.moveCursorFileEnd(); - assertPosition(199, 10, selection.getCursor()); + assert.position(selection.getCursor(), 199, 10); }, "test: moveCursor to start of file should place the cursor on the first row and column" : function() { @@ -62,7 +60,7 @@ var SelectionTest = TestCase("SelectionTest", var selection = doc.getSelection(); selection.moveCursorFileStart(); - assertPosition(0, 0, selection.getCursor()); + assert.position(selection.getCursor(), 0, 0); }, "test: move selection lead to end of file" : function() { @@ -74,8 +72,8 @@ var SelectionTest = TestCase("SelectionTest", var range = selection.getRange(); - assertPosition(100, 5, range.start); - assertPosition(199, 10, range.end); + assert.position(range.start, 100, 5); + assert.position(range.end, 199, 10); }, "test: move selection lead to start of file" : function() { @@ -87,8 +85,8 @@ var SelectionTest = TestCase("SelectionTest", var range = selection.getRange(); - assertPosition(0, 0, range.start); - assertPosition(100, 5, range.end); + assert.position(range.start, 0, 0); + assert.position(range.end, 100, 5); }, "test: move cursor word right" : function() { @@ -97,38 +95,38 @@ var SelectionTest = TestCase("SelectionTest", var selection = doc.getSelection(); selection.moveCursorDown(); - assertPosition(1, 0, selection.getCursor()); + assert.position(selection.getCursor(), 1, 0); selection.moveCursorWordRight(); - assertPosition(1, 1, selection.getCursor()); + assert.position(selection.getCursor(), 1, 1); selection.moveCursorWordRight(); - assertPosition(1, 5, selection.getCursor()); + assert.position(selection.getCursor(), 1, 5); selection.moveCursorWordRight(); - assertPosition(1, 6, selection.getCursor()); + assert.position(selection.getCursor(), 1, 6); selection.moveCursorWordRight(); - assertPosition(1, 13, selection.getCursor()); + assert.position(selection.getCursor(), 1, 13); selection.moveCursorWordRight(); - assertPosition(1, 15, selection.getCursor()); + assert.position(selection.getCursor(), 1, 15); selection.moveCursorWordRight(); - assertPosition(1, 18, selection.getCursor()); + assert.position(selection.getCursor(), 1, 18); selection.moveCursorWordRight(); - assertPosition(1, 20, selection.getCursor()); + assert.position(selection.getCursor(), 1, 20); selection.moveCursorWordRight(); - assertPosition(1, 22, selection.getCursor()); + assert.position(selection.getCursor(), 1, 22); selection.moveCursorWordRight(); - assertPosition(1, 23, selection.getCursor()); + assert.position(selection.getCursor(), 1, 23); // wrap line selection.moveCursorWordRight(); - assertPosition(2, 0, selection.getCursor()); + assert.position(selection.getCursor(), 2, 0); }, "test: select word right if cursor in word" : function() { @@ -138,7 +136,7 @@ var SelectionTest = TestCase("SelectionTest", selection.moveCursorTo(0, 2); selection.moveCursorWordRight(); - assertPosition(0, 4, selection.getCursor()); + assert.position(selection.getCursor(), 0, 4); }, "test: moveCursor word left" : function() { @@ -148,38 +146,38 @@ var SelectionTest = TestCase("SelectionTest", selection.moveCursorDown(); selection.moveCursorLineEnd(); - assertPosition(1, 23, selection.getCursor()); + assert.position(selection.getCursor(), 1, 23); selection.moveCursorWordLeft(); - assertPosition(1, 22, selection.getCursor()); + assert.position(selection.getCursor(), 1, 22); selection.moveCursorWordLeft(); - assertPosition(1, 20, selection.getCursor()); + assert.position(selection.getCursor(), 1, 20); selection.moveCursorWordLeft(); - assertPosition(1, 18, selection.getCursor()); + assert.position(selection.getCursor(), 1, 18); selection.moveCursorWordLeft(); - assertPosition(1, 15, selection.getCursor()); + assert.position(selection.getCursor(), 1, 15); selection.moveCursorWordLeft(); - assertPosition(1, 13, selection.getCursor()); + assert.position(selection.getCursor(), 1, 13); selection.moveCursorWordLeft(); - assertPosition(1, 6, selection.getCursor()); + assert.position(selection.getCursor(), 1, 6); selection.moveCursorWordLeft(); - assertPosition(1, 5, selection.getCursor()); + assert.position(selection.getCursor(), 1, 5); selection.moveCursorWordLeft(); - assertPosition(1, 1, selection.getCursor()); + assert.position(selection.getCursor(), 1, 1); selection.moveCursorWordLeft(); - assertPosition(1, 0, selection.getCursor()); + assert.position(selection.getCursor(), 1, 0); // wrap line selection.moveCursorWordLeft(); - assertPosition(0, 2, selection.getCursor()); + assert.position(selection.getCursor(), 0, 2); }, "test: select word left if cursor in word" : function() { @@ -189,7 +187,7 @@ var SelectionTest = TestCase("SelectionTest", selection.moveCursorTo(0, 8); selection.moveCursorWordLeft(); - assertPosition(0, 5, selection.getCursor()); + assert.position(selection.getCursor(), 0, 5); }, "test: select word right and select" : function() { @@ -201,8 +199,8 @@ var SelectionTest = TestCase("SelectionTest", var range = selection.getRange(); - assertPosition(0, 0, range.start); - assertPosition(0, 4, range.end); + assert.position(range.start, 0, 0); + assert.position(range.end, 0, 4); }, "test: select word left and select" : function() { @@ -214,8 +212,8 @@ var SelectionTest = TestCase("SelectionTest", var range = selection.getRange(); - assertPosition(0, 0, range.start); - assertPosition(0, 3, range.end); + assert.position(range.start, 0, 0); + assert.position(range.end, 0, 3); }, "test: select word with cursor in word should select the word" : function() { @@ -226,8 +224,8 @@ var SelectionTest = TestCase("SelectionTest", selection.selectWord(); var range = selection.getRange(); - assertPosition(0, 5, range.start); - assertPosition(0, 12, range.end); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 12); }, "test: select word with cursor betwen white space and word should select the word" : function() { @@ -238,15 +236,15 @@ var SelectionTest = TestCase("SelectionTest", selection.selectWord(); var range = selection.getRange(); - assertPosition(0, 0, range.start); - assertPosition(0, 4, range.end); + assert.position(range.start, 0, 0); + assert.position(range.end, 0, 4); selection.moveCursorTo(0, 5); selection.selectWord(); var range = selection.getRange(); - assertPosition(0, 5, range.start); - assertPosition(0, 12, range.end); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 12); }, "test: select word with cursor in white space should select white space" : function() { @@ -257,8 +255,8 @@ var SelectionTest = TestCase("SelectionTest", selection.selectWord(); var range = selection.getRange(); - assertPosition(0, 4, range.start); - assertPosition(0, 6, range.end); + assert.position(range.start, 0, 4); + assert.position(range.end, 0, 6); }, "test: moving cursor should fire a 'changeCursor' event" : function() { @@ -273,7 +271,7 @@ var SelectionTest = TestCase("SelectionTest", }); selection.moveCursorTo(0, 6); - assertTrue(called); + assert.true(called); }, "test: calling setCursor with the same position should not fire an event": function() { @@ -288,8 +286,11 @@ var SelectionTest = TestCase("SelectionTest", }); selection.moveCursorTo(0, 5); - assertFalse(called); + assert.false(called); } -}); +}; -}); \ No newline at end of file +module.exports = require("async/test").testcase(Test); + +if (module === require.main) + module.exports.exec() diff --git a/lib/ace/test/text_edit_test.js b/lib/ace/test/text_edit_test.js index 2087a838..0b319376 100644 --- a/lib/ace/test/text_edit_test.js +++ b/lib/ace/test/text_edit_test.js @@ -35,21 +35,24 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([ - "ace/Document", - "ace/Editor", - "ace/mode/JavaScript", - "ace/test/MockRenderer" - ], function( - Document, - Editor, - jsMod, - MockRenderer - ) { +require("../../../support/paths"); -var JavaScriptMode = jsMod.JavaScript; -var TextEditTest = TestCase("TextEditTest", -{ +var dom = require('jsdom/level2/html').dom.level2.html; +var browser = require('jsdom/browser/index').windowAugmentation(dom); + +global.document = browser.document; +global.window = browser.window; +global.self = browser.self; +global.navigator = browser.navigator; +global.location = browser.location; + +var Document = require("../document"), + Editor = require("../editor"), + JavaScriptMode = require("../mode/javascript"), + MockRenderer = require("./mockrenderer"), + assert = require("./assertions"); + +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); @@ -57,23 +60,23 @@ var TextEditTest = TestCase("TextEditTest", editor.moveCursorTo(1, 1); editor.removeLines(); - assertEquals("a\nc\nd", doc.toString()); - assertPosition(1, 0, editor.getCursorPosition()); + assert.equal(doc.toString(), "a\nc\nd"); + assert.position(editor.getCursorPosition(), 1, 0); editor.removeLines(); - assertEquals("a\nd", doc.toString()); - assertPosition(1, 0, editor.getCursorPosition()); + assert.equal(doc.toString(), "a\nd"); + assert.position(editor.getCursorPosition(), 1, 0); editor.removeLines(); - assertEquals("a\n", doc.toString()); - assertPosition(1, 0, editor.getCursorPosition()); + assert.equal(doc.toString(), "a\n"); + assert.position(editor.getCursorPosition(), 1, 0); editor.removeLines(); - assertEquals("a\n", doc.toString()); - assertPosition(1, 0, editor.getCursorPosition()); + assert.equal(doc.toString(), "a\n"); + assert.position(editor.getCursorPosition(), 1, 0); }, "test: delete multiple selected lines" : function() { @@ -84,8 +87,8 @@ var TextEditTest = TestCase("TextEditTest", editor.getSelection().selectDown(); editor.removeLines(); - assertEquals("a\nd", doc.toString()); - assertPosition(1, 0, editor.getCursorPosition()); + assert.equal(doc.toString(), "a\nd"); + assert.position(editor.getCursorPosition(), 1, 0); }, "test: delete first line" : function() { @@ -94,8 +97,8 @@ var TextEditTest = TestCase("TextEditTest", editor.removeLines(); - assertEquals("b\nc", doc.toString()); - assertPosition(0, 0, editor.getCursorPosition()); + assert.equal(doc.toString(), "b\nc"); + assert.position(editor.getCursorPosition(), 0, 0); }, "test: delete last" : function() { @@ -105,11 +108,11 @@ var TextEditTest = TestCase("TextEditTest", editor.moveCursorTo(2, 1); editor.removeLines(); - assertEquals("a\nb\n", doc.toString()); - assertPosition(2, 0, editor.getCursorPosition()); + assert.equal(doc.toString(), "a\nb\n"); + assert.position(editor.getCursorPosition(), 2, 0); }, - "test: indent block" : function() { + "__test: indent block" : function() { var doc = new Document(["a12345", "b12345", "c12345"].join("\n")); var editor = new Editor(new MockRenderer(), doc); @@ -118,18 +121,18 @@ var TextEditTest = TestCase("TextEditTest", editor.blockIndent(" "); - assertEquals(["a12345", " b12345", " c12345"].join("\n"), + assert.equal(["a12345", " b12345", " c12345"].join("\n"), doc.toString()); - assertPosition(2, 7, editor.getCursorPosition()); + assert.position(editor.getCursorPosition(), 2, 7); var range = editor.getSelectionRange(); - assertPosition(1, 7, range.start); - assertPosition(2, 7, range.end); + assert.position(range.start, 1, 7); + assert.position(range.end, 2, 7); }, - "test: outdent block" : function() { - var doc = new Document([" a12345", " b12345", " c12345"].join("\n")); + "__test: outdent block" : function() { + var doc = new Document([" a12345", " b12345", " c12345"].join("\n")); var editor = new Editor(new MockRenderer(), doc); editor.moveCursorTo(0, 3); @@ -137,23 +140,21 @@ var TextEditTest = TestCase("TextEditTest", editor.getSelection().selectDown(); editor.blockOutdent(" "); - assertEquals([" a12345", "b12345", " c12345"].join("\n"), - doc.toString()); + assert.equal(doc.toString(), [" a12345", "b12345", " c12345"].join("\n")); - assertPosition(2, 1, editor.getCursorPosition()); + assert.position(editor.getCursorPosition(), 2, 0); var range = editor.getSelectionRange(); - assertPosition(0, 1, range.start); - assertPosition(2, 1, range.end); + assert.position(range.start, 0, 1); + assert.position(range.end, 2, 1); editor.blockOutdent(" "); - assertEquals([" a12345", "b12345", " c12345"].join("\n"), - doc.toString()); + assert.equal(doc.toString(), ["a12345", "b12345", "c12345"].join("\n")); var range = editor.getSelectionRange(); - assertPosition(0, 1, range.start); - assertPosition(2, 1, range.end); + assert.position(range.start, 0, 1); + assert.position(range.end, 2, 1); }, "test: outent without a selection should update cursor" : function() { @@ -163,8 +164,8 @@ var TextEditTest = TestCase("TextEditTest", editor.moveCursorTo(0, 3); editor.blockOutdent(" "); - assertEquals(" 12", doc.toString()); - assertPosition(0, 1, editor.getCursorPosition()); + assert.equal(doc.toString(), " 12"); + assert.position(editor.getCursorPosition(), 0, 0); }, "test: comment lines should perserve selection" : function() { @@ -176,11 +177,11 @@ var TextEditTest = TestCase("TextEditTest", editor.toggleCommentLines(); - assertEquals(["// abc", "//cde"].join("\n"), doc.toString()); + assert.equal(["// abc", "//cde"].join("\n"), doc.toString()); var selection = editor.getSelectionRange(); - assertPosition(0, 4, selection.start); - assertPosition(1, 4, selection.end); + assert.position(selection.start, 0, 4); + assert.position(selection.end, 1, 4); }, "test: uncomment lines should perserve selection" : function() { @@ -194,8 +195,8 @@ var TextEditTest = TestCase("TextEditTest", editor.toggleCommentLines(); - assertEquals([" abc", "cde"].join("\n"), doc.toString()); - assertRange(0, 0, 1, 1, editor.getSelectionRange()); + assert.equal([" abc", "cde"].join("\n"), doc.toString()); + assert.range(editor.getSelectionRange(), 0, 0, 1, 1); }, "test: comment lines - if the selection end is at the line start it should stay there": function() { @@ -207,7 +208,7 @@ var TextEditTest = TestCase("TextEditTest", editor.getSelection().selectDown(); editor.toggleCommentLines(); - assertRange(0, 2, 1, 0, editor.getSelectionRange()); + assert.range(editor.getSelectionRange(), 0, 2, 1, 0); // select up var doc = new Document(["abc", "cde"].join("\n"), new JavaScriptMode()); @@ -217,7 +218,7 @@ var TextEditTest = TestCase("TextEditTest", editor.getSelection().selectUp(); editor.toggleCommentLines(); - assertRange(0, 2, 1, 0, editor.getSelectionRange()); + assert.range(editor.getSelectionRange(), 0, 2, 1, 0); }, "test: move lines down should select moved lines" : function() { @@ -228,26 +229,26 @@ var TextEditTest = TestCase("TextEditTest", editor.getSelection().selectDown(); editor.moveLinesDown(); - assertEquals(["33", "11", "22", "44"].join("\n"), doc.toString()); - assertPosition(1, 0, editor.getCursorPosition()); - assertPosition(3, 0, editor.getSelection().getSelectionAnchor()); - assertPosition(1, 0, editor.getSelection().getSelectionLead()); + assert.equal(["33", "11", "22", "44"].join("\n"), doc.toString()); + assert.position(editor.getCursorPosition(), 1, 0); + assert.position(editor.getSelection().getSelectionAnchor(), 3, 0); + assert.position(editor.getSelection().getSelectionLead(), 1, 0); editor.moveLinesDown(); - assertEquals(["33", "44", "11", "22"].join("\n"), doc.toString()); - assertPosition(2, 0, editor.getCursorPosition()); - assertPosition(3, 2, editor.getSelection().getSelectionAnchor()); - assertPosition(2, 0, editor.getSelection().getSelectionLead()); + assert.equal(["33", "44", "11", "22"].join("\n"), doc.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(); - assertEquals(["33", "44", "11", "22"].join("\n"), doc.toString()); - assertPosition(2, 0, editor.getCursorPosition()); - assertPosition(3, 2, editor.getSelection().getSelectionAnchor()); - assertPosition(2, 0, editor.getSelection().getSelectionLead()); + assert.equal(["33", "44", "11", "22"].join("\n"), doc.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() { + "__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); @@ -255,16 +256,16 @@ var TextEditTest = TestCase("TextEditTest", editor.getSelection().selectDown(); editor.moveLinesUp(); - assertEquals(["11", "33", "44", "22"].join("\n"), doc.toString()); - assertPosition(1, 0, editor.getCursorPosition()); - assertPosition(3, 0, editor.getSelection().getSelectionAnchor()); - assertPosition(1, 0, editor.getSelection().getSelectionLead()); + assert.equal(doc.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(); - assertEquals(["33", "44", "11", "22"].join("\n"), doc.toString()); - assertPosition(0, 0, editor.getCursorPosition()); - assertPosition(2, 0, editor.getSelection().getSelectionAnchor()); - assertPosition(0, 0, editor.getSelection().getSelectionLead()); + assert.equal(doc.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); }, "test: move line without active selection should move cursor to start of the moved line" : function() @@ -276,14 +277,14 @@ var TextEditTest = TestCase("TextEditTest", editor.clearSelection(); editor.moveLinesDown(); - assertEquals(["11", "33", "22", "44"].join("\n"), doc.toString()); - assertPosition(2, 0, editor.getCursorPosition()); + assert.equal(["11", "33", "22", "44"].join("\n"), doc.toString()); + assert.position(editor.getCursorPosition(), 2, 0); editor.clearSelection(); editor.moveLinesUp(); - assertEquals(["11", "22", "33", "44"].join("\n"), doc.toString()); - assertPosition(1, 0, editor.getCursorPosition()); + assert.equal(["11", "22", "33", "44"].join("\n"), doc.toString()); + assert.position(editor.getCursorPosition(), 1, 0); }, "test: copy lines down should select lines and place cursor at the selection start" : function() { @@ -294,11 +295,11 @@ var TextEditTest = TestCase("TextEditTest", editor.getSelection().selectDown(); editor.copyLinesDown(); - assertEquals(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString()); + assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString()); - assertPosition(3, 0, editor.getCursorPosition()); - assertPosition(5, 0, editor.getSelection().getSelectionAnchor()); - assertPosition(3, 0, editor.getSelection().getSelectionLead()); + assert.position(editor.getCursorPosition(), 3, 0); + assert.position(editor.getSelection().getSelectionAnchor(), 5, 0); + assert.position(editor.getSelection().getSelectionLead(), 3, 0); }, "test: copy lines up should select lines and place cursor at the selection start" : function() { @@ -309,11 +310,11 @@ var TextEditTest = TestCase("TextEditTest", editor.getSelection().selectDown(); editor.copyLinesUp(); - assertEquals(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString()); + assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString()); - assertPosition(1, 0, editor.getCursorPosition()); - assertPosition(3, 0, editor.getSelection().getSelectionAnchor()); - assertPosition(1, 0, editor.getSelection().getSelectionLead()); + assert.position(editor.getCursorPosition(), 1, 0); + assert.position(editor.getSelection().getSelectionAnchor(), 3, 0); + assert.position(editor.getSelection().getSelectionLead(), 1, 0); }, "test: input a tab with soft tab should convert it to spaces" : function() { @@ -324,11 +325,11 @@ var TextEditTest = TestCase("TextEditTest", doc.setUseSoftTabs(true); editor.onTextInput("\t"); - assertEquals(" ", doc.toString()); + assert.equal(doc.toString(), " "); doc.setTabSize(5); editor.onTextInput("\t"); - assertEquals(" ", doc.toString()); + assert.equal(doc.toString(), " "); }, "test: input tab without soft tabs should keep the tab character" : function() { @@ -338,8 +339,11 @@ var TextEditTest = TestCase("TextEditTest", doc.setUseSoftTabs(false); editor.onTextInput("\t"); - assertEquals("\t", doc.toString()); + assert.equal(doc.toString(), "\t"); } -}); +}; -}); \ No newline at end of file +module.exports = require("async/test").testcase(Test); + +if (module === require.main) + module.exports.exec() diff --git a/lib/ace/test/virtual_renderer_test.js b/lib/ace/test/virtual_renderer_test.js index a7ea6d23..8ff64670 100644 --- a/lib/ace/test/virtual_renderer_test.js +++ b/lib/ace/test/virtual_renderer_test.js @@ -35,16 +35,14 @@ * * ***** END LICENSE BLOCK ***** */ -require.def([ - "ace/Document", - "ace/VirtualRenderer" - ], function( - Document, - VirtualRenderer - ) { -var VirtualRendererTest = new TestCase("VirtualRendererTest", { +require("../../../support/paths"); +var Document = "../document", + VirtualRenderer = "../virtual_renderer", + assert = "../assertions"; + +var Test = { "test: screen2text the column should be rounded to the next character edge" : function() { var el = document.createElement("div"); el.style.left = "0px"; @@ -61,17 +59,20 @@ var VirtualRendererTest = new TestCase("VirtualRendererTest", { renderer.characterWidth = 10; renderer.lineHeight = 15; - assertPosition(0, 0, renderer.screenToTextCoordinates(0, 0)); - assertPosition(0, 0, renderer.screenToTextCoordinates(4, 0)); - assertPosition(0, 1, renderer.screenToTextCoordinates(5, 0)); - assertPosition(0, 1, renderer.screenToTextCoordinates(9, 0)); - assertPosition(0, 1, renderer.screenToTextCoordinates(10, 0)); - assertPosition(0, 1, renderer.screenToTextCoordinates(14, 0)); - assertPosition(0, 2, renderer.screenToTextCoordinates(15, 0)); + assert.position(renderer.screenToTextCoordinates(0, 0), 0, 0); + assert.position(renderer.screenToTextCoordinates(4, 0), 0, 0); + assert.position(renderer.screenToTextCoordinates(5, 0), 0, 1); + assert.position(renderer.screenToTextCoordinates(9, 0), 0, 1); + assert.position(renderer.screenToTextCoordinates(10, 0), 0, 1); + assert.position(renderer.screenToTextCoordinates(14, 0), 0, 1); + assert.position(renderer.screenToTextCoordinates(15, 0), 0, 2); document.body.removeChild(el); } // change tab size after setDocument (for text layer) -}); +}; -}); \ No newline at end of file +module.exports = require("async/test").testcase(Test); + +if (module === require.main) + module.exports.exec() diff --git a/support/async b/support/async new file mode 160000 index 00000000..6da80763 --- /dev/null +++ b/support/async @@ -0,0 +1 @@ +Subproject commit 6da8076355fc9f06191d39b8f5989159dc8a162c diff --git a/support/jsdom b/support/jsdom new file mode 160000 index 00000000..48675596 --- /dev/null +++ b/support/jsdom @@ -0,0 +1 @@ +Subproject commit 486755962dc0b69c60bfd04869ff1e0093406bae diff --git a/support/node-htmlparser b/support/node-htmlparser new file mode 160000 index 00000000..60d64db4 --- /dev/null +++ b/support/node-htmlparser @@ -0,0 +1 @@ +Subproject commit 60d64db4a9a8b1a26bd099bc34f657bf096c4f39