def test_loop_to_seqc_leaf(self): """Test the translation of leaves""" # we use None because it is not used in this test user_registers = None wf = DummyWaveform(duration=32) loop = Loop(waveform=wf) # with wrapping repetition loop.repetition_count = 15 waveform_to_bin = mock.Mock(wraps=make_binary_waveform) expected = Repeat(loop.repetition_count, WaveformPlayback(waveform=make_binary_waveform(wf))) result = loop_to_seqc(loop, 1, 1, waveform_to_bin, user_registers=user_registers) waveform_to_bin.assert_called_once_with(wf) self.assertEqual(expected, result) # without wrapping repetition loop.repetition_count = 1 waveform_to_bin = mock.Mock(wraps=make_binary_waveform) expected = WaveformPlayback(waveform=make_binary_waveform(wf)) result = loop_to_seqc(loop, 1, 1, waveform_to_bin, user_registers=user_registers) waveform_to_bin.assert_called_once_with(wf) self.assertEqual(expected, result)
def test_loop_to_seqc_len_1(self): """Test the translation of loops with len(loop) == 1""" loop = Loop(children=[Loop()]) waveform_to_bin = mock.Mock(wraps=make_binary_waveform) loop_to_seqc_kwargs = dict(min_repetitions_for_for_loop=2, min_repetitions_for_shared_wf=3, waveform_to_bin=waveform_to_bin) expected = 'asdf' with mock.patch('qupulse._program.seqc.loop_to_seqc', return_value=expected) as mocked_loop_to_seqc: result = loop_to_seqc(loop, **loop_to_seqc_kwargs) self.assertEqual(result, expected) mocked_loop_to_seqc.assert_called_once_with( loop[0], **loop_to_seqc_kwargs) loop.repetition_count = 14 expected = Repeat(14, 'asdfg') with mock.patch('qupulse._program.seqc.loop_to_seqc', return_value=expected.scope) as mocked_loop_to_seqc: result = loop_to_seqc(loop, **loop_to_seqc_kwargs) self.assertEqual(result, expected) mocked_loop_to_seqc.assert_called_once_with( loop[0], **loop_to_seqc_kwargs) waveform_to_bin.assert_not_called()