384e4660 |
from hypothesis import given
import numpy as np
import pytest
import qsim.state
|
de93fab3 |
from .common import (
classical_bitstrings,
invalid_bitstrings,
invalid_states,
invalid_norm_states,
n_qubits,
valid_states,
|
384e4660 |
)
|
4a583d36 |
|
384e4660 |
@given(classical_bitstrings)
def test_from_classical(bitstring):
state = qsim.state.from_classical(bitstring)
i = int(bitstring, base=2)
assert np.issubdtype(state.dtype, np.dtype(complex))
assert state.shape == (2 ** len(bitstring),)
assert np.linalg.norm(state) == 1
assert abs(state[i]) == 1
@given(classical_bitstrings)
def test_from_classical_works_on_integer_lists(bitstring):
int_list = [int(b) for b in bitstring]
assert np.all(
qsim.state.from_classical(bitstring) == qsim.state.from_classical(int_list)
)
@given(invalid_bitstrings)
def test_from_classical_raises_on_bad_input(bitstring):
with pytest.raises(ValueError):
qsim.state.from_classical(bitstring)
|
4a583d36 |
|
de93fab3 |
@given(n_qubits)
def test_zero(n):
assert np.array_equal(qsim.state.zero(n), qsim.state.from_classical("0" * n))
|
4a583d36 |
@given(classical_bitstrings)
def test_num_qubits(s):
state = qsim.state.from_classical(s)
assert qsim.state.num_qubits(state) == len(s)
@given(invalid_states)
def test_num_qubits_raises_exception(state):
with pytest.raises(ValueError):
qsim.state.num_qubits(state)
@given(invalid_norm_states)
def test_is_not_normalized(state):
assert not qsim.state.is_normalized(state)
@given(valid_states)
def test_is_normalized(state):
assert qsim.state.is_normalized(state)
@given(n_qubits)
def test_zero(n):
z = qsim.state.zero(n)
assert qsim.state.num_qubits(z) == n
|