コード例 #1
0
ファイル: test_maxQubits.py プロジェクト: twobombs/SimulaQron
    def setUpClass(cls):
        Settings.default_settings()
        cls.network = Network(nodes=["Alice", "Bob"])
        cls.network.start()

        cls.alice = CQCConnection("Alice")
        cls.bob = CQCConnection("Bob")
コード例 #2
0
ファイル: test_maxQubits.py プロジェクト: twobombs/SimulaQron
    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()
コード例 #3
0
    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")
コード例 #4
0
 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)
コード例 #5
0
 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()
コード例 #6
0
 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()
コード例 #7
0
 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()