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