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.

70 lines
2.1 KiB

  1. import random
  2. from unittest import TestCase, main as unittest_main
  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(self.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 = -random.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 = -random.randint(128, 1024)
  25. self.test_register.set(test_val)
  26. self.assertEqual(self.test_register.get_signed(), 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(), -test_val % -128)
  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(), -test_val % 128)
  48. class TestAritmetic(RegisterTest):
  49. pass
  50. if __name__ == "__main__":
  51. unittest_main()