import ISC import unittest class TestCCWireEncoding(unittest.TestCase): def setUp(self): pass def test_to_wire_of_string(self): wire = ISC.CC.Message.to_wire({ "simple" : "string" }) self.assertEqual(wire, b'Skan\x06simple(\x06string') def test_from_wire_of_string(self): wire = b'Skan\x06simple(\x06string' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["simple"], "string") def test_to_wire_of_binary_string(self): wire = ISC.CC.Message.to_wire({ "simple" : b'\x01\xff\x02\x85' }) self.assertEqual(wire, b'Skan\x06simple!\x04\x01\xff\x02\x85') def test_from_wire_of_binary_string(self): wire = b'Skan\x06simple!\x04\x01\xff\x02\x85' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["simple"], b'\x01\xff\x02\x85') def test_to_wire_of_list(self): wire = ISC.CC.Message.to_wire({ "simple" : [ "string" ] }) self.assertEqual(wire, b'Skan\x06simple#\x08(\x06string') def test_from_wire_of_list(self): wire = b'Skan\x06simple#\x08(\x06string' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["simple"], [ "string" ]) def test_to_wire_of_hash(self): wire = ISC.CC.Message.to_wire({ "simple" : { "string" : 1 }}) self.assertEqual(wire, b'Skan\x06simple"\n\x06string(\x011') def test_from_wire_of_hash(self): wire = b'Skan\x06simple"\n\x06string(\x011' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["simple"], { "string" : '1' }) def test_to_wire_of_none(self): wire = ISC.CC.Message.to_wire({ "simple" : None }) self.assertEqual(wire, b'Skan\x06simple\x04') def test_from_wire_of_none(self): wire = b'Skan\x06simple\x04' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["simple"], None) def test_to_wire_of_empty_string(self): wire = ISC.CC.Message.to_wire({ "simple" : "" }) self.assertEqual(wire, b'Skan\x06simple(\x00') def test_from_wire_of_empty_string(self): wire = b'Skan\x06simple(\x00' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["simple"], "") def test_to_wire_of_utf8_string(self): wire = ISC.CC.Message.to_wire({ "simple" : "せんせい" }) self.assertEqual(wire, b'Skan\x06simple(\x0c\xe3\x81\x9b\xe3\x82\x93\xe3\x81\x9b\xe3\x81\x84') def test_from_wire_of_utf8_string(self): wire = b'Skan\x06simple(\x0c\xe3\x81\x9b\xe3\x82\x93\xe3\x81\x9b\xe3\x81\x84' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["simple"], "せんせい") def test_to_wire_of_utf8_label(self): wire = ISC.CC.Message.to_wire({ "せんせい" : "string" }) self.assertEqual(wire, b'Skan\x0c\xe3\x81\x9b\xe3\x82\x93\xe3\x81\x9b\xe3\x81\x84(\x06string') def test_from_wire_of_utf8_label(self): wire = b'Skan\x0c\xe3\x81\x9b\xe3\x82\x93\xe3\x81\x9b\xe3\x81\x84(\x06string' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["せんせい"], "string") def test_to_wire_of_bool_true(self): wire = ISC.CC.Message.to_wire({ "bool": True }) self.assertEqual(wire, b'Skan\x04bool%\x01\x01') def test_to_wire_of_bool_false(self): wire = ISC.CC.Message.to_wire({ "bool": False }) self.assertEqual(wire, b'Skan\x04bool%\x01\x00') def test_from_wire_of_bool_true(self): wire = b'Skan\x04bool%\x01\x01' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["bool"], True) def test_from_wire_of_bool_true(self): wire = b'Skan\x04bool%\x01\x00' decoded = ISC.CC.Message.from_wire(wire) self.assertEqual(decoded["bool"], False) if __name__ == '__main__': unittest.main()