def test_can_deal_with_indented_assembly_code(): code = """ LDA ($C2) JMP ($C2) """ bytecode = assemble(code) assert bytecode == [0x10, 0xC2, 0x44, 0xC2]
def test_can_handle_full_line_source_comments(): code = """ ;LDA ($C2) ; don't know why i do this JMP ($C2) """ bytecode = assemble(code) assert bytecode == [0x44, 0xC2]
def test_lables_with_indirect(): code = """ LDA ($C2) back: JMP (back) """ bytecode = assemble(code) assert bytecode == [0x10, 0xC2, 0x44, 0x02]
def test_use_lables(): code = """ LDA ($C2) back: JMP back """ bytecode = assemble(code) assert bytecode == [0x10, 0xC2, 0x34, 0x02]
def test_lable_defined_after_use(): code = """ LDA ($C2) JMP (back) LDA ($C2) back: """ bytecode = assemble(code) assert bytecode == [0x10, 0xC2, 0x44, 0x06, 0x10, 0xC2,]
def test_can_split_incoming_source_assembly(): code = ("LDA ($C2)" "\nJMP ($C2)") bytecode = assemble(code) assert bytecode == [0x10, 0xC2, 0x44, 0xC2]
def test_can_use_the_byte_psedomnemonic_3(): code = "BYTE #11 22 FD" bytecode = assemble(code) assert bytecode == [0x11, 0x22, 0xFD]
def test_can_use_the_byte_psedomnemonic(): code = "BYTE #11" bytecode = assemble(code) assert bytecode == [0x11]
def test_the_byte_psedomnemonic_fails_on_bad_syntax(): code = "BYTE 11" with pytest.raises(AssertionError): bytecode = assemble(code)
def test_can_read_instructions_from_source_assembly(): code = "LDA ($C2)" bytecode = assemble(code) assert bytecode == [0x10, 0xC2]