X-Git-Url: https://code.kerkeslager.com/?a=blobdiff_plain;f=test_don.py;h=0e35e917a4e4e035959c8f5ec5118c9f46193783;hb=84cf65f13614f1ba0ef1b37217a71b46a3b8827a;hp=46034eca6c4d6119a28787d9f854539a0c8215fa;hpb=b3b37a652de06531af2ca1e6c127bc0e7a774f57;p=ton diff --git a/test_don.py b/test_don.py index 46034ec..0e35e91 100644 --- a/test_don.py +++ b/test_don.py @@ -180,32 +180,156 @@ class TestStringDeserialize(unittest.TestCase): string.deserialize('null'), ) - def test_deserializes_null(self): + def test_deserializes_null_with_leading_whitespace(self): + self.assertEqual( + None, + string.deserialize(' \t\nnull'), + ) + + def test_deserializes_true(self): self.assertEqual( True, string.deserialize('true'), ) - def test_deserializes_null(self): + def test_deserializes_true_with_leading_whitespace(self): + self.assertEqual( + True, + string.deserialize(' \t\ntrue'), + ) + + def test_deserializes_false(self): self.assertEqual( False, string.deserialize('false'), ) + def test_deserializes_false_with_leading_whitespace(self): + self.assertEqual( + False, + string.deserialize(' \t\nfalse'), + ) + def test_deserializes_int8(self): self.assertEqual(10, string.deserialize('10i8')) self.assertEqual(-1, string.deserialize('-1i8')) + def test_deserializes_int8_with_leading_whitespace(self): + self.assertEqual(10, string.deserialize(' \t\n10i8')) + self.assertEqual(-1, string.deserialize(' \t\n-1i8')) + def test_deserializes_int16(self): self.assertEqual(10, string.deserialize('10i16')) self.assertEqual(-1, string.deserialize('-1i16')) + def test_deserializes_int16_with_leading_whitespace(self): + self.assertEqual(10, string.deserialize(' \t\n10i16')) + self.assertEqual(-1, string.deserialize(' \t\n-1i16')) + def test_deserializes_int32(self): self.assertEqual(10, string.deserialize('10i32')) self.assertEqual(-1, string.deserialize('-1i32')) + def test_deserializes_int32_with_leading_whitespace(self): + self.assertEqual(10, string.deserialize(' \t\n10i32')) + self.assertEqual(-1, string.deserialize(' \t\n-1i32')) + def test_deserializes_int64(self): self.assertEqual(10, string.deserialize('10i64')) self.assertEqual(-1, string.deserialize('-1i64')) + def test_deserializes_int64_with_leading_whitespace(self): + self.assertEqual(10, string.deserialize(' \t\n10i64')) + self.assertEqual(-1, string.deserialize(' \t\n-1i64')) + + def test_deserializes_float(self): + self.assertEqual(1.0, string.deserialize('1.0f')) + + def test_deserializes_float_with_leading_whitspace(self): + self.assertEqual(1.0, string.deserialize(' \t\n1.0f')) + + def test_deserializes_double(self): + self.assertEqual(1.0, string.deserialize('1.0d')) + + def test_deserializes_double_with_leading_whitespace(self): + self.assertEqual(1.0, string.deserialize(' \t\n1.0d')) + + def test_deserializes_binary(self): + self.assertEqual( + b'\xde\xad\xbe\xef', + string.deserialize('"deadbeef"b'), + ) + + def test_deserializes_binary_with_leading_whitespace(self): + self.assertEqual( + b'\xde\xad\xbe\xef', + string.deserialize(' \t\n"deadbeef"b'), + ) + + def test_deserializes_utf8(self): + self.assertEqual( + "Hello, world", + string.deserialize('"Hello, world"utf8'), + ) + + def test_deserializes_utf16(self): + self.assertEqual( + "Hello, world", + string.deserialize('"Hello, world"utf16'), + ) + + def test_deserializes_utf32(self): + self.assertEqual( + "Hello, world", + string.deserialize('"Hello, world"utf32'), + ) + + def test_deserializes_utf8_with_leading_whitespace(self): + self.assertEqual( + "Hello, world", + string.deserialize(' \t\n"Hello, world"utf8'), + ) + + def test_deserializes_utf16_with_leading_whitespace(self): + self.assertEqual( + "Hello, world", + string.deserialize(' \t\n"Hello, world"utf16'), + ) + + def test_deserializes_utf32_with_leading_whitespace(self): + self.assertEqual( + "Hello, world", + string.deserialize(' \t\n"Hello, world"utf32'), + ) + + def test_deserializes_list(self): + self.assertEqual( + [1,2,3,4,5], + string.deserialize("[1i8,2i8,3i8,4i8,5i8]"), + ) + + def test_deserializes_list_with_leading_whitespace(self): + self.assertEqual( + [1,2,3,4,5], + string.deserialize(" \t\n[ \t\n1i8 \t\n, \t\n2i8 \t\n, \t\n3i8 \t\n, \t\n4i8 \t\n, \t\n5i8 \t\n]"), + ) + + def test_deserializes_dictionary(self): + self.assertEqual( + collections.OrderedDict([ + ('foo', 1), + ('bar', 'baz'), + ]), + string.deserialize('{"foo"utf8:1i32,"bar"utf8:"baz"utf8}'), + ) + + def test_deserializes_dictionary_with_leading_whitespace(self): + self.assertEqual( + collections.OrderedDict([ + ('foo', 1), + ('bar', 'baz'), + ]), + string.deserialize(' \t\n{ \t\n"foo"utf8 \t\n: \t\n1i32 \t\n, \t\n"bar"utf8 \t\n: \t\n"baz"utf8 \t\n}'), + ) + unittest.main()