xref: /freebsd/contrib/libucl/python/tests/test_load.py (revision a0409676120c1e558d0ade943019934e0f15118d)
1273c26a3SBaptiste Daroussinfrom .compat import unittest
2273c26a3SBaptiste Daroussinimport ucl
3273c26a3SBaptiste Daroussin
4273c26a3SBaptiste Daroussinclass LoadTest(unittest.TestCase):
5273c26a3SBaptiste Daroussin    def test_no_args(self):
6273c26a3SBaptiste Daroussin        with self.assertRaises(TypeError):
7273c26a3SBaptiste Daroussin            ucl.load()
8273c26a3SBaptiste Daroussin
9273c26a3SBaptiste Daroussin    def test_multi_args(self):
10273c26a3SBaptiste Daroussin        with self.assertRaises(TypeError):
11273c26a3SBaptiste Daroussin            ucl.load(0,0)
12273c26a3SBaptiste Daroussin
13273c26a3SBaptiste Daroussin    def test_none(self):
14273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load(None), None)
15273c26a3SBaptiste Daroussin
16273c26a3SBaptiste Daroussin    def test_null(self):
17273c26a3SBaptiste Daroussin        data  = "a: null"
18273c26a3SBaptiste Daroussin        valid = { "a" : None }
19273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load(data), valid)
20273c26a3SBaptiste Daroussin
21273c26a3SBaptiste Daroussin    def test_int(self):
22273c26a3SBaptiste Daroussin        data  = "a : 1"
23273c26a3SBaptiste Daroussin        valid = { "a" : 1 }
24273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load(data), valid)
25273c26a3SBaptiste Daroussin
26273c26a3SBaptiste Daroussin    def test_braced_int(self):
27273c26a3SBaptiste Daroussin        data  = "{a : 1}"
28273c26a3SBaptiste Daroussin        valid = { "a" : 1 }
29273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load(data), valid)
30273c26a3SBaptiste Daroussin
31273c26a3SBaptiste Daroussin    def test_nested_int(self):
32273c26a3SBaptiste Daroussin        data  = "a : { b : 1 }"
33273c26a3SBaptiste Daroussin        valid = { "a" : { "b" : 1 } }
34273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load(data), valid)
35273c26a3SBaptiste Daroussin
36273c26a3SBaptiste Daroussin    def test_str(self):
37273c26a3SBaptiste Daroussin        data  = "a : b"
38273c26a3SBaptiste Daroussin        valid = { "a" : "b" }
39273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load(data), valid)
40273c26a3SBaptiste Daroussin
41273c26a3SBaptiste Daroussin    def test_float(self):
42273c26a3SBaptiste Daroussin        data  = "a : 1.1"
43273c26a3SBaptiste Daroussin        valid = {"a" : 1.1}
44273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load(data), valid)
45273c26a3SBaptiste Daroussin
46273c26a3SBaptiste Daroussin    def test_boolean(self):
47273c26a3SBaptiste Daroussin        data = (
48273c26a3SBaptiste Daroussin            "a : True;" \
49273c26a3SBaptiste Daroussin            "b : False"
50273c26a3SBaptiste Daroussin        )
51273c26a3SBaptiste Daroussin        valid = { "a" : True, "b" : False }
52273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load(data), valid)
53273c26a3SBaptiste Daroussin
54273c26a3SBaptiste Daroussin    def test_empty_ucl(self):
55273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load("{}"), {})
56273c26a3SBaptiste Daroussin
57273c26a3SBaptiste Daroussin    def test_single_brace(self):
58273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load("{"), {})
59273c26a3SBaptiste Daroussin
60273c26a3SBaptiste Daroussin    def test_single_back_brace(self):
61273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load("}"), {})
62273c26a3SBaptiste Daroussin
63273c26a3SBaptiste Daroussin    def test_single_square_forward(self):
64273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load("["), [])
65273c26a3SBaptiste Daroussin
66273c26a3SBaptiste Daroussin    def test_invalid_ucl(self):
67273c26a3SBaptiste Daroussin        with self.assertRaisesRegex(ValueError, "unfinished key$"):
68273c26a3SBaptiste Daroussin            ucl.load('{ "var"')
69273c26a3SBaptiste Daroussin
70273c26a3SBaptiste Daroussin    def test_comment_ignored(self):
71273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load("{/*1*/}"), {})
72273c26a3SBaptiste Daroussin
73273c26a3SBaptiste Daroussin    def test_1_in(self):
74*a0409676SBaptiste Daroussin        valid = {
75*a0409676SBaptiste Daroussin            'key1': [
76*a0409676SBaptiste Daroussin                'value',
77*a0409676SBaptiste Daroussin                'value2',
78*a0409676SBaptiste Daroussin                'value;',
79*a0409676SBaptiste Daroussin                1.0,
80*a0409676SBaptiste Daroussin                -0xdeadbeef,
81*a0409676SBaptiste Daroussin                '0xdeadbeef.1',
82*a0409676SBaptiste Daroussin                '0xreadbeef',
83*a0409676SBaptiste Daroussin                -1e-10,
84*a0409676SBaptiste Daroussin                1,
85*a0409676SBaptiste Daroussin                True,
86*a0409676SBaptiste Daroussin                False,
87*a0409676SBaptiste Daroussin                True,
88*a0409676SBaptiste Daroussin            ]
89*a0409676SBaptiste Daroussin        }
90273c26a3SBaptiste Daroussin        with open("../tests/basic/1.in", "r") as in1:
91273c26a3SBaptiste Daroussin            self.assertEqual(ucl.load(in1.read()), valid)
92273c26a3SBaptiste Daroussin
93273c26a3SBaptiste Daroussin    def test_every_type(self):
94273c26a3SBaptiste Daroussin        data = ("""{
95273c26a3SBaptiste Daroussin            "key1": value;
96273c26a3SBaptiste Daroussin            "key2": value2;
97273c26a3SBaptiste Daroussin            "key3": "value;"
98273c26a3SBaptiste Daroussin            "key4": 1.0,
99273c26a3SBaptiste Daroussin            "key5": -0xdeadbeef
100273c26a3SBaptiste Daroussin            "key6": 0xdeadbeef.1
101273c26a3SBaptiste Daroussin            "key7": 0xreadbeef
102273c26a3SBaptiste Daroussin            "key8": -1e-10,
103273c26a3SBaptiste Daroussin            "key9": 1
104273c26a3SBaptiste Daroussin            "key10": true
105273c26a3SBaptiste Daroussin            "key11": no
106273c26a3SBaptiste Daroussin            "key12": yes
107273c26a3SBaptiste Daroussin        }""")
108273c26a3SBaptiste Daroussin        valid = {
109273c26a3SBaptiste Daroussin            'key1': 'value',
110273c26a3SBaptiste Daroussin            'key2': 'value2',
111273c26a3SBaptiste Daroussin            'key3': 'value;',
112273c26a3SBaptiste Daroussin            'key4': 1.0,
113273c26a3SBaptiste Daroussin            'key5': -3735928559,
114273c26a3SBaptiste Daroussin            'key6': '0xdeadbeef.1',
115273c26a3SBaptiste Daroussin            'key7': '0xreadbeef',
116273c26a3SBaptiste Daroussin            'key8': -1e-10,
117273c26a3SBaptiste Daroussin            'key9': 1,
118273c26a3SBaptiste Daroussin            'key10': True,
119273c26a3SBaptiste Daroussin            'key11': False,
120273c26a3SBaptiste Daroussin            'key12': True,
121273c26a3SBaptiste Daroussin            }
122273c26a3SBaptiste Daroussin        self.assertEqual(ucl.load(data), valid)
123