Added more unit tests. Changed the unit test code to be formatted with leading spaces instead of tabs.
This commit is contained in:
parent
5030abba97
commit
017d6dc96e
2 changed files with 197 additions and 144 deletions
|
|
@ -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(["({[", ")]}"]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue