first commit
[bitcoin:spesmilo.git] / jsonrpc / _tests / .svn / text-base / test_json.py.svn-base
1
2 """
3   Copyright (c) 2007 Jan-Klaas Kollhof
4
5   This file is part of jsonrpc.
6
7   jsonrpc is free software; you can redistribute it and/or modify
8   it under the terms of the GNU Lesser General Public License as published by
9   the Free Software Foundation; either version 2.1 of the License, or
10   (at your option) any later version.
11
12   This software is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU Lesser General Public License for more details.
16
17   You should have received a copy of the GNU Lesser General Public License
18   along with this software; if not, write to the Free Software
19   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20 """
21
22 import unittest
23 import jsonrpc
24 from types import *
25
26
27
28 class  TestDumps(unittest.TestCase):
29     def setUp(self):
30         pass
31
32     def tearDown(self):
33         pass
34
35     
36     def assertJSON(self, json, expectedJSON):
37         self.assert_(type(json) is UnicodeType)
38         self.assertEqual(json, expectedJSON)
39            
40     def test_Number(self):
41         json = jsonrpc.dumps(1)
42         self.assertJSON(json, u'1')
43         
44         json = jsonrpc.dumps(0xffffffffffffffffffffffff)
45         self.assertJSON(json, u'79228162514264337593543950335')
46
47     def test_None(self):
48         json = jsonrpc.dumps(None)
49         self.assertJSON(json, u'null')
50         
51     def test_Boolean(self):
52         json = jsonrpc.dumps(False)
53         self.assertJSON(json, u'false')
54         json = jsonrpc.dumps(True)
55         self.assertJSON(json, u'true')
56
57     def test_Float(self):
58         json = jsonrpc.dumps(1.2345)
59         self.assertJSON(json, u'1.2345')
60
61         json =jsonrpc.dumps(1.2345e67)
62         self.assertJSON(json, u'1.2345e+67')
63
64         json =jsonrpc.dumps(1.2345e-67)
65         self.assertJSON(json, u'1.2345e-67')
66
67     def test_String(self):
68         json = jsonrpc.dumps('foobar')
69         self.assertJSON(json, u'"foobar"')
70
71         json = jsonrpc.dumps('foobar')
72         self.assertJSON(json, u'"foobar"')
73
74     def test_StringEscapedChars(self):
75         json = jsonrpc.dumps('\n \f \t \b \r \\ " /')
76         self.assertJSON(json, u'"\\n \\f \\t \\b \\r \\\\ \\" \\/"')
77
78     def test_StringEscapedUnicodeChars(self):
79         json = jsonrpc.dumps(u'\0 \x19 \x20\u0130')
80         self.assertJSON(json, u'"\\u0000 \\u0019  \u0130"')
81
82     def test_Array(self):
83         json = jsonrpc.dumps([1, 2.3e45, 'foobar'])
84         self.assertJSON(json, u'[1,2.3e+45,"foobar"]')
85
86     def test_Dictionary(self):
87         json = jsonrpc.dumps({'foobar':'spam', 'a':[1,2,3]})
88         self.assertJSON(json, u'{"a":[1,2,3],"foobar":"spam"}')
89
90     def test_FailOther(self):
91         self.failUnlessRaises(jsonrpc.JSONEncodeException, lambda:jsonrpc.dumps(self))
92
93         
94         
95
96 class  TestLoads(unittest.TestCase):
97     def setUp(self):
98         pass
99
100     def tearDown(self):
101         pass
102
103
104     def test_String(self):
105
106         json = jsonrpc.dumps("foobar")
107         obj = jsonrpc.loads(json)
108         self.assertEquals(obj, u"foobar")
109     
110     def test_StringEscapedChars(self):
111         json = '"\\n \\t \\r \\b \\f \\\\ \\/ /"'
112         obj = jsonrpc.loads(json)
113         self.assertEquals(obj, u'\n \t \r \b \f \\ / /')
114         
115     def test_StringEscapedUnicodeChars(self):
116         json = jsonrpc.dumps(u'\u0000 \u0019')
117         obj = jsonrpc.loads(json)
118         self.assertEquals(obj, u'\0 \x19')
119         
120     def test_Array(self):
121         json = jsonrpc.dumps(['1', ['2','3']])
122         obj = jsonrpc.loads(json)
123         self.assertEquals(obj, ['1', ['2','3']])
124
125     def test_Dictionary(self):
126         json = jsonrpc.dumps({'foobar':'spam', 'nested':{'a':'b'}})
127         obj = jsonrpc.loads(json)
128         self.assertEquals(obj, {'foobar':'spam', 'nested':{'a':'b'}})
129
130
131     def test_Int(self):
132         json = jsonrpc.dumps(1234)
133         obj = jsonrpc.loads(json)
134         self.assertEquals(obj, 1234)
135
136
137     def test_NegativeInt(self):
138         json = jsonrpc.dumps(-1234)
139         obj = jsonrpc.loads(json)
140         self.assertEquals(obj, -1234)
141
142     def test_NumberAtEndOfArray(self):
143         json = jsonrpc.dumps([-1234])
144         obj = jsonrpc.loads(json)
145         self.assertEquals(obj, [-1234])
146
147     def test_StrAtEndOfArray(self):
148         json = jsonrpc.dumps(['foobar'])
149         obj = jsonrpc.loads(json)
150         self.assertEquals(obj, ['foobar'])
151             
152     def test_Float(self):
153         json = jsonrpc.dumps(1234.567)
154         obj = jsonrpc.loads(json)
155         self.assertEquals(obj, 1234.567)
156
157     def test_Exponential(self):
158         json = jsonrpc.dumps(1234.567e89)
159         obj = jsonrpc.loads(json)
160         self.assertEquals(obj, 1234.567e89)
161
162     def test_True(self):
163         json = jsonrpc.dumps(True)
164         obj = jsonrpc.loads(json)
165         self.assertEquals(obj, True)
166
167     def test_False(self):
168         json = jsonrpc.dumps(False)
169         obj = jsonrpc.loads(json)
170         self.assertEquals(obj, False)
171
172     def test_None(self):
173         json = jsonrpc.dumps(None)
174         obj = jsonrpc.loads(json)
175         self.assertEquals(obj, None)
176
177     def test_NestedDictAllTypes(self):
178         json = jsonrpc.dumps({'s':'foobar', 'int':1234, 'float':1234.567, 'exp':1234.56e78,
179                                             'negInt':-1234, 'None':None,'True':True, 'False':False,
180                                             'list':[1,2,4,{}], 'dict':{'a':'b'}})
181         obj = jsonrpc.loads(json)
182         self.assertEquals(obj, {'s':'foobar', 'int':1234, 'float':1234.567, 'exp':1234.56e78,
183                                             'negInt':-1234, 'None':None,'True':True, 'False':False,
184                                             'list':[1,2,4,{}], 'dict':{'a':'b'}})