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);
var iterator = new TokenIterator(session, 0, 4); iterator.stepForward();
assert.equal(iterator.getCurrentToken().value, "function"); assert.equal(iterator.getCurrentToken().value, " ");
assert.equal(iterator.getCurrentTokenRow(), 0); assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 8);
var iterator = new TokenIterator(session, 2, 18); var iterator = new TokenIterator(session, 0, 4);
assert.equal(iterator.getCurrentToken().value, "items"); assert.equal(iterator.getCurrentToken().value, "function");
assert.equal(iterator.getCurrentTokenRow(), 2); assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 14); assert.equal(iterator.getCurrentTokenColumn(), 0);
var iterator = new TokenIterator(session, 4, 0); iterator.stepForward();
assert.equal(iterator.getCurrentToken().value, "}"); assert.equal(iterator.getCurrentToken().value, " ");
assert.equal(iterator.getCurrentTokenRow(), 4); assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 8);
var iterator = new TokenIterator(session, 5, 0); var iterator = new TokenIterator(session, 2, 18);
assert.equal(iterator.getCurrentToken(), null); assert.equal(iterator.getCurrentToken().value, "items");
}, assert.equal(iterator.getCurrentTokenRow(), 2);
assert.equal(iterator.getCurrentTokenColumn(), 14);
"test: token iterator initialization in text document" : function() { iterator.stepForward();
var lines = [ assert.equal(iterator.getCurrentToken().value, "[");
"Lorem ipsum dolor sit amet, consectetur adipisicing elit,", assert.equal(iterator.getCurrentTokenRow(), 2);
"sed do eiusmod tempor incididunt ut labore et dolore magna", assert.equal(iterator.getCurrentTokenColumn(), 19);
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation",
"ullamco laboris nisi ut aliquip ex ea commodo consequat."
];
var session = new EditSession(lines.join("\n"));
var iterator = new TokenIterator(session, 0, 0); var iterator = new TokenIterator(session, 4, 0);
assert.equal(iterator.getCurrentToken().value, lines[0]); assert.equal(iterator.getCurrentToken().value, "}");
assert.equal(iterator.getCurrentTokenRow(), 0); assert.equal(iterator.getCurrentTokenRow(), 4);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 0);
var iterator = new TokenIterator(session, 0, 4); iterator.stepBackward();
assert.equal(iterator.getCurrentToken().value, lines[0]); assert.equal(iterator.getCurrentToken().value, "// Real Tab.");
assert.equal(iterator.getCurrentTokenRow(), 0); assert.equal(iterator.getCurrentTokenRow(), 3);
assert.equal(iterator.getCurrentTokenColumn(), 0); assert.equal(iterator.getCurrentTokenColumn(), 6);
var iterator = new TokenIterator(session, 2, 18); var iterator = new TokenIterator(session, 5, 0);
assert.equal(iterator.getCurrentToken().value, lines[2]); assert.equal(iterator.getCurrentToken(), null);
assert.equal(iterator.getCurrentTokenRow(), 2); },
assert.equal(iterator.getCurrentTokenColumn(), 0);
var iterator = new TokenIterator(session, 3, lines[3].length-1); "test: token iterator initialization in text document" : function() {
assert.equal(iterator.getCurrentToken().value, lines[3]); var lines = [
assert.equal(iterator.getCurrentTokenRow(), 3); "Lorem ipsum dolor sit amet, consectetur adipisicing elit,",
assert.equal(iterator.getCurrentTokenColumn(), 0); "sed do eiusmod tempor incididunt ut labore et dolore magna",
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation",
"ullamco laboris nisi ut aliquip ex ea commodo consequat."
];
var session = new EditSession(lines.join("\n"));
var iterator = new TokenIterator(session, 4, 0); var iterator = new TokenIterator(session, 0, 0);
assert.equal(iterator.getCurrentToken(), null); assert.equal(iterator.getCurrentToken().value, lines[0]);
}, assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 0);
"test: token iterator step forward in JavaScript document" : function() { var iterator = new TokenIterator(session, 0, 4);
var lines = [ assert.equal(iterator.getCurrentToken().value, lines[0]);
"function foo(items) {", assert.equal(iterator.getCurrentTokenRow(), 0);
" for (var i=0; i<items.length; i++) {", assert.equal(iterator.getCurrentTokenColumn(), 0);
" alert(items[i] + \"juhu\");",
" } // Real Tab.",
"}"
];
var session = new EditSession(lines.join("\n"), new JavaScriptMode());
var rows = session.getTokens(0, lines.length-1); var iterator = new TokenIterator(session, 2, 18);
var tokens = []; assert.equal(iterator.getCurrentToken().value, lines[2]);
for (var i = 0; i < rows.length; i++) assert.equal(iterator.getCurrentTokenRow(), 2);
tokens = tokens.concat(rows[i].tokens); assert.equal(iterator.getCurrentTokenColumn(), 0);
var iterator = new TokenIterator(session, 0, 0); var iterator = new TokenIterator(session, 3, lines[3].length-1);
for (var i = 1; i < tokens.length; i++) assert.equal(iterator.getCurrentToken().value, lines[3]);
assert.equal(iterator.stepForward(), tokens[i]); assert.equal(iterator.getCurrentTokenRow(), 3);
assert.equal(iterator.stepForward(), null); assert.equal(iterator.getCurrentTokenColumn(), 0);
assert.equal(iterator.getCurrentToken(), null);
},
"test: token iterator step backward in JavaScript document" : function() { var iterator = new TokenIterator(session, 4, 0);
var lines = [ assert.equal(iterator.getCurrentToken(), null);
"function foo(items) {", },
" for (var i=0; i<items.length; i++) {",
" alert(items[i] + \"juhu\");",
" } // Real Tab.",
"}"
];
var session = new EditSession(lines.join("\n"), new JavaScriptMode());
var rows = session.getTokens(0, lines.length-1); "test: token iterator step forward in JavaScript document" : function() {
var tokens = []; var lines = [
for (var i = 0; i < rows.length; i++) "function foo(items) {",
tokens = tokens.concat(rows[i].tokens); " for (var i=0; i<items.length; i++) {",
" alert(items[i] + \"juhu\");",
" } // Real Tab.",
"}"
];
var session = new EditSession(lines.join("\n"), new JavaScriptMode());
var iterator = new TokenIterator(session, 4, 0); var rows = session.getTokens(0, lines.length-1);
for (var i = tokens.length-2; i >= 0; i--) var tokens = [];
assert.equal(iterator.stepBackward(), tokens[i]); for (var i = 0; i < rows.length; i++)
assert.equal(iterator.stepBackward(), null); tokens = tokens.concat(rows[i].tokens);
assert.equal(iterator.getCurrentToken(), null);
},
"test: token iterator reports correct row and column" : function() { var iterator = new TokenIterator(session, 0, 0);
var lines = [ for (var i = 1; i < tokens.length; i++)
"function foo(items) {", assert.equal(iterator.stepForward(), tokens[i]);
" for (var i=0; i<items.length; i++) {", assert.equal(iterator.stepForward(), null);
" alert(items[i] + \"juhu\");", assert.equal(iterator.getCurrentToken(), null);
" } // Real Tab.", },
"}"
];
var session = new EditSession(lines.join("\n"), new JavaScriptMode());
var iterator = new TokenIterator(session, 0, 0); "test: token iterator step backward in JavaScript document" : function() {
var lines = [
"function foo(items) {",
" for (var i=0; i<items.length; i++) {",
" alert(items[i] + \"juhu\");",
" } // Real Tab.",
"}"
];
var session = new EditSession(lines.join("\n"), new JavaScriptMode());
iterator.stepForward(); var rows = session.getTokens(0, lines.length-1);
iterator.stepForward(); var tokens = [];
for (var i = 0; i < rows.length; i++)
tokens = tokens.concat(rows[i].tokens);
assert.equal(iterator.getCurrentToken().value, "foo"); var iterator = new TokenIterator(session, 4, 0);
assert.equal(iterator.getCurrentTokenRow(), 0); for (var i = tokens.length-2; i >= 0; i--)
assert.equal(iterator.getCurrentTokenColumn(), 9); assert.equal(iterator.stepBackward(), tokens[i]);
assert.equal(iterator.stepBackward(), null);
assert.equal(iterator.getCurrentToken(), null);
},
iterator.stepForward(); "test: token iterator reports correct row and column" : function() {
iterator.stepForward(); var lines = [
iterator.stepForward(); "function foo(items) {",
iterator.stepForward(); " for (var i=0; i<items.length; i++) {",
iterator.stepForward(); " alert(items[i] + \"juhu\");",
iterator.stepForward(); " } // Real Tab.",
iterator.stepForward(); "}"
];
var session = new EditSession(lines.join("\n"), new JavaScriptMode());
assert.equal(iterator.getCurrentToken().value, "for"); var iterator = new TokenIterator(session, 0, 0);
assert.equal(iterator.getCurrentTokenRow(), 1);
assert.equal(iterator.getCurrentTokenColumn(), 4); iterator.stepForward();
}, iterator.stepForward();
assert.equal(iterator.getCurrentToken().value, "foo");
assert.equal(iterator.getCurrentTokenRow(), 0);
assert.equal(iterator.getCurrentTokenColumn(), 9);
iterator.stepForward();
iterator.stepForward();
iterator.stepForward();
iterator.stepForward();
iterator.stepForward();
iterator.stepForward();
iterator.stepForward();
assert.equal(iterator.getCurrentToken().value, "for");
assert.equal(iterator.getCurrentTokenRow(), 1);
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()
} }