Added more unit tests. Changed the unit test code to be formatted with leading spaces instead of tabs.

This commit is contained in:
dgeorge 2011-10-31 16:08:21 -07:00
commit 017d6dc96e
2 changed files with 197 additions and 144 deletions

View file

@ -80,17 +80,7 @@ module.exports = {
assert.equal(session.findMatchingBracket({row: 1, column: 5}), null); assert.equal(session.findMatchingBracket({row: 1, column: 5}), null);
}, },
"test: find matching opening bracket in JavaScript mode" : function() { "test: find matching closing bracket in Text mode" : function() {
var session = new EditSession(["(()(", "", "())))"], new JavaScriptMode());
assert.position(session.findMatchingBracket({row: 0, column: 3}), 0, 1);
assert.position(session.findMatchingBracket({row: 2, column: 2}), 2, 0);
assert.position(session.findMatchingBracket({row: 2, column: 3}), 0, 3);
assert.position(session.findMatchingBracket({row: 2, column: 4}), 0, 0);
assert.equal(session.findMatchingBracket({row: 2, column: 5}), null);
},
"test: find matching closing bracket" : function() {
var session = new EditSession(["(()(", "())))"]); var session = new EditSession(["(()(", "())))"]);
assert.position(session.findMatchingBracket({row: 1, column: 1}), 1, 1); assert.position(session.findMatchingBracket({row: 1, column: 1}), 1, 1);
@ -101,6 +91,49 @@ module.exports = {
assert.equal(session.findMatchingBracket({row: 0, column: 0}), null); assert.equal(session.findMatchingBracket({row: 0, column: 0}), null);
}, },
"test: find matching opening bracket in JavaScript mode" : function() {
var lines = [
"function foo() {",
" var str = \"{ foo()\";",
" if (debug) {",
" // write str (a string) to the console",
" console.log(str);",
" }",
" str += \" bar() }\";",
"}"
];
var session = new EditSession(lines.join("\n"), new JavaScriptMode());
assert.position(session.findMatchingBracket({row: 0, column: 14}), 0, 12);
assert.position(session.findMatchingBracket({row: 7, column: 1}), 0, 15);
assert.position(session.findMatchingBracket({row: 6, column: 20}), 1, 15);
assert.position(session.findMatchingBracket({row: 1, column: 22}), 1, 20);
assert.position(session.findMatchingBracket({row: 3, column: 31}), 3, 21);
assert.position(session.findMatchingBracket({row: 4, column: 24}), 4, 19);
assert.equal(session.findMatchingBracket({row: 0, column: 1}), null);
},
"test: find matching closing bracket in JavaScript mode" : function() {
var lines = [
"function foo() {",
" var str = \"{ foo()\";",
" if (debug) {",
" // write str (a string) to the console",
" console.log(str);",
" }",
" str += \" bar() }\";",
"}"
];
var session = new EditSession(lines.join("\n"), new JavaScriptMode());
assert.position(session.findMatchingBracket({row: 0, column: 13}), 0, 13);
assert.position(session.findMatchingBracket({row: 0, column: 16}), 7, 0);
assert.position(session.findMatchingBracket({row: 1, column: 16}), 6, 19);
assert.position(session.findMatchingBracket({row: 1, column: 21}), 1, 21);
assert.position(session.findMatchingBracket({row: 3, column: 22}), 3, 30);
assert.position(session.findMatchingBracket({row: 4, column: 20}), 4, 23);
},
"test: match different bracket types" : function() { "test: match different bracket types" : function() {
var session = new EditSession(["({[", ")]}"]); var session = new EditSession(["({[", ")]}"]);

View file

@ -19,7 +19,7 @@
* the Initial Developer. All Rights Reserved. * the Initial Developer. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Fabian Jakobs <fabian AT ajax DOT org> * Fabian Jakobs <fabian AT ajax DOT org>
* *
* Alternatively, the contents of this file may be used under the terms of * Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or * either the GNU General Public License Version 2 or later (the "GPL"), or
@ -36,7 +36,7 @@
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
if (typeof process !== "undefined") { if (typeof process !== "undefined") {
require("../../support/paths"); require("../../support/paths");
} }
define(function(require, exports, module) { define(function(require, exports, module) {
@ -47,152 +47,172 @@ var TokenIterator = require("ace/token_iterator").TokenIterator;
var assert = require("ace/test/assertions"); var assert = require("ace/test/assertions");
module.exports = { module.exports = {
"test: token iterator initialization in JavaScript document" : function() { "test: token iterator initialization in JavaScript document" : function() {
var lines = [ var lines = [
"function foo(items) {", "function foo(items) {",
" for (var i=0; i<items.length; i++) {", " for (var i=0; i<items.length; i++) {",
" alert(items[i] + \"juhu\");", " alert(items[i] + \"juhu\");",
" } // Real Tab.", " } // Real Tab.",
"}" "}"
]; ];
var session = new EditSession(lines.join("\n"), new JavaScriptMode()); var session = new EditSession(lines.join("\n"), new JavaScriptMode());
var iterator = new TokenIterator(session, 0, 0); var iterator = new TokenIterator(session, 0, 0);
assert.equal(iterator.getCurrentToken().value, "function"); assert.equal(iterator.getCurrentToken().value, "function");
assert.equal(iterator.getCurrentTokenRow(), 0); assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 0);
iterator.stepForward();
assert.equal(iterator.getCurrentToken().value, " ");
assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 8);
var iterator = new TokenIterator(session, 0, 4); var iterator = new TokenIterator(session, 0, 4);
assert.equal(iterator.getCurrentToken().value, "function"); assert.equal(iterator.getCurrentToken().value, "function");
assert.equal(iterator.getCurrentTokenRow(), 0); assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 0);
var iterator = new TokenIterator(session, 2, 18); iterator.stepForward();
assert.equal(iterator.getCurrentToken().value, "items"); assert.equal(iterator.getCurrentToken().value, " ");
assert.equal(iterator.getCurrentTokenRow(), 2); assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 14); assert.equal(iterator.getCurrentTokenColumn(), 8);
var iterator = new TokenIterator(session, 4, 0); var iterator = new TokenIterator(session, 2, 18);
assert.equal(iterator.getCurrentToken().value, "}"); assert.equal(iterator.getCurrentToken().value, "items");
assert.equal(iterator.getCurrentTokenRow(), 4); assert.equal(iterator.getCurrentTokenRow(), 2);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 14);
var iterator = new TokenIterator(session, 5, 0); iterator.stepForward();
assert.equal(iterator.getCurrentToken(), null); assert.equal(iterator.getCurrentToken().value, "[");
}, assert.equal(iterator.getCurrentTokenRow(), 2);
assert.equal(iterator.getCurrentTokenColumn(), 19);
var iterator = new TokenIterator(session, 4, 0);
assert.equal(iterator.getCurrentToken().value, "}");
assert.equal(iterator.getCurrentTokenRow(), 4);
assert.equal(iterator.getCurrentTokenColumn(), 0);
iterator.stepBackward();
assert.equal(iterator.getCurrentToken().value, "// Real Tab.");
assert.equal(iterator.getCurrentTokenRow(), 3);
assert.equal(iterator.getCurrentTokenColumn(), 6);
var iterator = new TokenIterator(session, 5, 0);
assert.equal(iterator.getCurrentToken(), null);
},
"test: token iterator initialization in text document" : function() { "test: token iterator initialization in text document" : function() {
var lines = [ var lines = [
"Lorem ipsum dolor sit amet, consectetur adipisicing elit,", "Lorem ipsum dolor sit amet, consectetur adipisicing elit,",
"sed do eiusmod tempor incididunt ut labore et dolore magna", "sed do eiusmod tempor incididunt ut labore et dolore magna",
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation", "aliqua. Ut enim ad minim veniam, quis nostrud exercitation",
"ullamco laboris nisi ut aliquip ex ea commodo consequat." "ullamco laboris nisi ut aliquip ex ea commodo consequat."
]; ];
var session = new EditSession(lines.join("\n")); var session = new EditSession(lines.join("\n"));
var iterator = new TokenIterator(session, 0, 0); var iterator = new TokenIterator(session, 0, 0);
assert.equal(iterator.getCurrentToken().value, lines[0]); assert.equal(iterator.getCurrentToken().value, lines[0]);
assert.equal(iterator.getCurrentTokenRow(), 0); assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 0);
var iterator = new TokenIterator(session, 0, 4); var iterator = new TokenIterator(session, 0, 4);
assert.equal(iterator.getCurrentToken().value, lines[0]); assert.equal(iterator.getCurrentToken().value, lines[0]);
assert.equal(iterator.getCurrentTokenRow(), 0); assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 0);
var iterator = new TokenIterator(session, 2, 18); var iterator = new TokenIterator(session, 2, 18);
assert.equal(iterator.getCurrentToken().value, lines[2]); assert.equal(iterator.getCurrentToken().value, lines[2]);
assert.equal(iterator.getCurrentTokenRow(), 2); assert.equal(iterator.getCurrentTokenRow(), 2);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 0);
var iterator = new TokenIterator(session, 3, lines[3].length-1); var iterator = new TokenIterator(session, 3, lines[3].length-1);
assert.equal(iterator.getCurrentToken().value, lines[3]); assert.equal(iterator.getCurrentToken().value, lines[3]);
assert.equal(iterator.getCurrentTokenRow(), 3); assert.equal(iterator.getCurrentTokenRow(), 3);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 0);
var iterator = new TokenIterator(session, 4, 0); var iterator = new TokenIterator(session, 4, 0);
assert.equal(iterator.getCurrentToken(), null); assert.equal(iterator.getCurrentToken(), null);
}, },
"test: token iterator step forward in JavaScript document" : function() { "test: token iterator step forward in JavaScript document" : function() {
var lines = [ var lines = [
"function foo(items) {", "function foo(items) {",
" for (var i=0; i<items.length; i++) {", " for (var i=0; i<items.length; i++) {",
" alert(items[i] + \"juhu\");", " alert(items[i] + \"juhu\");",
" } // Real Tab.", " } // Real Tab.",
"}" "}"
]; ];
var session = new EditSession(lines.join("\n"), new JavaScriptMode()); var session = new EditSession(lines.join("\n"), new JavaScriptMode());
var rows = session.getTokens(0, lines.length-1); var rows = session.getTokens(0, lines.length-1);
var tokens = []; var tokens = [];
for (var i = 0; i < rows.length; i++) for (var i = 0; i < rows.length; i++)
tokens = tokens.concat(rows[i].tokens); tokens = tokens.concat(rows[i].tokens);
var iterator = new TokenIterator(session, 0, 0); var iterator = new TokenIterator(session, 0, 0);
for (var i = 1; i < tokens.length; i++) for (var i = 1; i < tokens.length; i++)
assert.equal(iterator.stepForward(), tokens[i]); assert.equal(iterator.stepForward(), tokens[i]);
assert.equal(iterator.stepForward(), null); assert.equal(iterator.stepForward(), null);
assert.equal(iterator.getCurrentToken(), null); assert.equal(iterator.getCurrentToken(), null);
}, },
"test: token iterator step backward in JavaScript document" : function() { "test: token iterator step backward in JavaScript document" : function() {
var lines = [ var lines = [
"function foo(items) {", "function foo(items) {",
" for (var i=0; i<items.length; i++) {", " for (var i=0; i<items.length; i++) {",
" alert(items[i] + \"juhu\");", " alert(items[i] + \"juhu\");",
" } // Real Tab.", " } // Real Tab.",
"}" "}"
]; ];
var session = new EditSession(lines.join("\n"), new JavaScriptMode()); var session = new EditSession(lines.join("\n"), new JavaScriptMode());
var rows = session.getTokens(0, lines.length-1); var rows = session.getTokens(0, lines.length-1);
var tokens = []; var tokens = [];
for (var i = 0; i < rows.length; i++) for (var i = 0; i < rows.length; i++)
tokens = tokens.concat(rows[i].tokens); tokens = tokens.concat(rows[i].tokens);
var iterator = new TokenIterator(session, 4, 0); var iterator = new TokenIterator(session, 4, 0);
for (var i = tokens.length-2; i >= 0; i--) for (var i = tokens.length-2; i >= 0; i--)
assert.equal(iterator.stepBackward(), tokens[i]); assert.equal(iterator.stepBackward(), tokens[i]);
assert.equal(iterator.stepBackward(), null); assert.equal(iterator.stepBackward(), null);
assert.equal(iterator.getCurrentToken(), null); assert.equal(iterator.getCurrentToken(), null);
}, },
"test: token iterator reports correct row and column" : function() { "test: token iterator reports correct row and column" : function() {
var lines = [ var lines = [
"function foo(items) {", "function foo(items) {",
" for (var i=0; i<items.length; i++) {", " for (var i=0; i<items.length; i++) {",
" alert(items[i] + \"juhu\");", " alert(items[i] + \"juhu\");",
" } // Real Tab.", " } // Real Tab.",
"}" "}"
]; ];
var session = new EditSession(lines.join("\n"), new JavaScriptMode()); var session = new EditSession(lines.join("\n"), new JavaScriptMode());
var iterator = new TokenIterator(session, 0, 0); var iterator = new TokenIterator(session, 0, 0);
iterator.stepForward(); iterator.stepForward();
iterator.stepForward(); iterator.stepForward();
assert.equal(iterator.getCurrentToken().value, "foo"); assert.equal(iterator.getCurrentToken().value, "foo");
assert.equal(iterator.getCurrentTokenRow(), 0); assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 9); assert.equal(iterator.getCurrentTokenColumn(), 9);
iterator.stepForward(); iterator.stepForward();
iterator.stepForward(); iterator.stepForward();
iterator.stepForward(); iterator.stepForward();
iterator.stepForward(); iterator.stepForward();
iterator.stepForward(); iterator.stepForward();
iterator.stepForward(); iterator.stepForward();
iterator.stepForward(); iterator.stepForward();
assert.equal(iterator.getCurrentToken().value, "for"); assert.equal(iterator.getCurrentToken().value, "for");
assert.equal(iterator.getCurrentTokenRow(), 1); assert.equal(iterator.getCurrentTokenRow(), 1);
assert.equal(iterator.getCurrentTokenColumn(), 4); assert.equal(iterator.getCurrentTokenColumn(), 4);
}, },
}; };
}); });
if (typeof module !== "undefined" && module === require.main) { if (typeof module !== "undefined" && module === require.main) {
require("asyncjs").test.testcase(module.exports).exec() require("asyncjs").test.testcase(module.exports).exec()
} }