test.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import ISC
  2. import unittest
  3. class TestCCWireEncoding(unittest.TestCase):
  4. def setUp(self): pass
  5. def test_to_wire_of_string(self):
  6. wire = ISC.CC.message.to_wire({ "simple" : "string" })
  7. self.assertEqual(wire, b'Skan\x06simple(\x06string')
  8. def test_from_wire_of_string(self):
  9. wire = b'Skan\x06simple(\x06string'
  10. decoded = ISC.CC.message.from_wire(wire)
  11. self.assertEqual(decoded["simple"], "string")
  12. def test_to_wire_of_binary_string(self):
  13. wire = ISC.CC.message.to_wire({ "simple" : b'\x01\xff\x02\x85' })
  14. self.assertEqual(wire, b'Skan\x06simple!\x04\x01\xff\x02\x85')
  15. def test_from_wire_of_binary_string(self):
  16. wire = b'Skan\x06simple!\x04\x01\xff\x02\x85'
  17. decoded = ISC.CC.message.from_wire(wire)
  18. self.assertEqual(decoded["simple"], b'\x01\xff\x02\x85')
  19. def test_to_wire_of_list(self):
  20. wire = ISC.CC.message.to_wire({ "simple" : [ "string" ] })
  21. self.assertEqual(wire, b'Skan\x06simple#\x08(\x06string')
  22. def test_from_wire_of_list(self):
  23. wire = b'Skan\x06simple#\x08(\x06string'
  24. decoded = ISC.CC.message.from_wire(wire)
  25. self.assertEqual(decoded["simple"], [ "string" ])
  26. def test_to_wire_of_hash(self):
  27. wire = ISC.CC.message.to_wire({ "simple" : { "string" : 1 }})
  28. self.assertEqual(wire, b'Skan\x06simple"\n\x06string&\x011')
  29. def test_from_wire_of_hash(self):
  30. wire = b'Skan\x06simple"\n\x06string(\x011'
  31. decoded = ISC.CC.message.from_wire(wire)
  32. self.assertEqual(decoded["simple"], { "string" : '1' })
  33. def test_to_wire_of_none(self):
  34. wire = ISC.CC.message.to_wire({ "simple" : None })
  35. self.assertEqual(wire, b'Skan\x06simple\x04')
  36. def test_from_wire_of_none(self):
  37. wire = b'Skan\x06simple\x04'
  38. decoded = ISC.CC.message.from_wire(wire)
  39. self.assertEqual(decoded["simple"], None)
  40. def test_to_wire_of_empty_string(self):
  41. wire = ISC.CC.message.to_wire({ "simple" : "" })
  42. self.assertEqual(wire, b'Skan\x06simple(\x00')
  43. def test_from_wire_of_empty_string(self):
  44. wire = b'Skan\x06simple(\x00'
  45. decoded = ISC.CC.message.from_wire(wire)
  46. self.assertEqual(decoded["simple"], "")
  47. def test_to_wire_of_utf8_string(self):
  48. wire = ISC.CC.message.to_wire({ "simple" : "せんせい" })
  49. self.assertEqual(wire, b'Skan\x06simple(\x0c\xe3\x81\x9b\xe3\x82\x93\xe3\x81\x9b\xe3\x81\x84')
  50. def test_from_wire_of_utf8_string(self):
  51. wire = b'Skan\x06simple(\x0c\xe3\x81\x9b\xe3\x82\x93\xe3\x81\x9b\xe3\x81\x84'
  52. decoded = ISC.CC.message.from_wire(wire)
  53. self.assertEqual(decoded["simple"], "せんせい")
  54. def test_to_wire_of_utf8_label(self):
  55. wire = ISC.CC.message.to_wire({ "せんせい" : "string" })
  56. self.assertEqual(wire, b'Skan\x0c\xe3\x81\x9b\xe3\x82\x93\xe3\x81\x9b\xe3\x81\x84(\x06string')
  57. def test_from_wire_of_utf8_label(self):
  58. wire = b'Skan\x0c\xe3\x81\x9b\xe3\x82\x93\xe3\x81\x9b\xe3\x81\x84(\x06string'
  59. decoded = ISC.CC.message.from_wire(wire)
  60. self.assertEqual(decoded["せんせい"], "string")
  61. def test_to_wire_of_bool_true(self):
  62. wire = ISC.CC.message.to_wire({ "bool": True })
  63. self.assertEqual(wire, b'Skan\x04bool%\x01\x01')
  64. def test_to_wire_of_bool_false(self):
  65. wire = ISC.CC.message.to_wire({ "bool": False })
  66. self.assertEqual(wire, b'Skan\x04bool%\x01\x00')
  67. def test_from_wire_of_bool_true(self):
  68. wire = b'Skan\x04bool%\x01\x01'
  69. decoded = ISC.CC.message.from_wire(wire)
  70. self.assertEqual(decoded["bool"], True)
  71. def test_from_wire_of_bool_true(self):
  72. wire = b'Skan\x04bool%\x01\x00'
  73. decoded = ISC.CC.message.from_wire(wire)
  74. self.assertEqual(decoded["bool"], False)
  75. def test_to_wire_of_int(self):
  76. wire = ISC.CC.message.to_wire({ "number": 123 })
  77. self.assertEqual(wire, b'Skan\x06number&\x03123')
  78. def test_from_wire_of_int(self):
  79. wire = b'Skan\x06number&\x03123'
  80. decoded = ISC.CC.message.from_wire(wire)
  81. self.assertEqual(decoded["number"], 123)
  82. if __name__ == '__main__':
  83. unittest.main()