|
|
@@ -2,9 +2,32 @@ from abp import GraphState |
|
|
|
from anders_briegel import graphsim |
|
|
|
|
|
|
|
def test_measurements(): |
|
|
|
|
|
|
|
# Test that measuring |0> in Z gives 0 |
|
|
|
g = GraphState([0]) |
|
|
|
assert g.measure(0, "pz") == 0, "Measuring |0> in Z gives 0" |
|
|
|
|
|
|
|
# Test that measuring |1> in Z gives 1 |
|
|
|
g = GraphState([0]) |
|
|
|
print g |
|
|
|
assert all(g.measure(0, "pz") == 0 for i in range(100)), "Measuring |0> in Z gives 0" |
|
|
|
g.act_local_rotation(0, "px") |
|
|
|
assert g.measure(0, "pz") == 1, "Measuring |1> in Z gives 1" |
|
|
|
|
|
|
|
# Test that measuring |+> in X gives 0 |
|
|
|
g = GraphState([0]) |
|
|
|
g.act_local_rotation(0, "hadamard") |
|
|
|
assert g.measure(0, "px") == 0 |
|
|
|
assert g.measure(0, "px") == 0, "Measuring |+> in X gives 0" |
|
|
|
g.act_local_rotation(0, "pz") |
|
|
|
assert g.measure(0, "px") == 1, "Measuring |-> in X gives 1" |
|
|
|
|
|
|
|
# Test random outcomes |
|
|
|
ones = 0 |
|
|
|
for i in range(1000): |
|
|
|
g = GraphState([0]) |
|
|
|
g.act_local_rotation(0, "hadamard") |
|
|
|
ones += g.measure(0, "pz") |
|
|
|
assert 400 < ones < 600, "This is a probabilistic test!" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_z_measurement_against_ab(): |
|
|
|