Merge pull request 'Removing mxpic_forge from dependency' (#2) from main into pengkun_main #3

Merged
PotatoMaxwell merged 16 commits from pengkun_main into qinyue_main 2026-06-10 11:34:17 +00:00
Showing only changes of commit 92e818163c - Show all commits
+45 -2
View File
@@ -221,6 +221,39 @@ class EdaRouterPinsContractTest(unittest.TestCase):
) )
self.assertEqual(_metadata_pins(metadata, r"D:\mxpic\some_project_layout"), {}) self.assertEqual(_metadata_pins(metadata, r"D:\mxpic\some_project_layout"), {})
def test_eda_rotation_is_converted_to_layout_rotation_for_metadata_pins(self):
from mxpic_router.builder import _layout_rotation, _transform_port
self.assertEqual(_layout_rotation(90), -90.0)
x, y, angle = _transform_port(
39.25,
0.0,
360.0,
1719.3,
-2080.5,
_layout_rotation(90),
)
self.assertAlmostEqual(x, 1719.3)
self.assertAlmostEqual(y, -2119.75)
self.assertEqual(angle, 270.0)
def test_perpendicular_pin_rotations_use_straight_bend_straight_route(self):
from mxpic_router.builder import _route_method_name_for_pins
class FakePin:
def __init__(self, angle):
self.a = angle
self.assertEqual(
_route_method_name_for_pins(FakePin(0), FakePin(90)),
"strt_bend_strt_p2p",
)
self.assertEqual(
_route_method_name_for_pins(FakePin(0), FakePin(270)),
"strt_bend_strt_p2p",
)
def test_route_backend_falls_back_to_nazca_interconnect_when_forge_is_absent(self): def test_route_backend_falls_back_to_nazca_interconnect_when_forge_is_absent(self):
import mxpic_router.builder as builder import mxpic_router.builder as builder
@@ -249,6 +282,10 @@ class EdaRouterPinsContractTest(unittest.TestCase):
self.calls.append(("bend_strt_bend_p2p", kwargs)) self.calls.append(("bend_strt_bend_p2p", kwargs))
return "bend" return "bend"
def strt_bend_strt_p2p(self, **kwargs):
self.calls.append(("strt_bend_strt_p2p", kwargs))
return "straight_bend_straight"
class FakeInterconnects: class FakeInterconnects:
Interconnect = FakeInterconnect Interconnect = FakeInterconnect
@@ -268,11 +305,17 @@ class EdaRouterPinsContractTest(unittest.TestCase):
self.assertEqual(route.backend_name, "nazca Interconnect") self.assertEqual(route.backend_name, "nazca Interconnect")
self.assertEqual(route.strt_p2p(pin1="a", pin2="b", arrow=False), "straight") self.assertEqual(route.strt_p2p(pin1="a", pin2="b", arrow=False), "straight")
self.assertEqual(
route.strt_bend_strt_p2p(pin1="a", pin2="b", radius=12, arrow=False),
"straight_bend_straight",
)
self.assertEqual(route.bend_p2p(pin1="a", pin2="b", radius=10, arrow=False), "bend") 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][0], "strt_p2p")
self.assertEqual(FakeInterconnect.calls[0][1]["width"], 0.7) self.assertEqual(FakeInterconnect.calls[0][1]["width"], 0.7)
self.assertEqual(FakeInterconnect.calls[1][0], "bend_strt_bend_p2p") self.assertEqual(FakeInterconnect.calls[1][0], "strt_bend_strt_p2p")
self.assertEqual(FakeInterconnect.calls[1][1]["radius"], 10) self.assertEqual(FakeInterconnect.calls[1][1]["radius"], 12)
self.assertEqual(FakeInterconnect.calls[2][0], "bend_strt_bend_p2p")
self.assertEqual(FakeInterconnect.calls[2][1]["radius"], 10)
finally: finally:
builder._import_mxpic_forge_route = original_import builder._import_mxpic_forge_route = original_import
builder._NazcaInterconnectRoute._create_interconnect = original_create builder._NazcaInterconnectRoute._create_interconnect = original_create