summaryrefslogtreecommitdiff
path: root/tests/test_implementations.py
blob: c6f0df267b1402a1a5459a481bce664844ad54dc (plain)
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
51
52
53
54
55
56
57
from nose.tools import assert_raises
import anyjson

modnames = [e[0] for e in anyjson._modules]

def test_default_serialization():
    assert anyjson.dumps([1,2,3]).replace(" ", "") == "[1,2,3]"
    assert anyjson.serialize([1,2,3]).replace(" ", "") == "[1,2,3]"


def test_default_deserialization():
    assert anyjson.loads("[1,2,3]") == [1,2,3]
    assert anyjson.deserialize("[1,2,3]") == [1,2,3]


def test_forced_serialization():
    for name in modnames:
        try:
            anyjson.force_implementation(name)
        except ImportError:
            continue # module can't be tested, try next

        assert anyjson.dumps([1,2,3]).replace(" ", "") == "[1,2,3]"
        assert anyjson.serialize([1,2,3]).replace(" ", "") == "[1,2,3]"


def test_forced_deserialization():
    for name in modnames:
        try:
            anyjson.force_implementation(name)
        except ImportError:
            continue # module can't be tested, try next

        assert anyjson.loads("[1,2,3]") == [1,2,3]
        assert anyjson.deserialize("[1,2,3]") == [1,2,3]


def test_exceptions():
    for name in modnames:
        try:
            anyjson.force_implementation(name)
        except ImportError:
            continue # module can't be tested, try next

        assert_raises(TypeError, anyjson.dumps, [object()])
        assert_raises(TypeError, anyjson.serialize, [object()])
        assert_raises(ValueError, anyjson.loads, "[")
        assert_raises(ValueError, anyjson.deserialize, "[")


def test_json_loads_unicode():
    try:
        anyjson.force_implementation("json")
    except ImportError:
        return

    assert "foo" in anyjson.loads(u'{"foo": "bar"}')