angular.js/test/JsonTest.js

103 lines
3.2 KiB
JavaScript
Raw Normal View History

2010-01-06 00:36:58 +00:00
JsonTest = TestCase("JsonTest");
JsonTest.prototype.testPrimitives = function () {
2010-01-09 23:02:43 +00:00
assertEquals("null", toJson(0/0));
assertEquals("null", toJson(null));
assertEquals("true", toJson(true));
assertEquals("false", toJson(false));
assertEquals("123.45", toJson(123.45));
assertEquals('"abc"', toJson("abc"));
assertEquals('"a \\t \\n \\r b \\\\"', toJson("a \t \n \r b \\"));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testEscaping = function () {
2010-01-09 23:02:43 +00:00
assertEquals("\"7\\\\\\\"7\"", toJson("7\\\"7"));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testObjects = function () {
2010-01-09 23:02:43 +00:00
assertEquals('{"a":1,"b":2}', toJson({a:1,b:2}));
assertEquals('{"a":{"b":2}}', toJson({a:{b:2}}));
assertEquals('{"a":{"b":{"c":0}}}', toJson({a:{b:{c:0}}}));
assertEquals('{"a":{"b":null}}', toJson({a:{b:0/0}}));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testObjectPretty = function () {
2010-01-09 23:02:43 +00:00
assertEquals('{\n "a":1,\n "b":2}', toJson({a:1,b:2}, true));
assertEquals('{\n "a":{\n "b":2}}', toJson({a:{b:2}}, true));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testArray = function () {
2010-01-09 23:02:43 +00:00
assertEquals('[]', toJson([]));
assertEquals('[1,"b"]', toJson([1,"b"]));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testIgnoreFunctions = function () {
2010-01-09 23:02:43 +00:00
assertEquals('[null,1]', toJson([function(){},1]));
assertEquals('{}', toJson({a:function(){}}));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testParseNull = function () {
2010-01-09 23:02:43 +00:00
assertNull(fromJson("null"));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testParseBoolean = function () {
2010-01-09 23:02:43 +00:00
assertTrue(fromJson("true"));
assertFalse(fromJson("false"));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.test$$isIgnored = function () {
2010-01-09 23:02:43 +00:00
assertEquals("{}", toJson({$$:0}));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testArrayWithEmptyItems = function () {
var a = [];
a[1] = "X";
2010-01-09 23:02:43 +00:00
assertEquals('[null,"X"]', toJson(a));
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testItShouldEscapeUnicode = function () {
assertEquals(1, "\u00a0".length);
2010-01-09 23:02:43 +00:00
assertEquals(8, toJson("\u00a0").length);
assertEquals(1, fromJson(toJson("\u00a0")).length);
2010-01-06 00:36:58 +00:00
};
JsonTest.prototype.testItShouldUTCDates = function() {
var date = angular.String.toDate("2009-10-09T01:02:03Z");
2010-05-07 19:09:14 +00:00
assertEquals('"2009-10-09T01:02:03Z"', toJson(date));
assertEquals(date.getTime(),
fromJson('"2009-10-09T01:02:03Z"').getTime());
2010-01-06 00:36:58 +00:00
};
2010-01-23 23:54:58 +00:00
JsonTest.prototype.testItShouldPreventRecursion = function () {
var obj = {a:'b'};
obj.recursion = obj;
assertEquals('{"a":"b","recursion":RECURSION}', angular.toJson(obj));
};
JsonTest.prototype.testItShouldIgnore$Properties = function() {
var scope = createScope();
scope.a = 'a';
scope['$b'] = '$b';
scope.c = 'c';
expect(angular.toJson(scope)).toEqual('{"a":"a","c":"c","this":RECURSION}');
};
JsonTest.prototype.testItShouldSerializeInheritedProperties = function() {
var scope = createScope({p:'p'});
scope.a = 'a';
expect(angular.toJson(scope)).toEqual('{"a":"a","p":"p","this":RECURSION}');
2010-08-14 17:29:50 +00:00
};
2010-01-23 23:54:58 +00:00
JsonTest.prototype.testItShouldSerializeSameObjectsMultipleTimes = function () {
var obj = {a:'b'};
assertEquals('{"A":{"a":"b"},"B":{"a":"b"}}', angular.toJson({A:obj, B:obj}));
};
2010-05-07 19:09:14 +00:00
JsonTest.prototype.testItShouldNotSerializeUndefinedValues = function () {
assertEquals('{}', angular.toJson({A:undefined}));
};
2010-08-10 18:46:12 +00:00
JsonTest.prototype.testItShouldParseFloats = function () {
expect(fromJson("{value:2.55, name:'misko'}")).toEqual({value:2.55, name:'misko'});
};