1*273c26a3SBaptiste Daroussinfrom .compat import unittest 2*273c26a3SBaptiste Daroussinimport ucl 3*273c26a3SBaptiste Daroussinimport sys 4*273c26a3SBaptiste Daroussin 5*273c26a3SBaptiste Daroussinclass DumpTest(unittest.TestCase): 6*273c26a3SBaptiste Daroussin def test_no_args(self): 7*273c26a3SBaptiste Daroussin with self.assertRaises(TypeError): 8*273c26a3SBaptiste Daroussin ucl.dump() 9*273c26a3SBaptiste Daroussin 10*273c26a3SBaptiste Daroussin def test_none(self): 11*273c26a3SBaptiste Daroussin self.assertEqual(ucl.dump(None), None) 12*273c26a3SBaptiste Daroussin 13*273c26a3SBaptiste Daroussin def test_null(self): 14*273c26a3SBaptiste Daroussin data = { "a" : None } 15*273c26a3SBaptiste Daroussin valid = "a = null;\n" 16*273c26a3SBaptiste Daroussin self.assertEqual(ucl.dump(data), valid) 17*273c26a3SBaptiste Daroussin 18*273c26a3SBaptiste Daroussin def test_int(self): 19*273c26a3SBaptiste Daroussin data = { "a" : 1 } 20*273c26a3SBaptiste Daroussin valid = "a = 1;\n" 21*273c26a3SBaptiste Daroussin self.assertEqual(ucl.dump(data), valid) 22*273c26a3SBaptiste Daroussin 23*273c26a3SBaptiste Daroussin def test_nested_int(self): 24*273c26a3SBaptiste Daroussin data = { "a" : { "b" : 1 } } 25*273c26a3SBaptiste Daroussin valid = "a {\n b = 1;\n}\n" 26*273c26a3SBaptiste Daroussin self.assertEqual(ucl.dump(data), valid) 27*273c26a3SBaptiste Daroussin 28*273c26a3SBaptiste Daroussin def test_int_array(self): 29*273c26a3SBaptiste Daroussin data = { "a" : [1,2,3,4] } 30*273c26a3SBaptiste Daroussin valid = "a [\n 1,\n 2,\n 3,\n 4,\n]\n" 31*273c26a3SBaptiste Daroussin self.assertEqual(ucl.dump(data), valid) 32*273c26a3SBaptiste Daroussin 33*273c26a3SBaptiste Daroussin def test_str(self): 34*273c26a3SBaptiste Daroussin data = { "a" : "b" } 35*273c26a3SBaptiste Daroussin valid = "a = \"b\";\n" 36*273c26a3SBaptiste Daroussin self.assertEqual(ucl.dump(data), valid) 37*273c26a3SBaptiste Daroussin 38*273c26a3SBaptiste Daroussin @unittest.skipIf(sys.version_info[0] > 2, "Python3 uses unicode only") 39*273c26a3SBaptiste Daroussin def test_unicode(self): 40*273c26a3SBaptiste Daroussin data = { unicode("a") : unicode("b") } 41*273c26a3SBaptiste Daroussin valid = unicode("a = \"b\";\n") 42*273c26a3SBaptiste Daroussin self.assertEqual(ucl.dump(data), valid) 43*273c26a3SBaptiste Daroussin 44*273c26a3SBaptiste Daroussin def test_float(self): 45*273c26a3SBaptiste Daroussin data = { "a" : 1.1 } 46*273c26a3SBaptiste Daroussin valid = "a = 1.100000;\n" 47*273c26a3SBaptiste Daroussin self.assertEqual(ucl.dump(data), valid) 48*273c26a3SBaptiste Daroussin 49*273c26a3SBaptiste Daroussin def test_boolean(self): 50*273c26a3SBaptiste Daroussin data = { "a" : True, "b" : False } 51*273c26a3SBaptiste Daroussin valid = [ 52*273c26a3SBaptiste Daroussin "a = true;\nb = false;\n", 53*273c26a3SBaptiste Daroussin "b = false;\na = true;\n" 54*273c26a3SBaptiste Daroussin ] 55*273c26a3SBaptiste Daroussin self.assertIn(ucl.dump(data), valid) 56*273c26a3SBaptiste Daroussin 57*273c26a3SBaptiste Daroussin def test_empty_ucl(self): 58*273c26a3SBaptiste Daroussin self.assertEqual(ucl.dump({}), "") 59*273c26a3SBaptiste Daroussin 60*273c26a3SBaptiste Daroussin def test_json(self): 61*273c26a3SBaptiste Daroussin data = { "a" : 1, "b": "bleh;" } 62*273c26a3SBaptiste Daroussin valid = [ 63*273c26a3SBaptiste Daroussin '{\n "a": 1,\n "b": "bleh;"\n}', 64*273c26a3SBaptiste Daroussin '{\n "b": "bleh;",\n "a": 1\n}' 65*273c26a3SBaptiste Daroussin ] 66*273c26a3SBaptiste Daroussin self.assertIn(ucl.dump(data, ucl.UCL_EMIT_JSON), valid) 67