test_Utility.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. from unittest import TestCase
  2. from ID2TLib.Utility import *
  3. class TestUtility(TestCase):
  4. def test_update_timestamp_no_delay(self):
  5. self.assertTrue(100+10/5 >= update_timestamp(100, 5) >= 100+1/5)
  6. def test_update_timestamp_with_delay(self):
  7. self.assertTrue(100+1/5+10*100 >= update_timestamp(100, 5, 10) >= 100+1/5+10)
  8. def test_update_timestamp_comparison(self):
  9. self.assertTrue(update_timestamp(100, 5) <= update_timestamp(100, 5, 10))
  10. def test_get_interval_pps_below_max(self):
  11. cipps = [(5, 1), (10, 2), (15, 3)]
  12. self.assertEqual(get_interval_pps(cipps, 3), 1)
  13. self.assertEqual(get_interval_pps(cipps, 7), 2)
  14. self.assertEqual(get_interval_pps(cipps, 12), 3)
  15. def test_get_interval_pps_above_max(self):
  16. cipps = [(5, 1), (10, 2), (15, 3)]
  17. self.assertEqual(get_interval_pps(cipps, 30), 3)
  18. # Errors if empty list and result bad if only one list
  19. def test_get_nth_random_element_equal_no(self):
  20. letters = ["A", "B", "C"]
  21. numbers = [1, 2, 3]
  22. results = [("A", 1), ("B", 2), ("C", 3)]
  23. self.assertIn(get_nth_random_element(letters, numbers), results)
  24. def test_get_nth_random_element_unequal_no(self):
  25. letters = ["A", "B", "C"]
  26. numbers = [1, 2]
  27. results = [("A", 1), ("B", 2)]
  28. self.assertIn(get_nth_random_element(letters, numbers), results)
  29. #def test_get_nth_random_element_single_list(self):
  30. #letters = ["A", "B", "C"]
  31. #self.assertIn(get_nth_random_element(letters), letters)
  32. def test_index_increment_not_max(self):
  33. self.assertEqual(index_increment(5, 10), 6)
  34. def test_index_increment_max(self):
  35. self.assertEqual(index_increment(10, 10), 0)
  36. # Correct?
  37. def test_index_increment_max2(self):
  38. self.assertEqual(index_increment(9, 10), 0)
  39. def test_get_rnd_os(self):
  40. self.assertIn(get_rnd_os(), platforms)
  41. def test_check_platform_valid(self):
  42. check_platform("linux")
  43. def test_check_platform_invalid(self):
  44. with self.assertRaises(SystemExit):
  45. check_platform("abc")
  46. def test_get_ip_range_forwards(self):
  47. start = "192.168.178.254"
  48. end = "192.168.179.1"
  49. result = ["192.168.178.254", "192.168.178.255", "192.168.179.0", "192.168.179.1"]
  50. self.assertEqual(get_ip_range(start, end), result)
  51. def test_get_ip_range_backwards(self):
  52. end = "192.168.178.254"
  53. start = "192.168.179.1"
  54. result = ["192.168.179.1", "192.168.179.0", "192.168.178.255", "192.168.178.254"]
  55. self.assertEqual(get_ip_range(start, end), result)
  56. def test_generate_source_port_from_platform_invalid(self):
  57. with self.assertRaises(SystemExit):
  58. generate_source_port_from_platform("abc")
  59. def test_generate_source_port_from_platform_oldwin_firstport(self):
  60. self.assertTrue(1024 <= generate_source_port_from_platform("winxp") <= 5000)
  61. def test_generate_source_port_from_platform_oldwin_nextport(self):
  62. self.assertEqual(generate_source_port_from_platform("winxp", 2000), 2001)
  63. def test_generate_source_port_from_platform_oldwin_maxport(self):
  64. self.assertTrue(1024 <= generate_source_port_from_platform("winxp", 5000) <= 5000)
  65. def test_generate_source_port_from_platform_linux(self):
  66. self.assertTrue(32768 <= generate_source_port_from_platform("linux") <= 61000)
  67. def test_generate_source_port_from_platform_newwinmac_firstport(self):
  68. self.assertTrue(49152 <= generate_source_port_from_platform("win7") <= 65535)
  69. def test_generate_source_port_from_platform_newwinmac_nextport(self):
  70. self.assertEqual(generate_source_port_from_platform("win7", 50000), 50001)
  71. def test_generate_source_port_from_platform_newwinmac_maxport(self):
  72. self.assertTrue(49152 <= generate_source_port_from_platform("win7", 65535) <= 65535)
  73. # Test get_filetime_format????
  74. def test_get_rnd_boot_time_invalid(self):
  75. with self.assertRaises(SystemExit):
  76. get_rnd_boot_time(10, "abc")
  77. def test_get_rnd_boot_time_linux(self):
  78. self.assertTrue(get_rnd_boot_time(100, "linux") < 100)
  79. def test_get_rnd_boot_time_macos(self):
  80. self.assertTrue(get_rnd_boot_time(100, "macos") < 100)
  81. def test_get_rnd_boot_time_win(self):
  82. self.assertTrue(get_rnd_boot_time(100, "win7") < 100)
  83. def test_get_rnd_x86_nop_len(self):
  84. result = get_rnd_x86_nop(1000)
  85. self.assertEqual(len(result), 1000)
  86. def test_get_rnd_x86_nop_with_sideeffects(self):
  87. result = get_rnd_x86_nop(1000, False)
  88. correct = True
  89. for byte in result:
  90. if byte.to_bytes(1, "little") not in x86_nops and byte.to_bytes(1, "little") not in x86_pseudo_nops:
  91. correct = False
  92. self.assertTrue(correct)
  93. def test_get_rnd_x86_nop_without_sideeffects(self):
  94. result = get_rnd_x86_nop(1000, True)
  95. correct = True
  96. for byte in result:
  97. if byte.to_bytes(1, "little") in x86_pseudo_nops:
  98. correct = False
  99. self.assertTrue(correct)
  100. def test_get_rnd_x86_nop_filter(self):
  101. result = get_rnd_x86_nop(1000, False, x86_nops.copy())
  102. correct = True
  103. for byte in result:
  104. if byte.to_bytes(1, "little") in x86_nops:
  105. correct = False
  106. self.assertTrue(correct)
  107. def test_get_rnd_bytes_number(self):
  108. result = get_rnd_bytes(1000)
  109. self.assertEqual(len(result), 1000)
  110. def test_get_rnd_bytes_filter(self):
  111. result = get_rnd_bytes(1000, x86_pseudo_nops.copy())
  112. correct = True
  113. for byte in result:
  114. if byte.to_bytes(1, "little") in x86_pseudo_nops:
  115. correct = False
  116. self.assertTrue(correct)
  117. def test_get_bytes_from_file_invalid_path(self):
  118. with self.assertRaises(SystemExit):
  119. get_bytes_from_file("resources/NonExistingFile.txt")
  120. def test_get_bytes_from_file_invalid_header(self):
  121. with self.assertRaises(SystemExit):
  122. get_bytes_from_file("resources/InvalidHeader.txt")
  123. def test_get_bytes_from_file_invalid_hexfile(self):
  124. with self.assertRaises(SystemExit):
  125. get_bytes_from_file("resources/InvalidHexFile.txt")
  126. def test_get_bytes_from_file_str(self):
  127. result = get_bytes_from_file("resources/StringTestFile.txt")
  128. self.assertEqual(result, b'This is a string-test')
  129. def test_get_bytes_from_file_hex(self):
  130. result = get_bytes_from_file("resources/HexTestFile.txt")
  131. self.assertEqual(result, b'\xab\xcd\xef\xff\x10\xff\xaa\xab')