Skip to content

Commit 01a41b9

Browse files
tests for SymbolTable
1 parent cd56cbd commit 01a41b9

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

tests/assemble.py

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from esp32_ulp.assemble import Assembler, TEXT, DATA, BSS, REL, ABS
2+
from esp32_ulp.assemble import SymbolTable
23

34
src = """\
45
@@ -40,7 +41,55 @@ def test_assemble():
4041
assert a.offsets[BSS] == 0
4142

4243

44+
def test_symbols():
45+
st = SymbolTable({}, {})
46+
for entry in [
47+
('rel_t4', REL, TEXT, 4),
48+
('abs_t4', ABS, TEXT, 4),
49+
('rel_d4', REL, DATA, 4),
50+
('abs_d4', ABS, DATA, 4),
51+
]:
52+
st.set_sym(*entry)
53+
# PASS 1 ========================================================
54+
st.set_pass(1)
55+
assert st.has_sym('abs_t4')
56+
assert st.get_sym('abs_t4') == (ABS, TEXT, 4)
57+
assert not st.has_sym('notexist')
58+
assert st.get_sym('notexist') == (REL, TEXT, 0) # pass1 -> dummy
59+
assert st.resolve_absolute('abs_t4') == 4
60+
assert st.resolve_absolute('abs_d4') == 4
61+
assert st.resolve_absolute('rel_t4') == 4
62+
assert st.resolve_absolute('rel_d4') == 4
63+
st.set_from(TEXT, 8)
64+
assert st.resolve_relative('abs_t4') == -4
65+
assert st.resolve_relative('abs_d4') == -4
66+
assert st.resolve_relative('rel_t4') == -4
67+
assert st.resolve_relative('rel_d4') == -4
68+
# PASS 2 ========================================================
69+
st.set_bases({TEXT: 100, DATA: 200})
70+
st.set_pass(2)
71+
assert st.has_sym('abs_t4')
72+
assert st.get_sym('abs_t4') == (ABS, TEXT, 4)
73+
assert not st.has_sym('notexist')
74+
try:
75+
st.get_sym('notexist') # pass2 -> raises
76+
except KeyError:
77+
raised = True
78+
else:
79+
raised = False
80+
assert raised
81+
assert st.resolve_absolute('abs_t4') == 4
82+
assert st.resolve_absolute('abs_d4') == 4
83+
assert st.resolve_absolute('rel_t4') == 100 + 4
84+
assert st.resolve_absolute('rel_d4') == 200 + 4
85+
st.set_from(TEXT, 8)
86+
assert st.resolve_relative('abs_t4') == 4 - 108
87+
assert st.resolve_relative('abs_d4') == 4 - 108
88+
assert st.resolve_relative('rel_t4') == 104 - 108
89+
assert st.resolve_relative('rel_d4') == 204 - 108
90+
91+
4392
test_parse_line()
4493
test_parse()
4594
test_assemble()
46-
95+
test_symbols()

0 commit comments

Comments
 (0)