~ubuntu-branches/ubuntu/lucid/exaile/lucid

« back to all changes in this revision

Viewing changes to plugins/jamendo/simplejson/tests/test_recursion.py

  • Committer: Bazaar Package Importer
  • Author(s): Andrew Starr-Bochicchio
  • Date: 2010-02-12 19:51:01 UTC
  • mfrom: (1.1.11 upstream)
  • Revision ID: james.westby@ubuntu.com-20100212195101-8jt3tculxcl92e6v
Tags: 0.3.1~b1-0ubuntu1
* New upstream release.
* Adjust exaile.install for new plugins.
* debian/control:
 - Drop unneeded python-dev Build-Dep.
 - Bump Standards-Version to 3.8.4 
* debian/rules: No empty po files to delete.

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")