Completed
Push — master ( 39b567...e93de7 )
by Satoru
01:04
created

anyconfig.tests.Test   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 50
Duplicated Lines 0 %
Metric Value
dl 0
loc 50
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 2 1
A tearDown() 0 2 1
B test_20_dump_and_multi_load() 0 28 1
A test_10_dump_and_load() 0 13 1
1
#
2
# Copyright (C) 2012 - 2015 Satoru SATOH <ssato @ redhat.com>
3
# License: MIT
4
#
5
# pylint: disable=missing-docstring
6
import os.path
7
import unittest
8
9
import anyconfig as TT
10
import anyconfig.tests.common
11
12
13
class Test(unittest.TestCase):
14
15
    def setUp(self):
16
        self.workdir = anyconfig.tests.common.setup_workdir()
17
18
    def tearDown(self):
19
        anyconfig.tests.common.cleanup_workdir(self.workdir)
20
21
    def test_10_dump_and_load(self):
22
        obj = dict(name="a", a=1, b=dict(b=[1, 2], c="C"))
23
        obj_path = os.path.join(self.workdir, "a.json")
24
25
        TT.dump(obj, obj_path)
26
        self.assertTrue(os.path.exists(obj_path))
27
28
        obj1 = TT.load(obj_path)
29
30
        self.assertEqual(obj1["name"], obj["name"])
31
        self.assertEqual(obj1["a"], obj["a"])
32
        self.assertEqual(obj1["b"]["b"], obj["b"]["b"])
33
        self.assertEqual(obj1["b"]["c"], obj["b"]["c"])
34
35
    def test_20_dump_and_multi_load(self):
36
        obja = dict(name="a", a=1, b=dict(b=[0, 1], c="C"))
37
        objb = dict(a=2, b=dict(b=[1, 2, 3, 4, 5], d="D"))
38
39
        a_path = os.path.join(self.workdir, "a.json")
40
        b_path = os.path.join(self.workdir, "b.json")
41
42
        TT.dump(obja, a_path)
43
        self.assertTrue(os.path.exists(a_path))
44
45
        TT.dump(objb, b_path)
46
        self.assertTrue(os.path.exists(b_path))
47
48
        obja1 = TT.multi_load([a_path, b_path], ac_merge=TT.MS_DICTS)
49
50
        self.assertEqual(obja1["name"], obja["name"])
51
        self.assertEqual(obja1["a"], objb["a"])
52
        self.assertEqual(obja1["b"]["b"], objb["b"]["b"])
53
        self.assertEqual(obja1["b"]["c"], obja["b"]["c"])
54
        self.assertEqual(obja1["b"]["d"], objb["b"]["d"])
55
56
        obja2 = TT.multi_load([a_path, b_path], ac_merge=TT.MS_DICTS_AND_LISTS)
57
58
        self.assertEqual(obja2["name"], obja["name"])
59
        self.assertEqual(obja2["a"], objb["a"])
60
        self.assertEqual(obja2["b"]["b"], [0, 1, 2, 3, 4, 5])
61
        self.assertEqual(obja2["b"]["c"], obja["b"]["c"])
62
        self.assertEqual(obja2["b"]["d"], objb["b"]["d"])
63
64
# vim:sw=4:ts=4:et:
65