~ubuntu-branches/ubuntu/precise/enigmail/precise-security

« back to all changes in this revision

Viewing changes to python/simplejson-2.1.1/simplejson/tests/test_recursion.py

  • Committer: Package Import Robot
  • Author(s): Chris Coulson
  • Date: 2012-11-12 16:36:01 UTC
  • mfrom: (0.12.15)
  • Revision ID: package-import@ubuntu.com-20121112163601-t8e8skdfi3ni9iqp
Tags: 2:1.4.6-0ubuntu0.12.04.1
* New upstream release v1.4.6
  - see LP: #1080212 for USN information
* Drop unneeded patches
  - remove debian/patches/correct-version-number.diff
  - remove debian/patches/dont_register_cids_multiple_times.diff
  - update debian/patches/series
* Support building in an objdir
  - update debian/rules

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from unittest import TestCase
 
2
 
 
3
import simplejson as json
 
4
 
 
5
class JSONTestObject:
 
6
    pass
 
7
 
 
8
 
 
9
class RecursiveJSONEncoder(json.JSONEncoder):
 
10
    recurse = False
 
11
    def default(self, o):
 
12
        if o is JSONTestObject:
 
13
            if self.recurse:
 
14
                return [JSONTestObject]
 
15
            else:
 
16
                return 'JSONTestObject'
 
17
        return json.JSONEncoder.default(o)
 
18
 
 
19
 
 
20
class TestRecursion(TestCase):
 
21
    def test_listrecursion(self):
 
22
        x = []
 
23
        x.append(x)
 
24
        try:
 
25
            json.dumps(x)
 
26
        except ValueError:
 
27
            pass
 
28
        else:
 
29
            self.fail("didn't raise ValueError on list recursion")
 
30
        x = []
 
31
        y = [x]
 
32
        x.append(y)
 
33
        try:
 
34
            json.dumps(x)
 
35
        except ValueError:
 
36
            pass
 
37
        else:
 
38
            self.fail("didn't raise ValueError on alternating list recursion")
 
39
        y = []
 
40
        x = [y, y]
 
41
        # ensure that the marker is cleared
 
42
        json.dumps(x)
 
43
 
 
44
    def test_dictrecursion(self):
 
45
        x = {}
 
46
        x["test"] = x
 
47
        try:
 
48
            json.dumps(x)
 
49
        except ValueError:
 
50
            pass
 
51
        else:
 
52
            self.fail("didn't raise ValueError on dict recursion")
 
53
        x = {}
 
54
        y = {"a": x, "b": x}
 
55
        # ensure that the marker is cleared
 
56
        json.dumps(x)
 
57
 
 
58
    def test_defaultrecursion(self):
 
59
        enc = RecursiveJSONEncoder()
 
60
        self.assertEquals(enc.encode(JSONTestObject), '"JSONTestObject"')
 
61
        enc.recurse = True
 
62
        try:
 
63
            enc.encode(JSONTestObject)
 
64
        except ValueError:
 
65
            pass
 
66
        else:
 
67
            self.fail("didn't raise ValueError on default recursion")