summaryrefslogtreecommitdiff
path: root/tests/test_implementations.py
blob: a884459a5d73779eef5c16eeaf2198d8d2a9dfc4 (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
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, "[")