def setUpClass(cls): Settings.default_settings() cls.network = Network(nodes=["Alice", "Bob"]) cls.network.start() cls.alice = CQCConnection("Alice") cls.bob = CQCConnection("Bob")
def test_epr_for_last_position(self): with CQCConnection("Alice") as alice: with CQCConnection("Bob") as bob: alice_qubits = [] bob_qubits = [] for _ in range(Settings.CONF_MAXQUBITS - 1): q = qubit(alice) alice_qubits.append(q) for _ in range(Settings.CONF_MAXQUBITS - 1): q = qubit(bob) bob_qubits.append(q) q = alice.createEPR("Bob", remote_appID=bob._appID) alice_qubits.append(q) q = bob.recvEPR() bob_qubits.append(q) with self.assertRaises(CQCNoQubitError): alice.createEPR("Bob", remote_appID=bob._appID) # remove one qubit from Alice alice_qubits[0].measure() with self.assertRaises(CQCNoQubitError): alice.createEPR("Bob", remote_appID=bob._appID) # remove one qubit from Bob bob_qubits[0].measure() alice.createEPR("Bob", remote_appID=bob._appID) bob.recvEPR()
def setUpClass(cls): simulaqron_settings.default_settings() simulaqron_settings._read_user = False simulaqron_settings.log_level = logging.CRITICAL cls.network = Network(nodes=["Alice", "Bob"], force=True) cls.network.start() cls.alice = CQCConnection("Alice") cls.bob = CQCConnection("Bob")
def test_without_context(self): for _ in range(simulaqron_settings.max_qubits): cqc = CQCConnection("Alice") self.cqcs.append(cqc) qubit(cqc) with self.assertRaises(CQCNoQubitError): cqc = CQCConnection("Alice") self.cqcs.append(cqc) qubit(cqc)
def testMeasuringMultipleQubits(self): with CQCConnection("Alice", pend_messages=True) as alice: with CQCConnection("Bob", appID=1, pend_messages=True) as bob: qs = alice.create_qubits(10) for q in qs: q.measure() ms = alice.flush() self.assertEqual(ms, [0] * 10) self.assertEqual(alice._pending_headers, []) self.assertEqual(bob._pending_headers, []) alice.flush() bob.flush()
def testCNOT(self): with CQCConnection("Alice", pend_messages=True) as alice: with CQCConnection("Bob", appID=1, pend_messages=True) as bob: qs = alice.create_qubits(10) qs[0].X() for i in range(1, 10): qs[i - 1].cnot(qs[i]) [q.measure() for q in qs] ms = alice.flush() self.assertEqual(ms, [1] * 10) # all outcomes should be one self.assertEqual(alice._pending_headers, []) self.assertEqual(bob._pending_headers, []) alice.flush() bob.flush()
def testMultipleNewQubits(self): with CQCConnection("Alice", pend_messages=True) as alice: with CQCConnection("Bob", appID=1, pend_messages=True) as bob: qs = alice.create_qubits(10) self.assertEqual(len(qs), 10) for i in range(1, 10): self.assertEqual(qs[i]._qID, qs[i - 1]._qID + 1) alice.set_pending(False) for q in qs: self.assertEqual(q.measure(), 0) alice.set_pending(True) self.assertEqual(alice._pending_headers, []) self.assertEqual(bob._pending_headers, []) alice.flush() bob.flush()