def test_apply_observables(observables, equivalent_gates, qubit_count,
                           batch_size):
    sim_observables = StateVectorSimulation(qubit_count, 0, batch_size)
    sim_observables.apply_observables(observables)
    sim_gates = StateVectorSimulation(qubit_count, 0, batch_size)
    sim_gates.evolve(equivalent_gates)
    assert np.allclose(sim_observables.state_with_observables,
                       sim_gates.state_vector)
def test_apply_observables_fails_second_call(batch_size):
    simulation = StateVectorSimulation(4, 0, batch_size)
    simulation.apply_observables([observables.PauliX([0])])
    simulation.apply_observables([observables.PauliX([0])])