def test_daggered_gate_hashable(): daggered_gate1 = _metagates.DaggeredGate(Y) daggered_gate2 = _metagates.DaggeredGate(T) d = {daggered_gate1: 1, daggered_gate2: 3} assert len(d) == 2 # for efficiency reasons the following should be true: assert hash(daggered_gate1) != hash(daggered_gate2)
def test_daggered_gate_tex_str(): daggered_gate = _metagates.DaggeredGate(Y) str_Y = Y.tex_str() if hasattr(Y, 'tex_str') else str(Y) assert daggered_gate.tex_str() == str_Y + r"${}^\dagger$" # test for a gate with tex_str method rx = Rx(0.5) daggered_rx = _metagates.DaggeredGate(rx) str_rx = rx.tex_str() if hasattr(rx, 'tex_str') else str(rx) assert daggered_rx.tex_str() == str_rx + r"${}^\dagger$"
def test_daggered_gate_init(): # Choose gate which does not have an inverse gate: not_invertible_gate = T with pytest.raises(NotInvertible): not_invertible_gate.get_inverse() # Choose gate which does have an inverse defined: invertible_gate = Y assert invertible_gate.get_inverse() == Y # Test init and matrix dagger_inv = _metagates.DaggeredGate(not_invertible_gate) assert dagger_inv._gate == not_invertible_gate assert np.array_equal(dagger_inv.matrix, np.matrix([[1, 0], [0, cmath.exp(-1j * cmath.pi / 4)]])) inv = _metagates.DaggeredGate(invertible_gate) assert inv._gate == invertible_gate assert np.array_equal(inv.matrix, np.matrix([[0, -1j], [1j, 0]])) # Test matrix no_matrix_gate = Entangle with pytest.raises(AttributeError): no_matrix_gate.matrix inv_no_matrix_gate = _metagates.DaggeredGate(no_matrix_gate) with pytest.raises(AttributeError): inv_no_matrix_gate.matrix
def test_daggered_gate_comparison(): daggered_gate = _metagates.DaggeredGate(Y) daggered_gate2 = _metagates.DaggeredGate(Y) assert daggered_gate == daggered_gate2
def test_daggered_gate_get_inverse(): daggered_gate = _metagates.DaggeredGate(Y) assert daggered_gate.get_inverse() == Y
def test_daggered_gate_str(): daggered_gate = _metagates.DaggeredGate(Y) assert str(daggered_gate) == str(Y) + "^\dagger"
def test_daggered_gate_tex_str(): daggered_gate = _metagates.DaggeredGate(Y) assert daggered_gate.tex_str() == str(Y) + "$^\dagger$"