Updated JSTD

This commit is contained in:
Misko Hevery 2010-10-15 11:58:55 -07:00
parent de66a319b4
commit d320e3d2c3
3 changed files with 141 additions and 141 deletions

Binary file not shown.

View file

@ -19,7 +19,7 @@ TestCase("formatterTest", {
assertEquals(true, angular.formatter['boolean'].parse("true")); assertEquals(true, angular.formatter['boolean'].parse("true"));
assertEquals(false, angular.formatter['boolean'].parse("")); assertEquals(false, angular.formatter['boolean'].parse(""));
assertEquals(false, angular.formatter['boolean'].parse("false")); assertEquals(false, angular.formatter['boolean'].parse("false"));
assertEquals(null, angular.formatter['boolean'].parse(null)); assertEquals(false, angular.formatter['boolean'].parse(null));
}, },
testNumber: function() { testNumber: function() {

View file

@ -1,177 +1,177 @@
LexerTest = TestCase('LexerTest'); desccribe('parser', function(){
describe('lexer', function(){
it('should TokenizeAString', function(){
var tokens = lex("a.bc[22]+1.3|f:'a\\\'c':\"d\\\"e\"");
var i = 0;
assertEquals(tokens[i].index, 0);
assertEquals(tokens[i].text, 'a.bc');
LexerTest.prototype.testTokenizeAString = function(){ i++;
var tokens = lex("a.bc[22]+1.3|f:'a\\\'c':\"d\\\"e\""); assertEquals(tokens[i].index, 4);
var i = 0; assertEquals(tokens[i].text, '[');
assertEquals(tokens[i].index, 0);
assertEquals(tokens[i].text, 'a.bc');
i++; i++;
assertEquals(tokens[i].index, 4); assertEquals(tokens[i].index, 5);
assertEquals(tokens[i].text, '['); assertEquals(tokens[i].text, 22);
i++; i++;
assertEquals(tokens[i].index, 5); assertEquals(tokens[i].index, 7);
assertEquals(tokens[i].text, 22); assertEquals(tokens[i].text, ']');
i++; i++;
assertEquals(tokens[i].index, 7); assertEquals(tokens[i].index, 8);
assertEquals(tokens[i].text, ']'); assertEquals(tokens[i].text, '+');
i++; i++;
assertEquals(tokens[i].index, 8); assertEquals(tokens[i].index, 9);
assertEquals(tokens[i].text, '+'); assertEquals(tokens[i].text, 1.3);
i++; i++;
assertEquals(tokens[i].index, 9); assertEquals(tokens[i].index, 12);
assertEquals(tokens[i].text, 1.3); assertEquals(tokens[i].text, '|');
i++; i++;
assertEquals(tokens[i].index, 12); assertEquals(tokens[i].index, 13);
assertEquals(tokens[i].text, '|'); assertEquals(tokens[i].text, 'f');
i++; i++;
assertEquals(tokens[i].index, 13); assertEquals(tokens[i].index, 14);
assertEquals(tokens[i].text, 'f'); assertEquals(tokens[i].text, ':');
i++; i++;
assertEquals(tokens[i].index, 14); assertEquals(tokens[i].index, 15);
assertEquals(tokens[i].text, ':'); assertEquals(tokens[i].string, "a'c");
i++; i++;
assertEquals(tokens[i].index, 15); assertEquals(tokens[i].index, 21);
assertEquals(tokens[i].string, "a'c"); assertEquals(tokens[i].text, ':');
i++; i++;
assertEquals(tokens[i].index, 21); assertEquals(tokens[i].index, 22);
assertEquals(tokens[i].text, ':'); assertEquals(tokens[i].string, 'd"e');
});
i++; it('should TokenizeUndefined', function(){
assertEquals(tokens[i].index, 22); var tokens = lex("undefined");
assertEquals(tokens[i].string, 'd"e'); var i = 0;
}; assertEquals(tokens[i].index, 0);
assertEquals(tokens[i].text, 'undefined');
LexerTest.prototype.testTokenizeUndefined = function(){ assertEquals(undefined, tokens[i].fn());
var tokens = lex("undefined"); });
var i = 0;
assertEquals(tokens[i].index, 0);
assertEquals(tokens[i].text, 'undefined');
assertEquals(undefined, tokens[i].fn());
};
LexerTest.prototype.testTokenizeRegExp = function(){ it('should TokenizeRegExp', function(){
var tokens = lex("/r 1/"); var tokens = lex("/r 1/");
var i = 0; var i = 0;
assertEquals(tokens[i].index, 0); assertEquals(tokens[i].index, 0);
assertEquals(tokens[i].text, 'r 1'); assertEquals(tokens[i].text, 'r 1');
assertEquals("r 1".match(tokens[i].fn())[0], 'r 1'); assertEquals("r 1".match(tokens[i].fn())[0], 'r 1');
}; });
LexerTest.prototype.testQuotedString = function(){ it('should QuotedString', function(){
var str = "['\\'', \"\\\"\"]"; var str = "['\\'', \"\\\"\"]";
var tokens = lex(str); var tokens = lex(str);
assertEquals(1, tokens[1].index); assertEquals(1, tokens[1].index);
assertEquals("'", tokens[1].string); assertEquals("'", tokens[1].string);
assertEquals(7, tokens[3].index); assertEquals(7, tokens[3].index);
assertEquals('"', tokens[3].string); assertEquals('"', tokens[3].string);
});
}; it('should QuotedStringEscape', function(){
var str = '"\\"\\n\\f\\r\\t\\v\\u00A0"';
var tokens = lex(str);
LexerTest.prototype.testQuotedStringEscape = function(){ assertEquals('"\n\f\r\t\v\u00A0', tokens[0].string);
var str = '"\\"\\n\\f\\r\\t\\v\\u00A0"'; });
var tokens = lex(str);
assertEquals('"\n\f\r\t\v\u00A0', tokens[0].string); it('should TokenizeUnicode', function(){
}; var tokens = lex('"\\u00A0"');
assertEquals(1, tokens.length);
assertEquals('\u00a0', tokens[0].string);
});
LexerTest.prototype.testTokenizeUnicode = function(){ it('should TokenizeRegExpWithOptions', function(){
var tokens = lex('"\\u00A0"'); var tokens = lex("/r/g");
assertEquals(1, tokens.length); var i = 0;
assertEquals('\u00a0', tokens[0].string); assertEquals(tokens[i].index, 0);
}; assertEquals(tokens[i].text, 'r');
assertEquals(tokens[i].flags, 'g');
assertEquals("rr".match(tokens[i].fn()).length, 2);
});
LexerTest.prototype.testTokenizeRegExpWithOptions = function(){ it('should TokenizeRegExpWithEscape', function(){
var tokens = lex("/r/g"); var tokens = lex("/\\/\\d/");
var i = 0; var i = 0;
assertEquals(tokens[i].index, 0); assertEquals(tokens[i].index, 0);
assertEquals(tokens[i].text, 'r'); assertEquals(tokens[i].text, '\\/\\d');
assertEquals(tokens[i].flags, 'g'); assertEquals("/1".match(tokens[i].fn())[0], '/1');
assertEquals("rr".match(tokens[i].fn()).length, 2); });
};
LexerTest.prototype.testTokenizeRegExpWithEscape = function(){ it('should IgnoreWhitespace', function(){
var tokens = lex("/\\/\\d/"); var tokens = lex("a \t \n \r b");
var i = 0; assertEquals(tokens[0].text, 'a');
assertEquals(tokens[i].index, 0); assertEquals(tokens[1].text, 'b');
assertEquals(tokens[i].text, '\\/\\d'); });
assertEquals("/1".match(tokens[i].fn())[0], '/1');
};
LexerTest.prototype.testIgnoreWhitespace = function(){ it('should Relation', function(){
var tokens = lex("a \t \n \r b"); var tokens = lex("! == != < > <= >=");
assertEquals(tokens[0].text, 'a'); assertEquals(tokens[0].text, '!');
assertEquals(tokens[1].text, 'b'); assertEquals(tokens[1].text, '==');
}; assertEquals(tokens[2].text, '!=');
assertEquals(tokens[3].text, '<');
assertEquals(tokens[4].text, '>');
assertEquals(tokens[5].text, '<=');
assertEquals(tokens[6].text, '>=');
});
LexerTest.prototype.testRelation = function(){ it('should Statements', function(){
var tokens = lex("! == != < > <= >="); var tokens = lex("a;b;");
assertEquals(tokens[0].text, '!'); assertEquals(tokens[0].text, 'a');
assertEquals(tokens[1].text, '=='); assertEquals(tokens[1].text, ';');
assertEquals(tokens[2].text, '!='); assertEquals(tokens[2].text, 'b');
assertEquals(tokens[3].text, '<'); assertEquals(tokens[3].text, ';');
assertEquals(tokens[4].text, '>'); });
assertEquals(tokens[5].text, '<=');
assertEquals(tokens[6].text, '>=');
};
LexerTest.prototype.testStatements = function(){ it('should Number', function(){
var tokens = lex("a;b;"); var tokens = lex("0.5");
assertEquals(tokens[0].text, 'a'); expect(tokens[0].text).toEqual(0.5);
assertEquals(tokens[1].text, ';'); });
assertEquals(tokens[2].text, 'b');
assertEquals(tokens[3].text, ';');
};
LexerTest.prototype.testNumber = function(){ it('should NegativeNumber', function(){
var tokens = lex("0.5"); var value = createScope().$eval("-0.5");
expect(tokens[0].text).toEqual(0.5); expect(value).toEqual(-0.5);
};
LexerTest.prototype.testNegativeNumber = function(){ value = createScope().$eval("{a:-0.5}");
var value = createScope().$eval("-0.5"); expect(value).toEqual({a:-0.5});
expect(value).toEqual(-0.5); });
value = createScope().$eval("{a:-0.5}"); it('should NumberExponent', function(){
expect(value).toEqual({a:-0.5}); var tokens = lex("0.5E-10");
}; expect(tokens[0].text).toEqual(0.5E-10);
expect(createScope().$eval("0.5E-10")).toEqual(0.5E-10);
LexerTest.prototype.testNumberExponent = function(){ tokens = lex("0.5E+10");
var tokens = lex("0.5E-10"); expect(tokens[0].text).toEqual(0.5E+10);
expect(tokens[0].text).toEqual(0.5E-10); });
expect(createScope().$eval("0.5E-10")).toEqual(0.5E-10);
tokens = lex("0.5E+10"); it('should NumberExponentInvalid', function(){
expect(tokens[0].text).toEqual(0.5E+10); assertThrows('Lexer found invalid exponential value "0.5E-"', function(){
}; lex("0.5E-");
});
assertThrows('Lexer found invalid exponential value "0.5E-A"', function(){
lex("0.5E-A");
});
});
LexerTest.prototype.testNumberExponentInvalid = function(){ it('should NumberStartingWithDot', function(){
assertThrows('Lexer found invalid exponential value "0.5E-"', function(){ var tokens = lex(".5");
lex("0.5E-"); expect(tokens[0].text).toEqual(0.5);
});
}); });
assertThrows('Lexer found invalid exponential value "0.5E-A"', function(){ });
lex("0.5E-A");
});
};
LexerTest.prototype.testNumberStartingWithDot = function(){
var tokens = lex(".5");
expect(tokens[0].text).toEqual(0.5);
};
ParserTest = TestCase('ParserTest'); ParserTest = TestCase('ParserTest');