def test_ctor_api(self): """Tests construction of systems for systems whose executions semantics are not tested above. """ ConstantValueSource(AbstractValue.Make("Hello world")) ConstantVectorSource(source_value=[1., 2.]) ZeroOrderHold(period_sec=0.1, vector_size=2) ZeroOrderHold(period_sec=0.1, abstract_model_value=AbstractValue.Make("Hello world"))
def test_ctor_api(self): """Tests construction of systems for systems whose executions semantics are not tested above. """ ConstantValueSource(AbstractValue.Make("Hello world")) DiscreteTimeDelay(update_sec=0.1, delay_timesteps=5, vector_size=2) DiscreteTimeDelay( update_sec=0.1, delay_timesteps=5, abstract_model_value=AbstractValue.Make("Hello world")) ZeroOrderHold(period_sec=0.1, vector_size=2) ZeroOrderHold(period_sec=0.1, abstract_model_value=AbstractValue.Make("Hello world"))
def test_context_fix_input_port(self): # WARNING: This is not the recommend workflow; instead, use # `InputPort.FixValue` instead. This is here just for testing / # coverage purposes. dt = 0.1 # Arbitrary. system_vec = ZeroOrderHold(period_sec=dt, vector_size=1) context_vec = system_vec.CreateDefaultContext() context_vec.FixInputPort(index=0, data=[0.]) context_vec.FixInputPort(index=0, vec=BasicVector([0.])) # Test abstract. model_value = AbstractValue.Make("Hello") system_abstract = ZeroOrderHold( period_sec=dt, abstract_model_value=model_value.Clone()) context_abstract = system_abstract.CreateDefaultContext() context_abstract.FixInputPort(index=0, value=model_value.Clone())
def test_event_status(self): system = ZeroOrderHold(period_sec=0.1, vector_size=1) # Existence check. EventStatus.Severity.kDidNothing EventStatus.Severity.kSucceeded EventStatus.Severity.kReachedTermination EventStatus.Severity.kFailed self.assertIsInstance(EventStatus.DidNothing(), EventStatus) self.assertIsInstance(EventStatus.Succeeded(), EventStatus) status = EventStatus.ReachedTermination(system=system, message="done") # Check API. self.assertIsInstance(status, EventStatus) self.assertEqual( status.severity(), EventStatus.Severity.kReachedTermination) self.assertIs(status.system(), system) self.assertEqual(status.message(), "done") self.assertIsInstance( status.KeepMoreSevere(candidate=status), EventStatus) status = EventStatus.Failed(system=system, message="failed") self.assertIsInstance(status, EventStatus)
def test_adder_simulation(self): builder = DiagramBuilder() adder = builder.AddSystem(self._create_adder_system()) adder.set_name("custom_adder") # Add ZOH so we can easily extract state. zoh = builder.AddSystem(ZeroOrderHold(0.1, 3)) zoh.set_name("zoh") builder.ExportInput(adder.get_input_port(0)) builder.ExportInput(adder.get_input_port(1)) builder.Connect(adder.get_output_port(0), zoh.get_input_port(0)) diagram = builder.Build() context = diagram.CreateDefaultContext() self._fix_adder_inputs(context) simulator = Simulator(diagram, context) simulator.Initialize() simulator.AdvanceTo(1) # Ensure that we have the outputs we want. value = (diagram.GetMutableSubsystemContext( zoh, context).get_discrete_state_vector().get_value()) self.assertTrue(np.allclose([5, 7, 9], value))
def test_generate_html(self): system = ZeroOrderHold(period_sec=0.1, vector_size=1) system.set_name("zoh") html = GenerateHtml(system, initial_depth=2) self.assertRegex(html, r'key: "zoh"')