1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# -*- coding: utf-8 -*-
import datetime
import uuid
from decimal import Decimal
from raven.utils.testutils import TestCase
from raven.utils import json
class JSONTest(TestCase):
def test_uuid(self):
res = uuid.uuid4()
json.dumps(res) == '"%s"' % res.hex
def test_datetime(self):
res = datetime.datetime(day=1, month=1, year=2011, hour=1, minute=1, second=1)
assert json.dumps(res) == '"2011-01-01T01:01:01Z"'
def test_set(self):
res = set(['foo', 'bar'])
assert json.dumps(res) in ('["foo", "bar"]', '["bar", "foo"]')
def test_frozenset(self):
res = frozenset(['foo', 'bar'])
assert json.dumps(res) in ('["foo", "bar"]', '["bar", "foo"]')
def test_unknown_type(self):
class Unknown(object):
def __repr__(self):
return 'Unknown object'
obj = Unknown()
assert json.dumps(obj) == '"Unknown object"'
def test_unknown_type_with_repr_error(self):
class Unknown(object):
def __repr__(self):
raise Exception
obj = Unknown()
s = json.dumps(obj)
assert isinstance(s, str)
assert 'Unknown object at 0x' in s
def test_decimal(self):
d = {'decimal': Decimal('123.45')}
assert json.dumps(d) == '{"decimal": "Decimal(\'123.45\')"}'
|