Example #1
0
 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))
Example #2
0
 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
Example #3
0
 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))
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
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))
Example #7
0
def gen_reg_equal(reg):
    """Return a Register with value equal to the Register argument."""
    return Register(reg.read())
Example #8
0
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))
Example #9
0
def gen_reg():
    """Return a Register with a random value."""
    return Register(random.randint(-100000, 100000))