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