You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
2.2 KiB

  1. import random
  2. from unittest import TestCase
  3. from register import Accumulator, Register
  4. TESTS = []
  5. class RegisterTest(TestCase):
  6. def setUp(self):
  7. Register.registers = []
  8. self.test_accumulator = Accumulator(8)
  9. self.test_register = Register(8)
  10. class TestSetterGetter(RegisterTest):
  11. def test_set(self):
  12. test_val = random.randint(0, 255)
  13. self.test_register.set(test_val)
  14. self.assertEqual(test_register.value, test_val)
  15. def test_set_overflow(self):
  16. test_val = random.randint(256, 1024)
  17. self.test_register.set(test_val)
  18. self.assertEqual(test_val % 256, self.test_register.value)
  19. def test_2s_complement(self):
  20. test_val = -randint(0, 127)
  21. self.test_register.set(test_val)
  22. self.assertEqual(self.test_register.get_signed(), test_val)
  23. def test_2s_complement_overflow(self):
  24. test_val = -randint(128, 1024)
  25. self.test_register.set(test_val)
  26. self.assertEqual(self.test_register.value, test_val % -128)
  27. class TestNegation(RegisterTest):
  28. def test_negate(self):
  29. test_val = random.randint(0, 127)
  30. self.test_register.set(test_val)
  31. self.test_register.negate()
  32. self.assertEqual(self.test_register.get_signed(), -test_val)
  33. def test_negate_overflow(self):
  34. test_val = random.randint(128, 1024)
  35. self.test_register.set(test_val)
  36. self.test_register.negate()
  37. self.assertEqual(self.test_register.get_signed())
  38. def test_negate_negative(self):
  39. test_val = -random.randint(0, 127)
  40. self.test_register.set(test_val)
  41. self.test_register.negate()
  42. self.assertEqual(self.test_register.get_signed(), -test_val)
  43. def test_negate_negative_overflow(self):
  44. test_val = -random.randint(128, 1024)
  45. self.test_register.set(test_val)
  46. self.test_register.negate()
  47. self.assertEqual(self.test_register.get_signed())
  48. class TestAritmetic(RegisterTest):
  49. pass
  50. @test
  51. def test_shift_right():
  52. pass
  53. @test
  54. def test_shift_left():
  55. pass
  56. @test
  57. def test_add():
  58. pass
  59. @test
  60. def test_subtract():
  61. pass
  62. if __name__ == "__main__":
  63. for test_func in TESTS:
  64. test_func()