BCI-assembler/assembler/test/test_011_tokenize.py

72 lines
1.4 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"
]
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"
]