def setUp(self): super(PropertyListTests, self).setUp() self.prop_list = PropertyList(_TEST_PROPERTIES)
class PropertyListTests(TestCase): def setUp(self): super(PropertyListTests, self).setUp() self.prop_list = PropertyList(_TEST_PROPERTIES) def test_empty_from_bits(self): props, advanced = self.prop_list.from_bits('111111111') self.assertEqual(props.properties, []) self.assertTrue(props.terminated) self.assertEqual(advanced, 9) def test_empty_to_bits(self): bits = self.prop_list.to_bits(PropList(properties=[], terminated=True)) self.assertEqual(bits, '111111111') def test_single_field_from_bits(self): bits = ('100000000' # Id = 1 '01100001' # Value = 134 '111111111' # Terminator ) props, advanced = self.prop_list.from_bits(bits) self.assertListEqual(props.properties, [Property(definition=_TEST_PROPERTIES[1], values=[134])]) self.assertTrue(props.terminated) self.assertEqual(advanced, 26) def test_single_field_to_bits(self): props = PropList(properties=[Property(definition=_TEST_PROPERTIES[1], values=[134])], terminated=True) bits = self.prop_list.to_bits(props) self.assertEqual(bits, ('100000000' # Id = 1 '01100001' # Value = 134 '111111111' # Terminator )) def test_offset_field_from_bits(self): bits = ('010000000' # Id = 2 '0101000' # Value = 10 - 32 = -22 '111111111' # Terminator ) props, advanced = self.prop_list.from_bits(bits) self.assertListEqual(props.properties, [Property(definition=_TEST_PROPERTIES[2], values=[-22])]) self.assertTrue(props.terminated) self.assertEqual(advanced, 25) def test_offset_field_to_bits(self): props = PropList(properties=[Property(definition=_TEST_PROPERTIES[2], values=[-22])], terminated=True) bits = self.prop_list.to_bits(props) self.assertEqual(bits, ('010000000' # Id = 2 '0101000' # Value = 10 - 32 = -22 '111111111' # Terminator )) def test_multiple_field_from_bits(self): bits = ('110000000' # Id = 3 '11011000' # Value = 27 '000000001' # Value = 256 '111111111' # Terminator ) props, advanced = self.prop_list.from_bits(bits) self.assertListEqual(props.properties, [Property(definition=_TEST_PROPERTIES[3], values=[27, 256])]) self.assertTrue(props.terminated) self.assertEqual(advanced, 35) def test_multiple_field_to_bits(self): props = PropList(properties=[Property(definition=_TEST_PROPERTIES[3], values=[27, 256])], terminated=True) bits = self.prop_list.to_bits(props) self.assertEqual(bits, ('110000000' # Id = 3 '11011000' # Value = 27 '000000001' # Value = 256 '111111111' # Terminator )) def test_early_terminator_from_bits(self): bits = ('001000000' # Id = 4 '111111111' # Value = 511 '111111111' # Terminator ) props, advanced = self.prop_list.from_bits(bits) self.assertListEqual(props.properties, [Property(definition=_TEST_PROPERTIES[4], values=[511])]) self.assertTrue(props.terminated) self.assertEqual(advanced, 27) def test_early_terminator_to_bits(self): props = PropList(properties=[Property(definition=_TEST_PROPERTIES[4], values=[511])], terminated=True) bits = self.prop_list.to_bits(props) self.assertEqual(bits, ('001000000' # Id = 4 '111111111' # Value = 511 '111111111' # Terminator )) def test_unterminated_from_bits(self): bits = '1111011110' props, advanced = self.prop_list.from_bits(bits) self.assertListEqual(props.properties, []) self.assertFalse(props.terminated) self.assertEqual(advanced, 0) def test_unterminated_from_bits(self): props = PropList(properties=[], terminated=False) bits = self.prop_list.to_bits(props) self.assertEqual(bits, '')