serial_python_test.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. # Copyright (C) 2011 Internet Systems Consortium.
  2. #
  3. # Permission to use, copy, modify, and distribute this software for any
  4. # purpose with or without fee is hereby granted, provided that the above
  5. # copyright notice and this permission notice appear in all copies.
  6. #
  7. # THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
  8. # DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
  9. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
  10. # INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
  11. # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
  12. # FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
  13. # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
  14. # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. #
  16. # Tests for the rrttl part of the pydnspp module
  17. #
  18. import unittest
  19. import os
  20. from pydnspp import *
  21. class SerialTest(unittest.TestCase):
  22. def setUp(self):
  23. self.one = Serial(1)
  24. self.one_2 = Serial(1)
  25. self.two = Serial(2)
  26. self.date_zero = Serial(1980120100)
  27. self.date_one = Serial(1980120101)
  28. self.zero = Serial(0)
  29. self.highest = Serial(4294967295)
  30. self.number_low = Serial(12345)
  31. self.number_medium = Serial(2000000000)
  32. self.number_high = Serial(4000000000)
  33. def test_init(self):
  34. self.assertRaises(ValueError, Serial, -1)
  35. self.assertRaises(ValueError, Serial, 4294967296)
  36. self.assertRaises(ValueError, Serial, 4294967297)
  37. self.assertRaises(ValueError, Serial, 100000000000)
  38. def test_get_value(self):
  39. self.assertEqual(1, self.one.get_value())
  40. self.assertNotEqual(2, self.one_2.get_value())
  41. self.assertEqual(2, self.two.get_value())
  42. self.assertEqual(1980120100, self.date_zero.get_value())
  43. self.assertEqual(1980120101, self.date_one.get_value())
  44. self.assertEqual(0, self.zero.get_value())
  45. self.assertEqual(4294967295, self.highest.get_value())
  46. self.assertEqual(12345, self.number_low.get_value())
  47. self.assertEqual(2000000000, self.number_medium.get_value())
  48. self.assertEqual(4000000000, self.number_high.get_value())
  49. def test_str(self):
  50. self.assertEqual('1', str(self.one))
  51. self.assertNotEqual('2', str(self.one_2))
  52. self.assertEqual('2', str(self.two))
  53. self.assertEqual('1980120100', str(self.date_zero))
  54. self.assertEqual('1980120101', str(self.date_one))
  55. self.assertEqual('0', str(self.zero))
  56. self.assertEqual('4294967295', str(self.highest))
  57. self.assertEqual('12345', str(self.number_low))
  58. self.assertEqual('2000000000', str(self.number_medium))
  59. self.assertEqual('4000000000', str(self.number_high))
  60. def test_equals(self):
  61. self.assertEqual(self.one, self.one)
  62. self.assertEqual(self.one, self.one_2)
  63. self.assertNotEqual(self.one, self.two)
  64. self.assertNotEqual(self.two, self.one)
  65. self.assertEqual(Serial(12345), self.number_low)
  66. self.assertNotEqual(Serial(12346), self.number_low)
  67. def test_compare(self):
  68. # These should be true/false even without serial arithmetic
  69. self.assertLessEqual(self.one, self.one)
  70. self.assertLessEqual(self.one, self.one_2)
  71. self.assertLess(self.one, self.two)
  72. self.assertLessEqual(self.one, self.one)
  73. self.assertLessEqual(self.one, self.two)
  74. self.assertGreater(self.two, self.one)
  75. self.assertGreaterEqual(self.two, self.two)
  76. self.assertGreaterEqual(self.two, self.one)
  77. self.assertLess(self.one, self.number_low)
  78. self.assertLess(self.number_low, self.number_medium)
  79. self.assertLess(self.number_medium, self.number_high)
  80. # These should 'wrap'
  81. self.assertGreater(self.zero, self.highest)
  82. self.assertLess(self.highest, self.one)
  83. self.assertLess(self.number_high, self.number_low)
  84. def test_addition(self):
  85. self.assertEqual(self.two, self.one + self.one)
  86. self.assertEqual(self.two, self.one + self.one_2)
  87. self.assertEqual(self.highest, self.highest + self.zero)
  88. self.assertEqual(self.zero, self.highest + self.one)
  89. self.assertEqual(self.one, self.highest + self.two)
  90. self.assertEqual(self.one, self.highest + self.one + self.one)
  91. self.assertEqual(self.one + 100, self.highest + 102)
  92. self.assertEqual(100 + self.one, self.highest + 102)
  93. self.assertEqual(self.zero + 2147483645, self.highest + 2147483646)
  94. # using lambda so the error doesn't get thrown on initial evaluation
  95. self.assertRaises(TypeError, lambda: self.zero + "bad")
  96. self.assertRaises(TypeError, lambda: self.zero + None)
  97. self.assertRaises(TypeError, lambda: "bad" + self.zero)
  98. if __name__ == '__main__':
  99. unittest.main()