6 class AutoTagTests(unittest.TestCase):
7 def test_autotags_void(self):
10 tags.TaggedObject(tag = tags.VOID, value = None),
13 def test_autotags_true(self):
16 tags.TaggedObject(tag = tags.TRUE, value = True),
19 def test_autotags_false(self):
22 tags.TaggedObject(tag = tags.FALSE, value = False),
25 def test_autotags_int_defaults_to_INT32(self):
28 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = 127),
32 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = -128),
36 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = 128),
40 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = -129),
44 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = -32768),
48 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = 32767),
52 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = -32769),
56 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = 32768),
59 tags.autotag(-2147483648),
60 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = -2147483648),
63 tags.autotag(2147483647),
64 tags.TaggedObject(tag = tags.DEFAULT_INTEGER_ENCODING, value = 2147483647),
67 tags.autotag(-2147483649),
68 tags.TaggedObject(tag = tags.INT64, value = -2147483649),
71 tags.autotag(2147483648),
72 tags.TaggedObject(tag = tags.INT64, value = 2147483648),
75 tags.autotag(-9223372036854775808),
76 tags.TaggedObject(tag = tags.INT64, value = -9223372036854775808),
79 tags.autotag(9223372036854775807),
80 tags.TaggedObject(tag = tags.INT64, value = 9223372036854775807),
83 with self.assertRaises(tags.TooWideError):
84 tags.autotag(9223372036854775808)
86 with self.assertRaises(tags.TooWideError):
87 tags.autotag(-9223372036854775809)
89 def test_autotags_int_to_smallest_possible_type_when_preferred_type_is_smallest(self):
91 tags.autotag(127, preferred_integer_tag=tags.SMALLEST),
92 tags.TaggedObject(tag = tags.INT8, value = 127),
95 tags.autotag(-128, preferred_integer_tag=tags.SMALLEST),
96 tags.TaggedObject(tag = tags.INT8, value = -128),
99 tags.autotag(128, preferred_integer_tag=tags.SMALLEST),
100 tags.TaggedObject(tag = tags.INT16, value = 128),
103 tags.autotag(-129, preferred_integer_tag=tags.SMALLEST),
104 tags.TaggedObject(tag = tags.INT16, value = -129),
107 tags.autotag(-32768, preferred_integer_tag=tags.SMALLEST),
108 tags.TaggedObject(tag = tags.INT16, value = -32768),
111 tags.autotag(32767, preferred_integer_tag=tags.SMALLEST),
112 tags.TaggedObject(tag = tags.INT16, value = 32767),
115 tags.autotag(-32769, preferred_integer_tag=tags.SMALLEST),
116 tags.TaggedObject(tag = tags.INT32, value = -32769),
119 tags.autotag(32768, preferred_integer_tag=tags.SMALLEST),
120 tags.TaggedObject(tag = tags.INT32, value = 32768),
123 tags.autotag(-2147483648, preferred_integer_tag=tags.SMALLEST),
124 tags.TaggedObject(tag = tags.INT32, value = -2147483648),
127 tags.autotag(2147483647, preferred_integer_tag=tags.SMALLEST),
128 tags.TaggedObject(tag = tags.INT32, value = 2147483647),
131 tags.autotag(-2147483649, preferred_integer_tag=tags.SMALLEST),
132 tags.TaggedObject(tag = tags.INT64, value = -2147483649),
135 tags.autotag(2147483648, preferred_integer_tag=tags.SMALLEST),
136 tags.TaggedObject(tag = tags.INT64, value = 2147483648),
139 tags.autotag(-9223372036854775808, preferred_integer_tag=tags.SMALLEST),
140 tags.TaggedObject(tag = tags.INT64, value = -9223372036854775808),
143 tags.autotag(9223372036854775807, preferred_integer_tag=tags.SMALLEST),
144 tags.TaggedObject(tag = tags.INT64, value = 9223372036854775807),
147 with self.assertRaises(tags.TooWideError):
148 tags.autotag(9223372036854775808, preferred_integer_tag=tags.SMALLEST)
150 with self.assertRaises(tags.TooWideError):
151 tags.autotag(-9223372036854775809, preferred_integer_tag=tags.SMALLEST)
153 def test_tags_integer_to_preferred_integer_tag(self):
155 tags.autotag(42, preferred_integer_tag = tags.INT8),
156 tags.TaggedObject(tag = tags.INT8, value = 42),
160 tags.autotag(42, preferred_integer_tag = tags.INT16),
161 tags.TaggedObject(tag = tags.INT16, value = 42),
165 tags.autotag(42, preferred_integer_tag = tags.INT32),
166 tags.TaggedObject(tag = tags.INT32, value = 42),
170 tags.autotag(42, preferred_integer_tag = tags.INT64),
171 tags.TaggedObject(tag = tags.INT64, value = 42),
174 def test_tags_string_to_utf8_by_default(self):
176 tags.autotag('Hello, world'),
177 tags.TaggedObject(tag = tags.DEFAULT_STRING_ENCODING, value = 'Hello, world'),
180 def test_tags_string_to_preferred_string_encoding(self):
182 tags.autotag('Hello, world', preferred_string_tag=tags.UTF8),
183 tags.TaggedObject(tag = tags.UTF8, value = 'Hello, world'),
187 tags.autotag('Hello, world', preferred_string_tag=tags.UTF16),
188 tags.TaggedObject(tag = tags.UTF16, value = 'Hello, world'),
192 tags.autotag('Hello, world', preferred_string_tag=tags.UTF32),
193 tags.TaggedObject(tag = tags.UTF32, value = 'Hello, world'),
196 def test_tags_bytes(self):
198 tags.autotag(b'\xde\xad\xbe\xef'),
199 tags.TaggedObject(tag = tags.BINARY, value = b'\xde\xad\xbe\xef'),
202 def test_tags_list(self):
204 tags.autotag([1,2,3]),
208 tags.TaggedObject(tag = tags.INT32, value = 1),
209 tags.TaggedObject(tag = tags.INT32, value = 2),
210 tags.TaggedObject(tag = tags.INT32, value = 3),
215 def test_tags_dictionary(self):
217 tags.autotag(collections.OrderedDict([
222 tag = tags.DICTIONARY,
223 value = collections.OrderedDict([
225 tags.TaggedObject(tag = tags.UTF8, value = 'foo'),
226 tags.TaggedObject(tag = tags.INT32, value = 1),
229 tags.TaggedObject(tag = tags.UTF8, value = 'bar'),
230 tags.TaggedObject(tag = tags.TRUE, value = True),