def test_intermediate_simulator(): simulator = cirq.SimulatesIntermediateState() final_simulator_state = np.array([1, 0, 0, 0]) def steps(*args, **kwargs): result = mock.Mock() result.measurements = {'a': [True, True]} yield result result = mock.Mock() result.measurements = {'b': [True, False]} result._simulator_state.return_value = final_simulator_state yield result simulator._simulator_iterator.side_effect = steps circuit = mock.Mock(cirq.Circuit) param_resolver = mock.Mock(cirq.ParamResolver) qubit_order = mock.Mock(cirq.QubitOrder) result = simulator.simulate(program=circuit, param_resolver=param_resolver, qubit_order=qubit_order, initial_state=2) np.testing.assert_equal(result.measurements['a'], [True, True]) np.testing.assert_equal(result.measurements['b'], [True, False]) assert set(result.measurements.keys()) == {'a', 'b'} assert result.params == param_resolver np.testing.assert_equal(result._final_simulator_state, final_simulator_state)
def test_intermediate_sweeps(): simulator = cirq.SimulatesIntermediateState() final_state = np.array([1, 0, 0, 0]) def steps(*args, **kwargs): result = mock.Mock() result.measurements = {'a': np.array([True, True])} result._simulator_state.return_value = final_state yield result simulator._simulator_iterator.side_effect = steps circuit = mock.Mock(cirq.Circuit) param_resolvers = [mock.Mock(cirq.ParamResolver), mock.Mock(cirq.ParamResolver)] qubit_order = mock.Mock(cirq.QubitOrder) results = simulator.simulate_sweep(program=circuit, params=param_resolvers, qubit_order=qubit_order, initial_state=2) expected_results = [ cirq.SimulationTrialResult( measurements={'a': np.array([True, True])}, params=param_resolvers[0], final_simulator_state=final_state), cirq.SimulationTrialResult( measurements={'a': np.array([True, True])}, params=param_resolvers[1], final_simulator_state=final_state) ] assert results == expected_results