55 lines
1.1 KiB
Python
55 lines
1.1 KiB
Python
|
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"
|
||
|
]
|