def test_build_sequence_constant(self) -> None: repetitions = 3 t = RepetitionPulseTemplate(self.body, repetitions) parameters = {} t.build_sequence(self.sequencer, parameters, self.block) self.assertEqual( [(self.body, parameters), (self.body, parameters), (self.body, parameters)], self.sequencer.sequencing_stacks[self.block], )
class RepetitionPulseTemplateSequencingTests(unittest.TestCase): 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({})) 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 setUp(self) -> None: self.body = DummyPulseTemplate() self.repetitions = ParameterDeclaration("foo", max=5) self.template = RepetitionPulseTemplate(self.body, self.repetitions) self.sequencer = DummySequencer(DummySequencingHardware()) self.block = DummyInstructionBlock() def test_build_sequence_constant(self) -> None: repetitions = 3 t = RepetitionPulseTemplate(self.body, repetitions) parameters = {} t.build_sequence(self.sequencer, parameters, self.block) self.assertEqual( [(self.body, parameters), (self.body, parameters), (self.body, parameters)], self.sequencer.sequencing_stacks[self.block], ) def test_build_sequence_declaration_success(self) -> None: parameters = dict(foo=3) self.template.build_sequence(self.sequencer, parameters, self.block) self.assertEqual( [(self.body, parameters), (self.body, parameters), (self.body, parameters)], self.sequencer.sequencing_stacks[self.block], ) def test_build_sequence_declaration_exceeds_bounds(self) -> None: parameters = dict(foo=9) with self.assertRaises(ParameterValueIllegalException): self.template.build_sequence(self.sequencer, parameters, self.block) self.assertFalse(self.sequencer.sequencing_stacks) def test_build_sequence_declaration_parameter_missing(self) -> None: parameters = {} with self.assertRaises(ParameterNotProvidedException): self.template.build_sequence(self.sequencer, parameters, self.block) self.assertFalse(self.sequencer.sequencing_stacks) def test_build_sequence_declaration_parameter_value_not_whole(self) -> None: parameters = dict(foo=3.3) with self.assertRaises(ParameterNotIntegerException): self.template.build_sequence(self.sequencer, parameters, self.block) self.assertFalse(self.sequencer.sequencing_stacks)