1*273c26a3SBaptiste Daroussinfrom .compat import unittest 2*273c26a3SBaptiste Daroussinimport ucl 3*273c26a3SBaptiste Daroussin 4*273c26a3SBaptiste Daroussinclass LoadTest(unittest.TestCase): 5*273c26a3SBaptiste Daroussin def test_no_args(self): 6*273c26a3SBaptiste Daroussin with self.assertRaises(TypeError): 7*273c26a3SBaptiste Daroussin ucl.load() 8*273c26a3SBaptiste Daroussin 9*273c26a3SBaptiste Daroussin def test_multi_args(self): 10*273c26a3SBaptiste Daroussin with self.assertRaises(TypeError): 11*273c26a3SBaptiste Daroussin ucl.load(0,0) 12*273c26a3SBaptiste Daroussin 13*273c26a3SBaptiste Daroussin def test_none(self): 14*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(None), None) 15*273c26a3SBaptiste Daroussin 16*273c26a3SBaptiste Daroussin def test_null(self): 17*273c26a3SBaptiste Daroussin data = "a: null" 18*273c26a3SBaptiste Daroussin valid = { "a" : None } 19*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(data), valid) 20*273c26a3SBaptiste Daroussin 21*273c26a3SBaptiste Daroussin def test_int(self): 22*273c26a3SBaptiste Daroussin data = "a : 1" 23*273c26a3SBaptiste Daroussin valid = { "a" : 1 } 24*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(data), valid) 25*273c26a3SBaptiste Daroussin 26*273c26a3SBaptiste Daroussin def test_braced_int(self): 27*273c26a3SBaptiste Daroussin data = "{a : 1}" 28*273c26a3SBaptiste Daroussin valid = { "a" : 1 } 29*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(data), valid) 30*273c26a3SBaptiste Daroussin 31*273c26a3SBaptiste Daroussin def test_nested_int(self): 32*273c26a3SBaptiste Daroussin data = "a : { b : 1 }" 33*273c26a3SBaptiste Daroussin valid = { "a" : { "b" : 1 } } 34*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(data), valid) 35*273c26a3SBaptiste Daroussin 36*273c26a3SBaptiste Daroussin def test_str(self): 37*273c26a3SBaptiste Daroussin data = "a : b" 38*273c26a3SBaptiste Daroussin valid = { "a" : "b" } 39*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(data), valid) 40*273c26a3SBaptiste Daroussin 41*273c26a3SBaptiste Daroussin def test_float(self): 42*273c26a3SBaptiste Daroussin data = "a : 1.1" 43*273c26a3SBaptiste Daroussin valid = {"a" : 1.1} 44*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(data), valid) 45*273c26a3SBaptiste Daroussin 46*273c26a3SBaptiste Daroussin def test_boolean(self): 47*273c26a3SBaptiste Daroussin data = ( 48*273c26a3SBaptiste Daroussin "a : True;" \ 49*273c26a3SBaptiste Daroussin "b : False" 50*273c26a3SBaptiste Daroussin ) 51*273c26a3SBaptiste Daroussin valid = { "a" : True, "b" : False } 52*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(data), valid) 53*273c26a3SBaptiste Daroussin 54*273c26a3SBaptiste Daroussin def test_empty_ucl(self): 55*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load("{}"), {}) 56*273c26a3SBaptiste Daroussin 57*273c26a3SBaptiste Daroussin def test_single_brace(self): 58*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load("{"), {}) 59*273c26a3SBaptiste Daroussin 60*273c26a3SBaptiste Daroussin def test_single_back_brace(self): 61*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load("}"), {}) 62*273c26a3SBaptiste Daroussin 63*273c26a3SBaptiste Daroussin def test_single_square_forward(self): 64*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load("["), []) 65*273c26a3SBaptiste Daroussin 66*273c26a3SBaptiste Daroussin def test_invalid_ucl(self): 67*273c26a3SBaptiste Daroussin with self.assertRaisesRegex(ValueError, "unfinished key$"): 68*273c26a3SBaptiste Daroussin ucl.load('{ "var"') 69*273c26a3SBaptiste Daroussin 70*273c26a3SBaptiste Daroussin def test_comment_ignored(self): 71*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load("{/*1*/}"), {}) 72*273c26a3SBaptiste Daroussin 73*273c26a3SBaptiste Daroussin def test_1_in(self): 74*273c26a3SBaptiste Daroussin valid = { 'key1': 'value' } 75*273c26a3SBaptiste Daroussin with open("../tests/basic/1.in", "r") as in1: 76*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(in1.read()), valid) 77*273c26a3SBaptiste Daroussin 78*273c26a3SBaptiste Daroussin def test_every_type(self): 79*273c26a3SBaptiste Daroussin data = ("""{ 80*273c26a3SBaptiste Daroussin "key1": value; 81*273c26a3SBaptiste Daroussin "key2": value2; 82*273c26a3SBaptiste Daroussin "key3": "value;" 83*273c26a3SBaptiste Daroussin "key4": 1.0, 84*273c26a3SBaptiste Daroussin "key5": -0xdeadbeef 85*273c26a3SBaptiste Daroussin "key6": 0xdeadbeef.1 86*273c26a3SBaptiste Daroussin "key7": 0xreadbeef 87*273c26a3SBaptiste Daroussin "key8": -1e-10, 88*273c26a3SBaptiste Daroussin "key9": 1 89*273c26a3SBaptiste Daroussin "key10": true 90*273c26a3SBaptiste Daroussin "key11": no 91*273c26a3SBaptiste Daroussin "key12": yes 92*273c26a3SBaptiste Daroussin }""") 93*273c26a3SBaptiste Daroussin valid = { 94*273c26a3SBaptiste Daroussin 'key1': 'value', 95*273c26a3SBaptiste Daroussin 'key2': 'value2', 96*273c26a3SBaptiste Daroussin 'key3': 'value;', 97*273c26a3SBaptiste Daroussin 'key4': 1.0, 98*273c26a3SBaptiste Daroussin 'key5': -3735928559, 99*273c26a3SBaptiste Daroussin 'key6': '0xdeadbeef.1', 100*273c26a3SBaptiste Daroussin 'key7': '0xreadbeef', 101*273c26a3SBaptiste Daroussin 'key8': -1e-10, 102*273c26a3SBaptiste Daroussin 'key9': 1, 103*273c26a3SBaptiste Daroussin 'key10': True, 104*273c26a3SBaptiste Daroussin 'key11': False, 105*273c26a3SBaptiste Daroussin 'key12': True, 106*273c26a3SBaptiste Daroussin } 107*273c26a3SBaptiste Daroussin self.assertEqual(ucl.load(data), valid) 108