Removing mxpic_forge from dependency

This commit is contained in:
=
2026-06-01 13:19:27 +08:00
parent d0b6ac018a
commit 1d603dffad
8 changed files with 164 additions and 18 deletions
+56
View File
@@ -221,6 +221,62 @@ class EdaRouterPinsContractTest(unittest.TestCase):
)
self.assertEqual(_metadata_pins(metadata, r"D:\mxpic\some_project_layout"), {})
def test_route_backend_falls_back_to_nazca_interconnect_when_forge_is_absent(self):
import mxpic_router.builder as builder
class FakeInterconnect:
calls = []
def __init__(self, radius=None, width=None, xs=None, PCB=False):
self.radius = radius
self.width = width
self.xs = xs
self.PCB = PCB
def strt_p2p(self, **kwargs):
self.calls.append(("strt_p2p", kwargs))
return "straight"
def sbend_p2p(self, **kwargs):
self.calls.append(("sbend_p2p", kwargs))
return "sbend"
def ubend_p2p(self, **kwargs):
self.calls.append(("ubend_p2p", kwargs))
return "ubend"
def bend_strt_bend_p2p(self, **kwargs):
self.calls.append(("bend_strt_bend_p2p", kwargs))
return "bend"
class FakeInterconnects:
Interconnect = FakeInterconnect
class FakeNazca:
interconnects = FakeInterconnects
original_import = builder._import_mxpic_forge_route
original_create = builder._NazcaInterconnectRoute._create_interconnect
try:
builder._import_mxpic_forge_route = lambda: (_ for _ in ()).throw(ImportError("no forge"))
builder._NazcaInterconnectRoute._create_interconnect = staticmethod(
lambda **kwargs: FakeInterconnect(**kwargs)
)
route_backend = builder._import_route_backend(FakeNazca)
route = route_backend(radius=20, width=0.7, xs="strip", PCB=False)
self.assertEqual(route.backend_name, "nazca Interconnect")
self.assertEqual(route.strt_p2p(pin1="a", pin2="b", arrow=False), "straight")
self.assertEqual(route.bend_p2p(pin1="a", pin2="b", radius=10, arrow=False), "bend")
self.assertEqual(FakeInterconnect.calls[0][0], "strt_p2p")
self.assertEqual(FakeInterconnect.calls[0][1]["width"], 0.7)
self.assertEqual(FakeInterconnect.calls[1][0], "bend_strt_bend_p2p")
self.assertEqual(FakeInterconnect.calls[1][1]["radius"], 10)
finally:
builder._import_mxpic_forge_route = original_import
builder._NazcaInterconnectRoute._create_interconnect = original_create
if __name__ == "__main__":
unittest.main()