Extend QUnit a bit more cleanly

redux
David Majda 12 years ago
parent abf33d3feb
commit f3970bfa5c

@ -1,63 +1,72 @@
parses = function(parser, input, expected) { (function(global) {
deepEqual(parser.parse(input), expected);
};
parsesWithStartRule = function(parser, input, startRule, expected) { var extensions = {
deepEqual(parser.parse(input, startRule), expected); parses: function(parser, input, expected) {
}; QUnit.deepEqual(parser.parse(input), expected);
},
doesNotParse = function(parser, input) { parsesWithStartRule: function(parser, input, startRule, expected) {
raises(function() { parser.parse(input); }, parser.SyntaxError); QUnit.deepEqual(parser.parse(input, startRule), expected);
}; },
doesNotParseWithMessage = function(parser, input, message) { doesNotParse: function(parser, input) {
raises( QUnit.raises(function() { parser.parse(input); }, parser.SyntaxError);
function() { parser.parse(input); }, },
function(e) {
return e instanceof parser.SyntaxError && e.message === message; doesNotParseWithMessage: function(parser, input, message) {
} QUnit.raises(
); function() { parser.parse(input); },
}; function(e) {
return e instanceof parser.SyntaxError && e.message === message;
}
);
},
doesNotParseWithDetails: function(parser, input, expected, found, message) {
QUnit.raises(
function() { parser.parse(input); },
function(e) {
var i;
doesNotParseWithDetails = function(parser, input, expected, found, message) { if (!(e instanceof parser.SyntaxError)) { return false; }
raises( if (e.expected.length !== expected.length) { return false; }
function() { parser.parse(input); }, for (i = 0; i < e.expected.length; i++) {
function(e) { if (e.expected[i] !== expected[i]) { return false; }
var i; }
if (e.found !== found) { return false; }
if (e.message !== message) { return false; }
if (!(e instanceof parser.SyntaxError)) { return false; } return true;
if (e.expected.length !== expected.length) { return false; }
for (i = 0; i < e.expected.length; i++) {
if (e.expected[i] !== expected[i]) { return false; }
} }
if (e.found !== found) { return false; } );
if (e.message !== message) { return false; } },
return true; doesNotParseWithPos: function(parser, input, offset, line, column) {
} QUnit.raises(
); function() { parser.parse(input); },
}; function(e) {
return e instanceof parser.SyntaxError
&& e.offset === offset
&& e.line === line
&& e.column === column;
}
);
},
doesNotParseWithPos = function(parser, input, offset, line, column) { parserParses: function(input, expected) {
raises( QUnit.parses(PEG.parser, input, expected);
function() { parser.parse(input); }, },
function(e) {
return e instanceof parser.SyntaxError
&& e.offset === offset
&& e.line === line
&& e.column === column;
}
);
};
parserParses = function(input, expected) { parserDoesNotParse: function(input) {
parses(PEG.parser, input, expected); QUnit.doesNotParse(PEG.parser, input);
}; },
parserDoesNotParse = function(input) { parserDoesNotParseWithMessage: function(input, message) {
doesNotParse(PEG.parser, input); QUnit.doesNotParseWithMessage(PEG.parser, input, message);
}
}; };
parserDoesNotParseWithMessage = function(input, message) { QUnit.extend(QUnit, extensions);
doesNotParseWithMessage(PEG.parser, input, message); QUnit.extend(global, extensions);
};
})(this);

Loading…
Cancel
Save