Пример #1
0
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
Пример #2
0
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)
Пример #3
0
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)