From bc027e927ac64fcb918bf6e37feab0ed80776e6b Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Fri, 8 Apr 2011 10:28:18 +0200 Subject: [PATCH] Refactor unit tests: - move tests next to implementation files - all tests run standalone in node - all tests run in the browser --- lib/ace/{test => }/anchor_test.js | 16 +-- lib/ace/{test => }/document_test.js | 22 +++-- lib/ace/{test => }/edit_session_test.js | 24 ++--- ...test.js => editor_change_document_test.js} | 25 ++--- ...=> editor_highlight_selected_word_test.js} | 24 ++--- ...tion_test.js => editor_navigation_test.js} | 21 ++-- ..._edit_test.js => editor_text_edit_test.js} | 25 ++--- lib/ace/{test => }/mode/css_test.js | 12 ++- lib/ace/{test => }/mode/css_tokenizer_test.js | 13 +-- lib/ace/{test => }/mode/html_test.js | 12 ++- .../{test => }/mode/html_tokenizer_test.js | 12 ++- lib/ace/{test => }/mode/javascript_test.js | 12 ++- .../mode/javascript_tokenizer_test.js | 12 ++- lib/ace/{test => }/mode/text_test.js | 12 ++- lib/ace/{test => }/mode/xml_test.js | 12 ++- lib/ace/{test => }/mode/xml_tokenizer_test.js | 11 ++- lib/ace/{test => }/range_test.js | 16 +-- lib/ace/{test => }/search_test.js | 18 ++-- lib/ace/{test => }/selection_test.js | 16 +-- lib/ace/test/all.js | 27 +---- lib/ace/test/all_browser.js | 52 +++++----- lib/ace/test/asyncjs/async.js | 40 ++++++++ lib/ace/test/event_emitter_test.js | 19 ++-- lib/ace/{test => }/virtual_renderer_test.js | 25 +++-- support/requireJS-node.js | 98 ++++++++++--------- 25 files changed, 330 insertions(+), 246 deletions(-) rename lib/ace/{test => }/anchor_test.js (97%) rename lib/ace/{test => }/document_test.js (96%) rename lib/ace/{test => }/edit_session_test.js (96%) rename lib/ace/{test/change_document_test.js => editor_change_document_test.js} (91%) rename lib/ace/{test/highlight_selected_word_test.js => editor_highlight_selected_word_test.js} (94%) rename lib/ace/{test/navigation_test.js => editor_navigation_test.js} (93%) rename lib/ace/{test/text_edit_test.js => editor_text_edit_test.js} (97%) rename lib/ace/{test => }/mode/css_test.js (94%) rename lib/ace/{test => }/mode/css_tokenizer_test.js (95%) rename lib/ace/{test => }/mode/html_test.js (94%) rename lib/ace/{test => }/mode/html_tokenizer_test.js (94%) rename lib/ace/{test => }/mode/javascript_test.js (97%) rename lib/ace/{test => }/mode/javascript_tokenizer_test.js (96%) rename lib/ace/{test => }/mode/text_test.js (93%) rename lib/ace/{test => }/mode/xml_test.js (94%) rename lib/ace/{test => }/mode/xml_tokenizer_test.js (93%) rename lib/ace/{test => }/range_test.js (95%) rename lib/ace/{test => }/search_test.js (97%) rename lib/ace/{test => }/selection_test.js (97%) rename lib/ace/{test => }/virtual_renderer_test.js (85%) diff --git a/lib/ace/test/anchor_test.js b/lib/ace/anchor_test.js similarity index 97% rename from lib/ace/test/anchor_test.js rename to lib/ace/anchor_test.js index adeed67f..e5604b1d 100644 --- a/lib/ace/test/anchor_test.js +++ b/lib/ace/anchor_test.js @@ -35,15 +35,18 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); +} + define(function(require, exports, module) { var Document = require("ace/document").Document; var Anchor = require("ace/anchor").Anchor; var Range = require("ace/range").Range; -var assert = require("./assertions"); -var async = require("asyncjs"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { "test create anchor" : function() { var doc = new Document("juhu"); @@ -173,11 +176,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); - }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec() -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/document_test.js b/lib/ace/document_test.js similarity index 96% rename from lib/ace/test/document_test.js rename to lib/ace/document_test.js index ab4447a6..0047236e 100644 --- a/lib/ace/test/document_test.js +++ b/lib/ace/document_test.js @@ -36,14 +36,19 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); + require("ace/test/mockdom"); +} + define(function(require, exports, module) { -var Document = require("../document").Document, - Range = require("../range").Range, - assert = require("./assertions"), - async = require("asyncjs"); +var Document = require("ace/document").Document; +var Range = require("ace/range").Range; +var assert = require("ace/test/assertions"); +var async = require("asyncjs"); -var Test = { +module.exports = { "test: insert text in line" : function() { var doc = new Document(["12", "34"]); @@ -302,11 +307,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); - }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec() -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/edit_session_test.js b/lib/ace/edit_session_test.js similarity index 96% rename from lib/ace/test/edit_session_test.js rename to lib/ace/edit_session_test.js index 0e6f4663..948802a3 100644 --- a/lib/ace/test/edit_session_test.js +++ b/lib/ace/edit_session_test.js @@ -35,17 +35,21 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); + require("ace/test/mockdom"); +} + define(function(require, exports, module) { -var EditSession = require("ace/edit_session").EditSession, - Editor = require("../editor").Editor, - UndoManager = require("ace/undomanager").UndoManager, - MockRenderer = require("./mockrenderer"), - Range = require("ace/range").Range, - assert = require("./assertions"), - async = require("asyncjs"); +var EditSession = require("ace/edit_session").EditSession; +var Editor = require("ace/editor").Editor; +var UndoManager = require("ace/undomanager").UndoManager; +var MockRenderer = require("ace/test/mockrenderer"); +var Range = require("ace/range").Range; +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { "test: find matching opening bracket" : function() { var session = new EditSession(["(()(", "())))"]); @@ -352,10 +356,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec() + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/change_document_test.js b/lib/ace/editor_change_document_test.js similarity index 91% rename from lib/ace/test/change_document_test.js rename to lib/ace/editor_change_document_test.js index 79f989d3..2ca63744 100644 --- a/lib/ace/test/change_document_test.js +++ b/lib/ace/editor_change_document_test.js @@ -35,16 +35,21 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); + require("ace/test/mockdom"); +} + define(function(require, exports, module) { -var EditSession = require("../edit_session").EditSession, - Editor = require("../editor").Editor, - Text = require("../mode/text").Mode, - JavaScriptMode = require("../mode/javascript").Mode, - MockRenderer = require("./mockrenderer"), - assert = require("./assertions"); +var EditSession = require("ace/edit_session").EditSession; +var Editor = require("ace/editor").Editor; +var Text = require("ace/mode/text").Mode; +var JavaScriptMode = require("ace/mode/javascript").Mode; +var MockRenderer = require("ace/test/mockrenderer"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function(next) { this.session1 = new EditSession(["abc", "def"]); @@ -153,10 +158,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec() -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/highlight_selected_word_test.js b/lib/ace/editor_highlight_selected_word_test.js similarity index 94% rename from lib/ace/test/highlight_selected_word_test.js rename to lib/ace/editor_highlight_selected_word_test.js index 8dcd39d1..d3bbbca1 100644 --- a/lib/ace/test/highlight_selected_word_test.js +++ b/lib/ace/editor_highlight_selected_word_test.js @@ -36,14 +36,18 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); + require("ace/test/mockdom"); +} + define(function(require, exports, module) { -var EditSession = require("ace/edit_session").EditSession, - Editor = require("../editor").Editor, - MockRenderer = require("./mockrenderer"), - TextMode = require("ace/mode/text").Mode, - assert = require("./assertions"), - async = require("asyncjs"); +var EditSession = require("ace/edit_session").EditSession; +var Editor = require("ace/editor").Editor; +var MockRenderer = require("ace/test/mockrenderer"); +var TextMode = require("ace/mode/text").Mode; +var assert = require("ace/test/assertions"); var lipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + "Mauris at arcu mi, eu lobortis mauris. Quisque ut libero eget " + @@ -66,7 +70,7 @@ var lipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + "libero vehicula odio, eget bibendum mauris velit eu lorem.\n" + "consectetur"; -var Test = { +module.exports = { setUp: function(next) { this.session = new EditSession(lipsum); this.editor = new Editor(new MockRenderer(), this.session); @@ -204,10 +208,8 @@ var Test = { }, }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec() -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/navigation_test.js b/lib/ace/editor_navigation_test.js similarity index 93% rename from lib/ace/test/navigation_test.js rename to lib/ace/editor_navigation_test.js index 3174baaa..9d0a92c5 100644 --- a/lib/ace/test/navigation_test.js +++ b/lib/ace/editor_navigation_test.js @@ -35,14 +35,19 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); + require("ace/test/mockdom"); +} + define(function(require, exports, module) { -var EditSession = require("ace/edit_session").EditSession, - Editor = require("../editor").Editor, - MockRenderer = require("./mockrenderer"), - assert = require("./assertions"); +var EditSession = require("ace/edit_session").EditSession; +var Editor = require("ace/editor").Editor; +var MockRenderer = require("ace/test/mockrenderer"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { createEditSession : function(rows, cols) { var line = new Array(cols + 1).join("a"); var text = new Array(rows).join(line + "\n") + line; @@ -148,10 +153,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test) }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/text_edit_test.js b/lib/ace/editor_text_edit_test.js similarity index 97% rename from lib/ace/test/text_edit_test.js rename to lib/ace/editor_text_edit_test.js index 5bdb49ce..af5134b7 100644 --- a/lib/ace/test/text_edit_test.js +++ b/lib/ace/editor_text_edit_test.js @@ -35,16 +35,21 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); + require("ace/test/mockdom"); +} + define(function(require, exports, module) { -var EditSession = require("ace/edit_session").EditSession, - Editor = require("../editor").Editor, - JavaScriptMode = require("../mode/javascript").Mode, - UndoManager = require("../undomanager").UndoManager, - MockRenderer = require("./mockrenderer"), - assert = require("./assertions"); +var EditSession = require("ace/edit_session").EditSession; +var Editor = require("ace/editor").Editor; +var JavaScriptMode = require("ace/mode/javascript").Mode; +var UndoManager = require("ace/undomanager").UndoManager; +var MockRenderer = require("ace/test/mockrenderer"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { "test: delete line from the middle" : function() { var session = new EditSession(["a", "b", "c", "d"].join("\n")); var editor = new Editor(new MockRenderer(), session); @@ -487,10 +492,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/mode/css_test.js b/lib/ace/mode/css_test.js similarity index 94% rename from lib/ace/test/mode/css_test.js rename to lib/ace/mode/css_test.js index e5aa099e..aad11e9c 100644 --- a/lib/ace/test/mode/css_test.js +++ b/lib/ace/mode/css_test.js @@ -35,13 +35,17 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} + define(function(require, exports, module) { var EditSession = require("ace/edit_session").EditSession; var CssMode = require("ace/mode/css").Mode; -var assert = require("../assertions"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function() { this.mode = new CssMode(); }, @@ -70,10 +74,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec() + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/mode/css_tokenizer_test.js b/lib/ace/mode/css_tokenizer_test.js similarity index 95% rename from lib/ace/test/mode/css_tokenizer_test.js rename to lib/ace/mode/css_tokenizer_test.js index dbad83c8..551d4007 100644 --- a/lib/ace/test/mode/css_tokenizer_test.js +++ b/lib/ace/mode/css_tokenizer_test.js @@ -35,12 +35,16 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} + define(function(require, exports, module) { var CssMode = require("ace/mode/css").Mode; -var assert = require("../assertions"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function() { this.tokenizer = new CssMode().getTokenizer(); }, @@ -84,11 +88,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test, "css tokenizer"); - }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec() + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/mode/html_test.js b/lib/ace/mode/html_test.js similarity index 94% rename from lib/ace/test/mode/html_test.js rename to lib/ace/mode/html_test.js index c614b6b8..777c4882 100644 --- a/lib/ace/test/mode/html_test.js +++ b/lib/ace/mode/html_test.js @@ -35,14 +35,18 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} + define(function(require, exports, module) { var EditSession = require("ace/edit_session").EditSession; var Range = require("ace/range").Range; var HtmlMode = require("ace/mode/html").Mode; -var assert = require("../assertions"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function() { this.mode = new HtmlMode(); }, @@ -62,10 +66,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/mode/html_tokenizer_test.js b/lib/ace/mode/html_tokenizer_test.js similarity index 94% rename from lib/ace/test/mode/html_tokenizer_test.js rename to lib/ace/mode/html_tokenizer_test.js index 14e697ba..084f9642 100644 --- a/lib/ace/test/mode/html_tokenizer_test.js +++ b/lib/ace/mode/html_tokenizer_test.js @@ -35,12 +35,16 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} + define(function(require, exports, module) { var HtmlMode = require("ace/mode/html").Mode; -var assert = require("../assertions"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function() { this.tokenizer = new HtmlMode().getTokenizer(); }, @@ -65,10 +69,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/mode/javascript_test.js b/lib/ace/mode/javascript_test.js similarity index 97% rename from lib/ace/test/mode/javascript_test.js rename to lib/ace/mode/javascript_test.js index 316ea910..7966d730 100644 --- a/lib/ace/test/mode/javascript_test.js +++ b/lib/ace/mode/javascript_test.js @@ -35,14 +35,18 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} + define(function(require, exports, module) { var EditSession = require("ace/edit_session").EditSession; var Tokenizer = require("ace/tokenizer").Tokenizer; var JavaScriptMode = require("ace/mode/javascript").Mode; -var assert = require("../assertions"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function() { this.mode = new JavaScriptMode(); }, @@ -144,10 +148,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/mode/javascript_tokenizer_test.js b/lib/ace/mode/javascript_tokenizer_test.js similarity index 96% rename from lib/ace/test/mode/javascript_tokenizer_test.js rename to lib/ace/mode/javascript_tokenizer_test.js index c4aa922a..91656799 100644 --- a/lib/ace/test/mode/javascript_tokenizer_test.js +++ b/lib/ace/mode/javascript_tokenizer_test.js @@ -35,12 +35,16 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} + define(function(require, exports, module) { var JavaScriptMode = require("ace/mode/javascript").Mode; -var assert = require("../assertions"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function() { this.tokenizer = new JavaScriptMode().getTokenizer(); }, @@ -106,10 +110,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/mode/text_test.js b/lib/ace/mode/text_test.js similarity index 93% rename from lib/ace/test/mode/text_test.js rename to lib/ace/mode/text_test.js index 1284d97d..ab7f621d 100644 --- a/lib/ace/test/mode/text_test.js +++ b/lib/ace/mode/text_test.js @@ -35,13 +35,17 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} + define(function(require, exports, module) { var EditSession = require("ace/edit_session").EditSession; var TextMode = require("ace/mode/text").Mode; -var assert = require("../assertions"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function() { this.mode = new TextMode(); }, @@ -59,10 +63,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/mode/xml_test.js b/lib/ace/mode/xml_test.js similarity index 94% rename from lib/ace/test/mode/xml_test.js rename to lib/ace/mode/xml_test.js index c5e7810a..e0abbe2c 100644 --- a/lib/ace/test/mode/xml_test.js +++ b/lib/ace/mode/xml_test.js @@ -35,14 +35,18 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} + define(function(require, exports, module) { var EditSession = require("ace/edit_session").EditSession; var Tokenizer = require("ace/tokenizer").Tokenizer; var XmlMode = require("ace/mode/xml").Mode; -var assert = require("../assertions"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function() { this.mode = new XmlMode(); }, @@ -70,10 +74,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/mode/xml_tokenizer_test.js b/lib/ace/mode/xml_tokenizer_test.js similarity index 93% rename from lib/ace/test/mode/xml_tokenizer_test.js rename to lib/ace/mode/xml_tokenizer_test.js index dcf22b33..b90e0bb6 100644 --- a/lib/ace/test/mode/xml_tokenizer_test.js +++ b/lib/ace/mode/xml_tokenizer_test.js @@ -35,13 +35,16 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} define(function(require, exports, module) { var XmlMode = require("ace/mode/xml").Mode; -var assert = require("../assertions"); +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { setUp : function() { this.tokenizer = new XmlMode().getTokenizer(); }, @@ -60,10 +63,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); + require("asyncjs/test").testcase(module.exports).exec() } \ No newline at end of file diff --git a/lib/ace/test/range_test.js b/lib/ace/range_test.js similarity index 95% rename from lib/ace/test/range_test.js rename to lib/ace/range_test.js index b02b32de..e53cab21 100644 --- a/lib/ace/test/range_test.js +++ b/lib/ace/range_test.js @@ -35,12 +35,16 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); +} + define(function(require, exports, module) { -var Range = require("../range").Range, - assert = require("./assertions"); +var Range = require("ace/range").Range; +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { "test: create range": function() { var range = new Range(1,2,3,4); @@ -161,10 +165,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/search_test.js b/lib/ace/search_test.js similarity index 97% rename from lib/ace/test/search_test.js rename to lib/ace/search_test.js index 0f9c89e9..7507950a 100644 --- a/lib/ace/test/search_test.js +++ b/lib/ace/search_test.js @@ -36,13 +36,17 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); +} + define(function(require, exports, module) { -var EditSession = require("ace/edit_session").EditSession, - Search = require("../search").Search, - assert = require("./assertions"); +var EditSession = require("ace/edit_session").EditSession; +var Search = require("ace/search").Search; +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { "test: configure the search object" : function() { var search = new Search(); search.set({ @@ -390,10 +394,8 @@ var Test = { }, }; -module.exports = require("asyncjs/test").testcase(Test) }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/selection_test.js b/lib/ace/selection_test.js similarity index 97% rename from lib/ace/test/selection_test.js rename to lib/ace/selection_test.js index b94a17db..c72a7cab 100644 --- a/lib/ace/test/selection_test.js +++ b/lib/ace/selection_test.js @@ -35,12 +35,16 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); +} + define(function(require, exports, module) { -var EditSession = require("ace/edit_session").EditSession, - assert = require("./assertions"); +var EditSession = require("ace/edit_session").EditSession; +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { createSession : function(rows, cols) { var line = new Array(cols + 1).join("a"); var text = new Array(rows).join(line + "\n") + line; @@ -326,10 +330,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec() -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/all.js b/lib/ace/test/all.js index 19101373..96cc7b1a 100644 --- a/lib/ace/test/all.js +++ b/lib/ace/test/all.js @@ -37,28 +37,5 @@ require("../../../support/paths"); -require("./mockdom"); -var async = require("asyncjs"); - -async.concat( - require("./anchor_test"), - require("./change_document_test"), - require("./document_test"), - require("./edit_session_test"), - require("./event_emitter_test"), - require("./navigation_test"), - require("./range_test"), - require("./search_test"), - require("./selection_test"), - require("./text_edit_test"), - require("./highlight_selected_word_test"), - require("./mode/css_test"), - require("./mode/css_tokenizer_test"), - require("./mode/html_test"), - require("./mode/html_tokenizer_test"), - require("./mode/javascript_test"), - require("./mode/javascript_tokenizer_test"), - require("./mode/text_test"), - require("./mode/xml_test"), - require("./mode/xml_tokenizer_test") -).exec(); +var test = require("asyncjs/test"); +test.walkTestCases(__dirname + "/..").exec() \ No newline at end of file diff --git a/lib/ace/test/all_browser.js b/lib/ace/test/all_browser.js index f3d5638e..7ec7e3f2 100644 --- a/lib/ace/test/all_browser.js +++ b/lib/ace/test/all_browser.js @@ -1,6 +1,7 @@ define(function(require, exports, module) { require("pilot/fixoldbrowsers"); +var AsyncTest = require("asyncjs/test"); var async = require("asyncjs"); var dom = require("pilot/dom"); @@ -8,29 +9,34 @@ var passed = 0 var failed = 0 var log = document.getElementById("log") -async.concat( - require("./anchor_test"), - require("./change_document_test"), - require("./document_test"), - require("./edit_session_test"), - require("./event_emitter_test"), - require("./navigation_test"), - require("./range_test"), - require("./search_test"), - require("./selection_test"), - require("./text_edit_test"), - require("./virtual_renderer_test"), - require("./highlight_selected_word_test"), - require("./mode/css_test"), - require("./mode/css_tokenizer_test"), - require("./mode/html_test"), - require("./mode/html_tokenizer_test"), - require("./mode/javascript_test"), - require("./mode/javascript_tokenizer_test"), - require("./mode/text_test"), - require("./mode/xml_test"), - require("./mode/xml_tokenizer_test") -) +var tests = [ + require("ace/editor_change_document_test"), + require("ace/editor_navigation_test"), + require("ace/editor_highlight_selected_word_test"), + require("ace/editor_text_edit_test"), + require("ace/document_test"), + require("ace/edit_session_test"), + require("ace/test/event_emitter_test"), + require("ace/range_test"), + require("ace/search_test"), + require("ace/selection_test"), + require("ace/virtual_renderer_test"), + require("ace/anchor_test"), + require("ace/mode/css_test"), + require("ace/mode/css_tokenizer_test"), + require("ace/mode/html_test"), + require("ace/mode/html_tokenizer_test"), + require("ace/mode/javascript_test"), + require("ace/mode/javascript_tokenizer_test"), + require("ace/mode/text_test"), + require("ace/mode/xml_test"), + require("ace/mode/xml_tokenizer_test") +] + +async.list(tests) + .expand(function(test) { + return AsyncTest.testcase(test) + }, AsyncTest.TestGenerator) .run() .each(function(test, next) { var node = document.createElement("div"); diff --git a/lib/ace/test/asyncjs/async.js b/lib/ace/test/asyncjs/async.js index 89e49955..c439421b 100644 --- a/lib/ace/test/asyncjs/async.js +++ b/lib/ace/test/asyncjs/async.js @@ -270,6 +270,46 @@ exports.Generator = function(source) { }) } + this.expand = function(inserter, constructor) { + if (!inserter) + return this + + var inserter = makeAsync(1, inserter) + var constructor = constructor || this.constructor + var source = this.source; + var spliced = null; + + return new constructor(function next(callback) { + if (!spliced) { + source.next(function(err, value) { + if (err) + return callback(err) + + inserter(value, function(err, toInsert) { + if (err) + return callback(err) + + spliced = toInsert + next(callback) + }) + + }) + } + else { + spliced.next(function(err, value) { + if (err == STOP) { + spliced = null + return next(callback) + } + else if (err) + return callback(err) + + callback(err, value) + }) + } + }) + } + this.sort = function(compare) { var self = this var arrGen diff --git a/lib/ace/test/event_emitter_test.js b/lib/ace/test/event_emitter_test.js index 19e12596..6b971751 100644 --- a/lib/ace/test/event_emitter_test.js +++ b/lib/ace/test/event_emitter_test.js @@ -35,17 +35,21 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../../support/paths"); +} + define(function(require, exports, module) { -var oop = require("pilot/oop"); - EventEmitter = require("pilot/event_emitter").EventEmitter, - assert = require("./assertions"); +var oop = require("pilot/oop"); +var EventEmitter = require("pilot/event_emitter").EventEmitter; +var assert = require("ace/test/assertions"); var Emitter = function() {}; oop.implement(Emitter.prototype, EventEmitter); -var Test = { +module.exports = { "test: dispatch event with no data" : function() { var emitter = new Emitter(); @@ -60,5 +64,8 @@ var Test = { } }; -module.exports = require("asyncjs/test").testcase(Test) -}); \ No newline at end of file +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/lib/ace/test/virtual_renderer_test.js b/lib/ace/virtual_renderer_test.js similarity index 85% rename from lib/ace/test/virtual_renderer_test.js rename to lib/ace/virtual_renderer_test.js index 0d2304d3..9101559d 100644 --- a/lib/ace/test/virtual_renderer_test.js +++ b/lib/ace/virtual_renderer_test.js @@ -35,15 +35,26 @@ * * ***** END LICENSE BLOCK ***** */ +if (typeof process !== "undefined") { + require("../../support/paths"); + require("ace/test/mockdom"); +} + define(function(require, exports, module) { -var EditSession = require("ace/edit_session").EditSession, - VirtualRenderer = require("../virtual_renderer").VirtualRenderer, - assert = require("./assertions"); +var EditSession = require("ace/edit_session").EditSession; +var VirtualRenderer = require("ace/virtual_renderer").VirtualRenderer; +var assert = require("ace/test/assertions"); -var Test = { +module.exports = { "test: screen2text the column should be rounded to the next character edge" : function() { var el = document.createElement("div"); + + if (!el.getBoundingClientRect) { + console.log("Skipping test: This test only runs in the browser"); + return; + } + el.style.left = "0px"; el.style.top = "0px"; el.style.width = "100px"; @@ -72,10 +83,8 @@ var Test = { // change tab size after setDocument (for text layer) }; -module.exports = require("asyncjs/test").testcase(Test); }); if (typeof module !== "undefined" && module === require.main) { - require("../../../support/paths"); - exports.exec(); -} + require("asyncjs/test").testcase(module.exports).exec() +} \ No newline at end of file diff --git a/support/requireJS-node.js b/support/requireJS-node.js index debb0124..951d2740 100644 --- a/support/requireJS-node.js +++ b/support/requireJS-node.js @@ -1,6 +1,7 @@ var path = require("path"); var fs = require("fs"); -var currentModule, defaultCompile = module.constructor.prototype._compile; +var currentModule +var defaultCompile = module.constructor.prototype._compile; module.constructor.prototype._compile = function(content, filename){ currentModule = this; @@ -15,11 +16,39 @@ module.constructor.prototype._compile = function(content, filename){ var requireModule = module; global.define = function (id, injects, factory) { - if (currentModule == null) { - throw new Error("define() may only be called during module factory instantiation"); - } - + + // infere the module var module = currentModule; + if (!module) { + module = requireModule; + while (module.parent) + module = module.parent; + } + + // parse arguments + if (!factory) { + // two or less arguments + factory = injects; + if (factory) { + // two args + if (typeof id === "string") { + if (id !== module.id) { + throw new Error("Can not assign module to a different id than the current file"); + } + // default injects + injects = []; + } + else{ + // anonymous, deps included + injects = id; + } + } + else { + // only one arg, just the factory + factory = id; + injects = []; + } + } var req = function(relativeId, callback) { if (Array.isArray(relativeId)) { @@ -45,50 +74,29 @@ global.define = function (id, injects, factory) { } else return require(relativeId); }; - if (!factory) { - // two or less arguments - factory = injects; - if (factory) { - // two args - if (typeof id === "string") { - if (id !== module.id) { - throw new Error("Can not assign module to a different id than the current file"); - } - // default injects - injects = []; - } - else{ - // anonymous, deps included - injects = id; - } - } - else { - // only one arg, just the factory - factory = id; - injects = []; - } - } + injects.unshift("require", "exports", "module"); id = module.id; - if (typeof factory !== "function"){ - // we can just provide a plain object - return module.exports = factory; + if (typeof factory !== "function") { + // we can just provide a plain object + return module.exports = factory; } var returned = factory.apply(module.exports, injects.map(function (injection) { - switch (injection) { - // check for CommonJS injection variables - case "require": return req; - case "exports": return module.exports; - case "module": return module; - default: - // a module dependency - return req(injection); - } + switch (injection) { + // check for CommonJS injection variables + case "require": return req; + case "exports": return module.exports; + case "module": return module; + default: + // a module dependency + return req(injection); + } })); - if(returned){ - // since AMD encapsulates a function/callback, it can allow the factory to return the exports. - module.exports = returned; + + if(returned) { + // since AMD encapsulates a function/callback, it can allow the factory to return the exports. + module.exports = returned; } }; @@ -114,8 +122,8 @@ function findModulePath(request) { // check if the file exists and is not a directory var tryFile = function(requestPath) { - try { - var stats = fs.statSync(requestPath); + try { + var stats = fs.statSync(requestPath); if (stats && !stats.isDirectory()) { return requestPath; }