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