Esempio n. 1
0
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)
Esempio n. 2
0
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)