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

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()