1*2cd8c2e5SBaptiste Daroussinfrom .compat import unittest
2*2cd8c2e5SBaptiste Daroussinimport json
3*2cd8c2e5SBaptiste Daroussinimport ucl
4*2cd8c2e5SBaptiste Daroussin
5*2cd8c2e5SBaptiste Daroussin_ucl_inp = '''
6*2cd8c2e5SBaptiste Daroussinparam = value;
7*2cd8c2e5SBaptiste Daroussinsection {
8*2cd8c2e5SBaptiste Daroussin    param = value;
9*2cd8c2e5SBaptiste Daroussin    param1 = value1;
10*2cd8c2e5SBaptiste Daroussin    flag = true;
11*2cd8c2e5SBaptiste Daroussin    number = 10k;
12*2cd8c2e5SBaptiste Daroussin    time = 0.2s;
13*2cd8c2e5SBaptiste Daroussin    string = "something";
14*2cd8c2e5SBaptiste Daroussin    subsection {
15*2cd8c2e5SBaptiste Daroussin        host = {
16*2cd8c2e5SBaptiste Daroussin            host = "hostname";
17*2cd8c2e5SBaptiste Daroussin            port = 900;
18*2cd8c2e5SBaptiste Daroussin        }
19*2cd8c2e5SBaptiste Daroussin        host = {
20*2cd8c2e5SBaptiste Daroussin            host = "hostname";
21*2cd8c2e5SBaptiste Daroussin            port = 901;
22*2cd8c2e5SBaptiste Daroussin        }
23*2cd8c2e5SBaptiste Daroussin    }
24*2cd8c2e5SBaptiste Daroussin}
25*2cd8c2e5SBaptiste Daroussin'''
26*2cd8c2e5SBaptiste Daroussin
27*2cd8c2e5SBaptiste Daroussin_json_res = {
28*2cd8c2e5SBaptiste Daroussin	'param': 'value',
29*2cd8c2e5SBaptiste Daroussin	'section': {
30*2cd8c2e5SBaptiste Daroussin		'param': 'value',
31*2cd8c2e5SBaptiste Daroussin		'param1': 'value1',
32*2cd8c2e5SBaptiste Daroussin		'flag': True,
33*2cd8c2e5SBaptiste Daroussin		'number': 10000,
34*2cd8c2e5SBaptiste Daroussin		'time': '0.2s',
35*2cd8c2e5SBaptiste Daroussin		'string': 'something',
36*2cd8c2e5SBaptiste Daroussin		'subsection': {
37*2cd8c2e5SBaptiste Daroussin			'host': [
38*2cd8c2e5SBaptiste Daroussin				{
39*2cd8c2e5SBaptiste Daroussin					'host': 'hostname',
40*2cd8c2e5SBaptiste Daroussin					'port': 900,
41*2cd8c2e5SBaptiste Daroussin				},
42*2cd8c2e5SBaptiste Daroussin				{
43*2cd8c2e5SBaptiste Daroussin					'host': 'hostname',
44*2cd8c2e5SBaptiste Daroussin					'port': 901,
45*2cd8c2e5SBaptiste Daroussin				}
46*2cd8c2e5SBaptiste Daroussin			]
47*2cd8c2e5SBaptiste Daroussin		}
48*2cd8c2e5SBaptiste Daroussin	}
49*2cd8c2e5SBaptiste Daroussin}
50*2cd8c2e5SBaptiste Daroussin
51*2cd8c2e5SBaptiste Daroussinclass TestExample(unittest.TestCase):
52*2cd8c2e5SBaptiste Daroussin	def test_example(self):
53*2cd8c2e5SBaptiste Daroussin		# load in sample UCL
54*2cd8c2e5SBaptiste Daroussin		u = ucl.load(_ucl_inp)
55*2cd8c2e5SBaptiste Daroussin
56*2cd8c2e5SBaptiste Daroussin		# Output and read back the JSON
57*2cd8c2e5SBaptiste Daroussin		uj = json.loads(json.dumps(u))
58*2cd8c2e5SBaptiste Daroussin
59*2cd8c2e5SBaptiste Daroussin		self.assertEqual(uj, _json_res)
60