Skip to content

Commit

Permalink
Added hash to DaggeredGate, including test.
Browse files Browse the repository at this point in the history
  • Loading branch information
thomashaener committed Jan 31, 2018
1 parent bc7d434 commit 0f4cd56
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
3 changes: 3 additions & 0 deletions projectq/ops/_metagates.py
Expand Up @@ -108,6 +108,9 @@ def __eq__(self, other):
"""
return isinstance(other, self.__class__) and self._gate == other._gate

def __hash__(self):
return hash(str(self))


def get_inverse(gate):
"""
Expand Down
9 changes: 9 additions & 0 deletions projectq/ops/_metagates_test.py
Expand Up @@ -75,6 +75,15 @@ def test_daggered_gate_str():
assert str(daggered_gate) == str(Y) + "^\dagger"


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)
Expand Down

0 comments on commit 0f4cd56

Please sign in to comment.