完善建模交互、组件图标与系统协议

This commit is contained in:
ljz committed 2026-08-15 17:40:18 +08:00
1 parent 456c29b3b6
commit 6572defaa4
66 files changed
+10067 -4163

No files matched your search

+26
View File
@@ -116,6 +116,32 @@ class AmesimSignalComponentTests(unittest.TestCase):
self.assertAlmostEqual(valve.opening, 0.75)
self.assertEqual(resolver.event_times(0.0, 0.2), (0.1,))
def test_signal_output_can_fan_out_but_input_has_one_driver(self) -> None:
network = SimulationNetwork("signal-cardinality")
step_1 = AmesimStep0(
"step_1", self.medium, initial=0.0, final=0.75, time=0.1
)
step_2 = AmesimStep0(
"step_2", self.medium, initial=1.0, final=0.25, time=0.1
)
valve_1 = AmesimPnvo001SignalOpening(
"valve_1", self.medium, opening0=0.0
)
valve_2 = AmesimPnvo001SignalOpening(
"valve_2", self.medium, opening0=0.0
)
for component in (step_1, step_2, valve_1, valve_2):
network.add_component(component)
network.connect("step_1", "out", "valve_1", "res")
network.connect("step_1", "out", "valve_2", "res")
with self.assertRaisesRegex(ValueError, "already has a driver"):
network.connect("step_2", "out", "valve_1", "res")
SignalResolver(network).solve(0.2)
self.assertAlmostEqual(valve_1.res.signal, 0.75)
self.assertAlmostEqual(valve_2.res.signal, 0.75)
def test_signal_resolver_event_times_are_sorted_and_deduplicated(self) -> None:
network = SimulationNetwork("signal-events")
network.add_component(