def test_read(self): for i in range(100): val = random.randint(-10000, 10000) reg = Register(val) read = reg.read() self.assertEqual(read, val, 'reg.read() returned %s, should be %s' % (read, val))
def __init__(self, n_gpr_registers, gpr_prefix='r', init_values=None): self.prefix = gpr_prefix self.registers = { gpr_prefix + str(i): Register() for i in range(n_gpr_registers) } self.registers['pc'] = Register() if init_values is not None: for name, value in init_values.items(): self[name] = value
def test_write(self): for _ in range(100): reg = gen_reg() val = random.randint(-100000, 100000) reg.write(val) self.assertEqual(reg, Register(val), '%s should have value %d after write' % (reg, val))
def test_get_set_valid(self): for size in [100, 4000, 10000]: memory = Memory(size) for i in range(100): new_value = random.randint(-10000, 10000) address = random.randint(0, size - 1) # Test using addresses stored in Registers 50% of the time. if i % 2 == 0: address = Register(address) memory[address] = new_value self.assertEqual(memory[address], new_value)
def test_sub(self): test_spec = {'op_str': '-', 'op': lambda x, y: x - y, 'exp_fn': lambda r1, r2: Register(r1.read() - r2.read()), 'tests': {'y_above', 'y_equal', 'y_below'}} self.run_tests(test_spec)
def gen_reg_below(reg): """Return a Register with value less than the Register argument.""" return Register(random.randint(reg.read() - 100000, reg.read() - 1))
def gen_reg_equal(reg): """Return a Register with value equal to the Register argument.""" return Register(reg.read())
def gen_reg_above(reg): """Return a Register with value greater than the Register argument.""" return Register(random.randint(reg.read() + 1, reg.read() + 100000))
def gen_reg(): """Return a Register with a random value.""" return Register(random.randint(-100000, 100000))