def test_wave_simulator_sweeps(): simulator = cirq.SimulatesIntermediateWaveFunction() final_state = np.array([1, 0, 0, 0]) def steps(*args, **kwargs): result = mock.Mock() result.measurements = {'a': np.array([True, True])} result.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_state=final_state), cirq.SimulationTrialResult(measurements={'a': np.array([True, True])}, params=param_resolvers[1], final_state=final_state) ] assert results == expected_results
def test_wave_simulator(): simulator = cirq.SimulatesIntermediateWaveFunction() final_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.state.return_value = final_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(circuit=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_state, final_state)
def test_wave_simulator_no_steps(): simulator = cirq.SimulatesIntermediateWaveFunction() initial_state = np.array([1, 0, 0, 0], dtype=np.complex64) simulator._simulator_iterator.return_value = iter([]) circuit = cirq.testing.random_circuit(2, 20, 0.99) param_resolver = mock.Mock(cirq.ParamResolver) qubit_order = circuit.all_qubits() result = simulator.simulate(circuit=circuit, param_resolver=param_resolver, qubit_order=list(qubit_order), initial_state=initial_state) assert len(result.measurements) == 0 assert result.params == param_resolver np.testing.assert_equal(result.final_state, initial_state)