import random from unittest import TestCase, main as unittest_main from register import Accumulator, Register TESTS = [] class RegisterTest(TestCase): def setUp(self): Register.registers = [] self.test_accumulator = Accumulator(8) self.test_register = Register(8) class TestSetterGetter(RegisterTest): def test_set(self): test_val = random.randint(0, 255) self.test_register.set(test_val) self.assertEqual(self.test_register.value, test_val) def test_set_overflow(self): test_val = random.randint(256, 1024) self.test_register.set(test_val) self.assertEqual(test_val % 256, self.test_register.value) def test_2s_complement(self): test_val = -random.randint(0, 127) self.test_register.set(test_val) self.assertEqual(self.test_register.get_signed(), test_val) def test_2s_complement_overflow(self): test_val = -random.randint(128, 1024) self.test_register.set(test_val) self.assertEqual(self.test_register.get_signed(), test_val % -128) class TestNegation(RegisterTest): def test_negate(self): test_val = random.randint(0, 127) self.test_register.set(test_val) self.test_register.negate() self.assertEqual(self.test_register.get_signed(), -test_val) def test_negate_overflow(self): test_val = random.randint(128, 1024) self.test_register.set(test_val) self.test_register.negate() self.assertEqual(self.test_register.get_signed(), -test_val % -128) def test_negate_negative(self): test_val = -random.randint(0, 127) self.test_register.set(test_val) self.test_register.negate() self.assertEqual(self.test_register.get_signed(), -test_val) def test_negate_negative_overflow(self): test_val = -random.randint(128, 1024) self.test_register.set(test_val) self.test_register.negate() self.assertEqual(self.test_register.get_signed(), -test_val % 128) class TestAritmetic(RegisterTest): pass if __name__ == "__main__": unittest_main()