added tests for failures

This commit is contained in:
Daniel Knüttel 2018-10-10 10:30:54 +02:00
parent e90c0bfb39
commit d1101ccdfe
1 changed files with 210 additions and 0 deletions

View File

@ -0,0 +1,210 @@
from io import StringIO
import pytest
from assembler.assembler import Assembler, ParsingError
def test_missing_comma(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0 0xfe
ldi r1, 0xfe
add r0, r1
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_missing_newline(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, 0xfe ldi r1, 0xfe
add r0, r1
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_additional_comma1(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi, r0, 0xfe
ldi r1, 0xfe
add r0, r1
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_additional_comma2(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, 0xfe,
ldi r1, 0xfe
add r0, r1
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_bad_mark1(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, 0xfe
this_is_a_bad_mark
ldi r1, 0xfe
add r0, r1
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_bad_mark2(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, 0xfe
This_is_a_bad_mark:
ldi r1, 0xfe
add r0, r1
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_bad_mark3(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, 0xfe
0this_is_a_bad_mark:
ldi r1, 0xfe
add r0, r1
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_bad_mark4(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, this_is_a_missing_mark
ldi r1, 0xfe
add r0, r1
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_bad_mark5(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, this_is_a_missing_mark:
ldi r1, 0xfe
add r0, r1
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_bad_directive1(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, 0
ldi r1, 0xfe
add r0, r1
.set data [0x00, 0x10]
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_bad_directive2(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, 0
ldi r1, 0xfe
add r0, r1
.set[0x00, 0x10]
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_bad_directive3(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, 0
ldi r1, 0xfe
add r0, r1
.set [0x00, 0x10,]
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()
def test_bad_directive4(basic_machine_definition):
memory_definition, command_defintion = basic_machine_definition
data = StringIO(
'''
ldi r0, 0
ldi r1, 0xfe
add r0, r1
.set [0x00, 0x10
'''
)
assembler = Assembler(data, memory_definition, command_defintion, {})
with pytest.raises(ParsingError):
assembler.parse()