Merge pull request 'Removing mxpic_forge from dependency' (#2) from main into pengkun_main #3
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user