1+ function setup ( ) {
2+ var i ;
3+
4+ this . JSON = window . JSON ;
5+ window . JSON = undefined ;
6+
7+ this . toJSON = {
8+ Boolean : Boolean . prototype . toJSON ,
9+ Number : Number . prototype . toJSON ,
10+ String : String . prototype . toJSON ,
11+ Function : Function . prototype . toJSON ,
12+ Array : Array . prototype . toJSON ,
13+ Date : Date . prototype . toJSON ,
14+ RegExp : RegExp . prototype . toJSON ,
15+ Object : Object . prototype . toJSON
16+ } ;
17+
18+ for ( i in this . toJSON ) {
19+ if ( Object . prototype . hasOwnProperty . call ( this . toJSON , i ) ) {
20+ window [ i ] . prototype . toJSON = undefined ;
21+ }
22+ }
23+ }
24+
25+ function teardown ( ) {
26+ var i ;
27+
28+ window . JSON = this . JSON ;
29+ for ( i in this . toJSON ) {
30+ if ( Object . prototype . hasOwnProperty . call ( this . toJSON , i ) ) {
31+ window [ i ] . prototype . toJSON = this . toJSON [ i ] ;
32+ }
33+ }
34+ }
35+
36+ module ( "jQuery.stringifyJSON" , { setup : setup , teardown : teardown } ) ;
37+
38+ $ . each ( {
39+ chars : {
40+ value : [ "안녕" , "Güete Tag" , "你好" , "Hello" ] ,
41+ answer : [ '"안녕"' , '"Güete Tag"' , '"你好"' , '"Hello"' ]
42+ } ,
43+ char : {
44+ value : [ '\"' , '\\' , '\/' , '\b' , '\f' , '\n' , '\r' , '\t' ] ,
45+ answer : [ '"\\""' , '"\\\\"' , '"/"' , '"\\b"' , '"\\f"' , '"\\n"' , '"\\r"' , '"\\t"' ]
46+ } ,
47+ nonfinite : {
48+ value : [ NaN , Infinity , - NaN , - Infinity ] ,
49+ answer : [ "null" , "null" , "null" , "null" ]
50+ } ,
51+ zero : {
52+ value : [ 0 ] ,
53+ answer : [ "0" ]
54+ } ,
55+ integer : {
56+ value : [ 1 , - 2 , 3 , - 4 , 5 , - 6 , 7 , - 8 , 9 ] ,
57+ answer : [ "1" , "-2" , "3" , "-4" , "5" , "-6" , "7" , "-8" , "9" ]
58+ } ,
59+ fractional : {
60+ value : [ 0.1 , - 0.2 , 0.3 , - 0.4 , 0.5 , - 0.6 , 0.7 , - 0.8 , 0.9 ] ,
61+ answer : [ "0.1" , "-0.2" , "0.3" , "-0.4" , "0.5" , "-0.6" , "0.7" , "-0.8" , "0.9" ]
62+ } ,
63+ exponential : {
64+ value : [ 1e+20 , - 1E+20 , 1e+21 , - 1E+21 , 1e21 , - 1E21 , 1e-6 , - 1E-6 , 1e-7 , - 1E-7 ] ,
65+ answer : [ "100000000000000000000" , "-100000000000000000000" , "1e+21" , "-1e+21" , "1e+21" , "-1e+21" , "0.000001" , "-0.000001" , "1e-7" , "-1e-7" ]
66+ } ,
67+ boolean : {
68+ value : [ true , false ] ,
69+ answer : [ "true" , "false" ]
70+ } ,
71+ date : {
72+ value : [ new Date ( 1322990436623 ) ] ,
73+ answer : [ '"2011-12-04T09:20:36Z"' ]
74+ } ,
75+ misc : {
76+ value : [ null , undefined , $ . noop , / r e g e x p / , { toJSON : function ( ) { return "?" ; } } ] ,
77+ answer : [ "null" , undefined , undefined , "{}" , '"?"' ]
78+ } ,
79+ array : {
80+ value : [ [ ] , [ "array" , 'a' , NaN , 0 , true , null , undefined , [ ] ] ] ,
81+ answer : [ "[]" , '["array","a",null,0,true,null,null,[]]' ]
82+ } ,
83+ object : {
84+ value : [ { } , { string : "array" , "NaN" : NaN , zero : 0 , boolean : true , "null" : null , "undefined" : undefined , array : [ ] , nested : { } , fn : $ . noop } ] ,
85+ answer : [ "{}" , '{"string":"array","NaN":null,"zero":0,"boolean":true,"null":null,"array":[],"nested":{}}' ]
86+ }
87+ } , function ( testName , data ) {
88+ test ( testName , function ( ) {
89+ $ . each ( data . value , function ( i , val ) {
90+ deepEqual ( $ . stringifyJSON ( val ) , data . answer [ i ] ) ;
91+ } ) ;
92+ } ) ;
93+ } ) ;
0 commit comments