amaranth/tests/test_tracer.py
Catherine 5dd1223cf8 amaranth.hdl: start all private names with an underscore.
This change completes commit 9dc0617e and makes all the tests pass.
It corresponds with the ongoing langauge reference documentation effort.

Fixes #781.
2024-01-30 17:20:45 +00:00

80 lines
1.9 KiB
Python

from amaranth.hdl._ast import *
from types import SimpleNamespace
from .utils import *
class TracerTestCase(FHDLTestCase):
def test_fast(self):
s1 = Signal()
self.assertEqual(s1.name, "s1")
s2 = Signal()
self.assertEqual(s2.name, "s2")
def test_name(self):
class Dummy:
s1 = Signal()
self.assertEqual(s1.name, "s1")
s2 = Signal()
self.assertEqual(s2.name, "s2")
def test_attr(self):
ns = SimpleNamespace()
ns.s1 = Signal()
self.assertEqual(ns.s1.name, "s1")
ns.s2 = Signal()
self.assertEqual(ns.s2.name, "s2")
def test_index(self):
l = [None]
l[0] = Signal()
self.assertEqual(l[0].name, "$signal")
def test_deref_cell(self):
s1 = Signal()
self.assertEqual(s1.name, "s1")
s2 = Signal()
self.assertEqual(s2.name, "s2")
def dummy():
return s1, s2
def test_deref_free(self):
def inner():
nonlocal s3, s4
s3 = Signal()
s4 = Signal()
return s1, s2
s1 = Signal()
s2 = Signal()
s3 = None
s4 = None
inner()
self.assertEqual(s1.name, "s1")
self.assertEqual(s2.name, "s2")
self.assertEqual(s3.name, "s3")
self.assertEqual(s4.name, "s4")
def test_long(self):
test = ""
for i in range(100000):
test += f"dummy{i} = None\n"
test += "s1 = Signal()\n"
test += "s2 = Signal()\n"
ns = {"Signal": Signal}
exec(test, ns)
self.assertEqual(ns["s1"].name, "s1")
self.assertEqual(ns["s2"].name, "s2")
def test_deref_fast(self):
def inner(s2):
s1 = Signal()
s2 = Signal()
self.assertEqual(s1.name, "s1")
self.assertEqual(s2.name, "s2")
def dummy():
return s1, s2
inner(None)