tests/test_state.py
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