39 from cStringIO
import StringIO
41 from io
import BytesIO
as StringIO
46 from roslib.message
import SerializationError
57 from test_rospy.msg
import PythonKeyword
62 self.assertEqual(PythonKeyword._md5sum,
"1330d6bbfad8e75334346fec949d5133")
73 blank.deserialize(b.getvalue())
75 self.assertEqual(orig, blank, str(orig)+
" != "+str(blank))
77 self.assertAlmostEqual(orig.data, blank.data, 5)
81 from test_rospy.msg
import TransitiveImport
82 m = TransitiveImport()
90 from test_rospy.msg
import TestFixedArray
92 self.assertEqual([0.], m.f32_1)
93 self.assertEqual([0., 0., 0.], m.f32_3)
94 self.assertEqual([0.], m.f64_1)
95 self.assertEqual([0., 0., 0.], m.f64_3)
96 self.assertEqual([0], m.i8_1)
97 self.assertEqual([0, 0, 0], m.i8_3)
98 self.assertEqual(chr(0).encode(), m.u8_1)
99 self.assertEqual((chr(0)*3).encode(), m.u8_3)
100 self.assertEqual([0], m.i32_1)
101 self.assertEqual([0, 0, 0], m.i32_3)
102 self.assertEqual([0], m.u32_1)
103 self.assertEqual([0, 0, 0], m.u32_3)
104 self.assertEqual([
''], m.s_1)
105 self.assertEqual([
'',
'',
''], m.s_3)
109 m = TestFixedArray(i32_1 = [1])
112 self.assertEqual((1,), c.i32_1)
114 m = TestFixedArray(i32_3 = [-3, 2, 10])
117 self.assertEqual((-3, 2, 10), c.i32_3)
119 m = TestFixedArray(u32_1 = [1234])
122 self.assertEqual((1234,), c.u32_1)
124 m = TestFixedArray(u32_3 = [3, 2, 10])
127 self.assertEqual((3, 2, 10), c.u32_3)
130 m,c = TestFixedArray(f32_1 = [2.]), TestFixedArray()
132 self.assertEqual((2.,), c.f32_1)
134 m,c = TestFixedArray(f32_3 = [1., 2., 3.]), TestFixedArray()
136 self.assertEqual((1., 2., 3.), c.f32_3)
138 m,c = TestFixedArray(u8_1 = b
'x'), TestFixedArray()
140 self.assertEqual(b
'x', c.u8_1)
142 m,c = TestFixedArray(u8_3 = b
'xyz'), TestFixedArray()
144 self.assertEqual(b
'xyz', c.u8_3)
146 m,c = TestFixedArray(s_1 = [
'']), TestFixedArray()
148 self.assertEqual([
''], c.s_1)
150 m,c = TestFixedArray(s_1 = [
'blah blah blah']), TestFixedArray()
152 self.assertEqual([
'blah blah blah',], c.s_1)
154 m = TestFixedArray(s_3 = [
'',
'x',
'xyz'])
157 self.assertEqual([
'',
'x',
'xyz'], c.s_3)
159 for v
in [
True,
False]:
160 m = TestFixedArray(b_1 = [v])
163 self.assertEqual([v], c.b_1)
165 m = TestFixedArray(b_3 = [
True,
False,
True])
168 self.assertEqual([
True,
False,
True], c.b_3)
173 from test_rospy.msg
import TestConstants
174 self.assertEqual(-123.0, TestConstants.A)
175 self.assertEqual(124.0, TestConstants.B)
176 self.assertEqual(125.0, TestConstants.C)
177 self.assertEqual(123, TestConstants.X)
178 self.assertEqual(-123, TestConstants.Y)
179 self.assertEqual(124, TestConstants.Z)
180 self.assertEqual(
"'hi", TestConstants.SINGLEQUOTE)
181 self.assertEqual(
'"hello" there', TestConstants.DOUBLEQUOTE)
182 self.assertEqual(
'"hello" \'goodbye\'', TestConstants.MULTIQUOTE)
183 self.assertEqual(
'foo', TestConstants.FOO)
184 self.assertEqual(
'"#comments" are ignored, and leading and trailing whitespace removed',TestConstants.EXAMPLE)
185 self.assertEqual(
'strip', TestConstants.WHITESPACE)
186 self.assertEqual(
'', TestConstants.EMPTY)
188 self.assertEqual(
True, TestConstants.TRUE)
189 self.assertEqual(
False, TestConstants.FALSE)
193 self.assertEqual(Empty(), Empty())
198 self.assertEqual(Bool(), Bool())
201 self.assertEqual(
False, Bool().data)
203 for v
in [
True,
False]:
204 self.assertEqual(Bool(v), Bool(v))
205 self.assertEqual(Bool(v), Bool(data=v))
206 self.assertEqual(Bool(data=v), Bool(data=v))
207 self.assertNotEqual(Bool(
True), Bool(
False))
215 Bool(
True).serialize(b)
216 blank.deserialize(b.getvalue())
217 self.assertTrue(blank.data)
218 self.assertTrue(type(blank.data) == bool)
221 Bool(
True).serialize(b)
222 blank.deserialize(b.getvalue())
223 self.assertTrue(blank.data)
224 self.assertTrue(type(blank.data) == bool)
229 self.assertEqual(String(), String())
230 self.assertEqual(
'', String().data)
232 self.assertEqual(String(
''), String())
233 self.assertEqual(String(
''), String(
''))
234 self.assertEqual(String(
'foo'), String(
'foo'))
235 self.assertEqual(String(
'foo'), String(data=
'foo'))
236 self.assertEqual(String(data=
'foo'), String(data=
'foo'))
238 self.assertNotEqual(String(
'foo'), String(
'bar'))
239 self.assertNotEqual(String(
'foo'), String(data=
'bar'))
240 self.assertNotEqual(String(data=
'foo'), String(data=
'bar'))
247 for cls
in [Int8, Int16, Int32, Int64]:
248 v = random.randint(1, 127)
249 self.assertEqual(cls(), cls())
250 self.assertEqual(0, cls().data)
251 self.assertEqual(cls(), cls(0))
252 self.assertEqual(cls(0), cls(0))
253 self.assertEqual(cls(v), cls(v))
254 self.assertEqual(cls(-v), cls(-v))
255 self.assertEqual(cls(v), cls(data=v))
256 self.assertEqual(cls(data=v), cls(data=v))
258 self.assertNotEqual(cls(v), cls())
259 self.assertNotEqual(cls(data=v), cls(data=-v))
260 self.assertNotEqual(cls(data=v), cls(data=v-1))
261 self.assertNotEqual(cls(data=v), cls(v-1))
262 self.assertNotEqual(cls(v), cls(v-1))
270 widths = [(8, Int8), (16, Int16), (32, Int32), (64, Int64)]
271 for w, cls
in widths:
272 maxp =
long(math.pow(2, w-1)) - 1
273 maxn = -
long(math.pow(2, w-1))
277 cls(maxp+1)._check_types()
278 self.fail(
"check_types should have noted width error[%s]: %s, %s"%(w, maxp+1, cls.__name__))
279 except SerializationError:
pass
281 cls(maxn-1)._check_types()
282 self.fail(
"check_types should have noted width error[%s]: %s, %s"%(w, maxn-1, cls.__name__))
283 except SerializationError:
pass
287 for cls
in [UInt8, UInt16, UInt32, UInt64]:
288 v = random.randint(1, 127)
289 self.assertEqual(cls(), cls())
290 self.assertEqual(0, cls().data)
291 self.assertEqual(cls(), cls(0))
292 self.assertEqual(cls(0), cls(0))
293 self.assertEqual(cls(v), cls(v))
294 self.assertEqual(cls(v), cls(data=v))
295 self.assertEqual(cls(data=v), cls(data=v))
297 self.assertNotEqual(cls(v), cls())
298 self.assertNotEqual(cls(data=v), cls(data=-v))
299 self.assertNotEqual(cls(data=v), cls(data=v-1))
300 self.assertNotEqual(cls(data=v), cls(v-1))
301 self.assertNotEqual(cls(v), cls(v-1))
308 cls(-1)._check_types()
309 self.fail(
"check_types should have noted sign error[%s]: %s"%(w, cls.__name__))
310 except SerializationError:
pass
313 widths = [(8, UInt8), (16, UInt16), (32, UInt32), (64, UInt64)]
314 for w, cls
in widths:
315 maxp =
long(math.pow(2, w)) - 1
318 cls(maxp+1)._check_types()
319 self.fail(
"check_types should have noted width error[%s]: %s, %s"%(w, maxp+1, cls.__name__))
320 except SerializationError:
pass
324 for cls
in [Float32, Float64]:
325 self.assertEqual(cls(), cls())
326 self.assertEqual(0., cls().data)
327 self.assertEqual(cls(), cls(0.))
328 self.assertEqual(cls(0.), cls(0.))
329 self.assertEqual(cls(1.), cls(1.))
330 self.assertEqual(cls(1.), cls(data=1.))
331 self.assertEqual(cls(data=1.), cls(data=1.))
332 self.assertEqual(cls(math.pi), cls(math.pi))
333 self.assertEqual(cls(math.pi), cls(data=math.pi))
334 self.assertEqual(cls(data=math.pi), cls(data=math.pi))
336 self.assertNotEqual(cls(1.), cls())
337 self.assertNotEqual(cls(math.pi), cls())
338 self.assertNotEqual(cls(data=math.pi), cls(data=-math.pi))
339 self.assertNotEqual(cls(data=math.pi), cls(data=math.pi-1))
340 self.assertNotEqual(cls(data=math.pi), cls(math.pi-1))
341 self.assertNotEqual(cls(math.pi), cls(math.pi-1))
350 from std_msgs.msg import Int32MultiArray, MultiArrayDimension, MultiArrayLayout, UInt8MultiArray
352 dims = [MultiArrayDimension(
'foo', 1, 2), MultiArrayDimension(
'bar', 3, 4),\
353 MultiArrayDimension(
'foo2', 5, 6), MultiArrayDimension(
'bar2', 7, 8)]
355 self.assertEqual(d, d)
360 self.assertEqual(UInt8MultiArray(),UInt8MultiArray())
361 self.assertEqual(b
'', UInt8MultiArray().data)
362 UInt8MultiArray().serialize(buff)
363 self.assertEqual(UInt8MultiArray(layout=MultiArrayLayout()),UInt8MultiArray())
364 UInt8MultiArray(layout=MultiArrayLayout()).serialize(buff)
365 data =
''.join([chr(i)
for i
in range(0, 100)])
366 v = UInt8MultiArray(data=data)
367 self.
_test_ser_deser(UInt8MultiArray(data=data.encode()),UInt8MultiArray())
369 self.assertEqual(Int32MultiArray(),Int32MultiArray())
370 self.assertEqual(Int32MultiArray(layout=MultiArrayLayout()),Int32MultiArray())
371 self.assertEqual(Int32MultiArray(layout=MultiArrayLayout(), data=[1, 2, 3]),Int32MultiArray(data=[1, 2, 3]))
372 self.assertEqual(Int32MultiArray(layout=MultiArrayLayout(), data=[1, 2, 3]),\
373 Int32MultiArray(layout=MultiArrayLayout(),data=[1, 2, 3]))
374 self.assertEqual(Int32MultiArray(layout=MultiArrayLayout(dim=[]), data=[1, 2, 3]),\
375 Int32MultiArray(layout=MultiArrayLayout(),data=[1, 2, 3]))
376 self.assertEqual(Int32MultiArray(layout=MultiArrayLayout([], 0), data=[1, 2, 3]),\
377 Int32MultiArray(layout=MultiArrayLayout(),data=[1, 2, 3]))
378 self.assertEqual(Int32MultiArray(layout=MultiArrayLayout(dim=[], data_offset=0), data=[1, 2, 3]),\
379 Int32MultiArray(layout=MultiArrayLayout(),data=[1, 2, 3]))
380 self.assertEqual(Int32MultiArray(layout=MultiArrayLayout(dim=dims, data_offset=0), data=[1, 2, 3]),\
381 Int32MultiArray(layout=MultiArrayLayout(dim=dims),data=[1, 2, 3]))
382 self.assertEqual(Int32MultiArray(layout=MultiArrayLayout(dims, 10), data=[1, 2, 3]),\
383 Int32MultiArray(layout=MultiArrayLayout(dim=dims,data_offset=10),data=[1, 2, 3]))
386 self.assertNotEqual(Int32MultiArray(data=[1, 2, 3]),Int32MultiArray(data=[4,5,6]))
387 self.assertNotEqual(Int32MultiArray(layout=MultiArrayLayout([], 1), data=[1, 2, 3]),\
388 Int32MultiArray(layout=MultiArrayLayout([], 0),data=[1, 2, 3]))
389 self.assertNotEqual(Int32MultiArray(layout=MultiArrayLayout([], 1), data=[1, 2, 3]),\
390 Int32MultiArray(layout=MultiArrayLayout(dim=[]),data=[1, 2, 3]))
391 self.assertNotEqual(Int32MultiArray(layout=MultiArrayLayout(dims, 10), data=[1, 2, 3]),\
392 Int32MultiArray(layout=MultiArrayLayout(dim=dims,data_offset=11),data=[1, 2, 3]))
393 self.assertNotEqual(Int32MultiArray(layout=MultiArrayLayout(dim=dims, data_offset=10), data=[1, 2, 3]),\
394 Int32MultiArray(layout=MultiArrayLayout(dim=dims[1:],data_offset=10),data=[1, 2, 3]))
398 self.
_test_ser_deser(Int32MultiArray(layout=MultiArrayLayout()),Int32MultiArray())
399 self.
_test_ser_deser(Int32MultiArray(data=[1, 2, 3]),Int32MultiArray())