def test_is_interruptable(self) -> None:
        body = DummyPulseTemplate(is_interruptable=False)
        t = RepetitionPulseTemplate(body, 6)
        self.assertFalse(t.is_interruptable)

        body.is_interruptable_ = True
        self.assertTrue(t.is_interruptable)
    def test_parameter_names_and_declarations(self) -> None:
        body = DummyPulseTemplate()
        t = RepetitionPulseTemplate(body, 5)
        self.assertEqual(body.parameter_names, t.parameter_names)
        self.assertEqual(body.parameter_declarations, t.parameter_declarations)

        body.parameter_names_ = {"foo", "t", "bar"}
        self.assertEqual(body.parameter_names, t.parameter_names)
        self.assertEqual(body.parameter_declarations, t.parameter_declarations)
    def test_requires_stop_declaration(self) -> None:
        body = DummyPulseTemplate(requires_stop=False)
        t = RepetitionPulseTemplate(body, ParameterDeclaration("foo"))

        parameter = DummyParameter()
        parameters = dict(foo=parameter)

        parameter.requires_stop_ = False
        self.assertFalse(t.requires_stop(parameters))
        parameter.requires_stop_ = True
        self.assertTrue(t.requires_stop(parameters))

        body.requires_stop_ = True
        parameter.requires_stop_ = False
        self.assertFalse(t.requires_stop(parameters))
        parameter.requires_stop_ = True
        self.assertTrue(t.requires_stop(parameters))
 def test_requires_stop_constant(self) -> None:
     body = DummyPulseTemplate(requires_stop=False)
     t = RepetitionPulseTemplate(body, 2)
     self.assertFalse(t.requires_stop({}))
     body.requires_stop_ = True
     self.assertFalse(t.requires_stop({}))