2018-10-09 09:44:00 +00:00
|
|
|
from io import StringIO
|
|
|
|
from assembler.tokenize import Tokenizer
|
|
|
|
from assembler.context import FileContext
|
|
|
|
|
|
|
|
def test_tokenize_1():
|
|
|
|
data = '''
|
|
|
|
ldi r0, 0xfefe
|
|
|
|
ldi r1, 0xefef
|
|
|
|
add r0, r1
|
|
|
|
'''
|
|
|
|
data = StringIO(data)
|
|
|
|
tokenizer = Tokenizer(FileContext(data))
|
|
|
|
|
|
|
|
result = list(tokenizer)
|
|
|
|
|
|
|
|
assert result == [
|
|
|
|
"ldi", " ", "r0", ",", "0xfefe", "\n"
|
|
|
|
, "ldi", " ", "r1", ",", "0xefef", "\n"
|
|
|
|
, "add", " ", "r0", ",", "r1", "\n"
|
|
|
|
]
|
|
|
|
|
|
|
|
def test_tokenize_2():
|
|
|
|
data = '''
|
|
|
|
; This is a comment
|
|
|
|
|
|
|
|
ldi r0, 0xfefe
|
|
|
|
'''
|
|
|
|
data = StringIO(data)
|
|
|
|
tokenizer = Tokenizer(FileContext(data))
|
|
|
|
|
|
|
|
result = list(tokenizer)
|
|
|
|
|
|
|
|
assert result == [
|
|
|
|
";", "This", " ", "is", " ", "a", " ", "comment", "\n"
|
|
|
|
, "ldi", " ", "r0", ",", "0xfefe", "\n"
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
def test_tokenize_3():
|
|
|
|
data = '''
|
|
|
|
ldi r0, 0xfefe
|
|
|
|
string:
|
|
|
|
.set ['h', 'e', 'l', 'l', 'o']
|
|
|
|
'''
|
|
|
|
data = StringIO(data)
|
|
|
|
tokenizer = Tokenizer(FileContext(data))
|
|
|
|
|
|
|
|
result = list(tokenizer)
|
|
|
|
|
|
|
|
assert result == [
|
|
|
|
"ldi", " ", "r0", ",", "0xfefe", "\n"
|
|
|
|
, "string", ":", "\n"
|
|
|
|
, ".", "set", " ", "[", "'h'", ",", "'e'", ",", "'l'", ",", "'l'", ",", "'o'", "]", "\n"
|
|
|
|
]
|
2018-10-09 13:55:42 +00:00
|
|
|
|
|
|
|
def test_tokenize_4():
|
|
|
|
data = '''
|
|
|
|
ldi r0, 0xfefe
|
|
|
|
test_mark:
|
|
|
|
ldi r1, 0xefef
|
|
|
|
'''
|
|
|
|
data = StringIO(data)
|
|
|
|
tokenizer = Tokenizer(FileContext(data))
|
|
|
|
|
|
|
|
result = list(tokenizer)
|
|
|
|
|
|
|
|
assert result == [
|
|
|
|
"ldi", " ", "r0", ",", "0xfefe", "\n"
|
|
|
|
, "test_mark", ":", "\n"
|
|
|
|
, "ldi", " ", "r1", ",", "0xefef", "\n"
|
|
|
|
]
|