def test_scenario1(values): """Test ADD instruction functionality.""" chip_test = Processor() chip_base = Processor() rr = random.randint(0, 15) # Select a random value # Perform the instruction under test: chip_test.PROGRAM_COUNTER = 0 chip_test.set_accumulator(values[1]) chip_test.CARRY = values[0] chip_test.insert_register(rr, values[2]) # Simulate conditions at end of instruction in base chip chip_base.PROGRAM_COUNTER = 0 chip_base.increment_pc(1) chip_base.CARRY = values[4] chip_base.set_accumulator(values[3]) chip_base.insert_register(rr, values[2]) # Carry out the instruction under test # Perform aN ADD operation Processor.add(chip_test, rr) # Make assertions that the base chip is now at the same state as # the test chip which has been operated on by the instruction under test. assert chip_test.read_program_counter() == chip_base.read_program_counter() assert chip_test.read_carry() == chip_base.read_carry() assert chip_test.read_accumulator() == chip_base.read_accumulator() # Pickling each chip and comparing will show equality or not. assert pickle.dumps(chip_test) == pickle.dumps(chip_base)
def test_scenario1(registerpair): """Test FIM instruction functionality.""" chip_test = Processor() chip_base = Processor() rv = random.randint(0, 205) # Select a random 4-bit value # Perform the instruction under test: chip_test.PROGRAM_COUNTER = 0 # Simulate conditions at end of instruction in base chip chip_base.PROGRAM_COUNTER = 0 chip_base.increment_pc(2) # Convert a register pair into a base register for insertion base_register = registerpair * 2 chip_base.insert_register( base_register, (rv >> 4) & 15) # Bit-shift right and remove low bits # noqa chip_base.insert_register( base_register + 1, rv & 15) # Remove low bits # noqa # Carry out the instruction under test # Perform an FIM operation Processor.fim(chip_test, registerpair, rv) # Make assertions that the base chip is now at the same state as # the test chip which has been operated on by the instruction under test. assert chip_test.read_program_counter() == chip_base.read_program_counter() assert chip_test.read_accumulator() == chip_base.read_accumulator() assert chip_test.REGISTERS[base_register] == chip_base.REGISTERS[ base_register] # noqa assert chip_test.REGISTERS[base_register + 1] == chip_base.REGISTERS[base_register + 1] # noqa # Pickling each chip and comparing will show equality or not. assert pickle.dumps(chip_test) == pickle.dumps(chip_base)
def test_scenario1(values, register): """Test ISZ instruction functionality.""" chip_test = Processor() chip_base = Processor() pc = 100 pcaftjump = 150 pcaftnojump = 102 reg = register value = values[0] if values[1] == 'Y': pcaft = pcaftjump else: pcaft = pcaftnojump # Set both chips to initial status # Program Counter chip_test.PROGRAM_COUNTER = pc chip_base.PROGRAM_COUNTER = pc # Registers chip_test.insert_register(reg, value) chip_base.insert_register(reg, value) chip_base.increment_register(reg) # Perform the instruction under test: Processor.isz(chip_test, reg, pcaftjump) # Simulate conditions at end of instruction in base chip chip_base.PROGRAM_COUNTER = pcaft # Make assertions that the base chip is now at the same state as # the test chip which has been operated on by the instruction under test. assert chip_test.read_program_counter() == chip_base.read_program_counter() # Pickling each chip and comparing will show equality or not. assert pickle.dumps(chip_test) == pickle.dumps(chip_base)