Esempio n. 1
0
def test_releasequbit(tmpdir):

    filename = os.path.join(str(tmpdir), 'CQC_File')

    with CQCToFile(file=filename, binary=False) as cqc:

        qubit(cqc)

    with open(filename) as f:
        lines = f.readlines()

    assert len(lines) == 2

    # Check that the first line initialize a qubit
    headers = parse_cqc_message(eval(lines[0][:-1]))
    assert len(headers) == 2
    hdr, cmd = headers
    assert isinstance(hdr, CQCHeader)
    assert hdr.tp == CQCType.COMMAND
    assert isinstance(cmd, CQCCmdHeader)
    assert cmd.qubit_id == 0
    assert cmd.instr == CQC_CMD_NEW

    # Check that the second line releases the qubit
    headers = parse_cqc_message(eval(lines[1][:-1]))
    assert len(headers) == 2
    hdr, cmd = headers
    assert isinstance(hdr, CQCHeader)
    assert hdr.tp == CQCType.COMMAND
    assert isinstance(cmd, CQCCmdHeader)
    assert cmd.qubit_id == 0
    assert cmd.instr == CQC_CMD_RELEASE
Esempio n. 2
0
def test_measurement(tmpdir):

    filename = os.path.join(str(tmpdir), 'CQC_File')

    with CQCToFile(file=filename) as cqc:

        q = qubit(cqc)
        a = q.measure()
        assert a == 0
Esempio n. 3
0
def test_qubitIDs(tmpdir):

    filename = os.path.join(str(tmpdir), 'CQC_File')

    with CQCToFile(file=filename) as cqc:

        a = qubit(cqc)
        a.X()
        b = qubit(cqc)
        b.Z()
        c = qubit(cqc)
        c.H()

        assert a._qID == 0
        assert b._qID == 1
        assert c._qID == 2
Esempio n. 4
0
def test_some_combinations(tmpdir):

    filename = os.path.join(str(tmpdir), 'CQC_File')

    with CQCToFile(file=filename) as cqc:

        q = cqc.createEPR("Alice")
        q.H()
        a = qubit(cqc)
        a.cnot(q)
        cqc.sendQubit(a, "Alice")

        c = cqc.recvQubit()
        d = cqc.recvEPR()
        c.H()
        d.H()
        c.cnot(d)
Esempio n. 5
0
def test_sendSimple(tmpdir):

    filename = os.path.join(str(tmpdir), 'CQC_File')

    with CQCToFile(file=filename, binary=False) as cqc:
        cqc.sendSimple(CQCType.HELLO)

    with open(filename) as f:
        lines = f.readlines()

    assert len(lines) == 1

    # Check that the first line is a header of hello type
    headers = parse_cqc_message(eval(lines[0][:-1]))
    assert len(headers) == 1
    hdr = headers[0]
    assert isinstance(hdr, CQCHeader)
    assert hdr.tp == CQCType.HELLO
Esempio n. 6
0
def test_flushing(tmpdir):

    filename = os.path.join(str(tmpdir), 'CQC_File')

    with CQCToFile(file=filename, pend_messages=True) as cqc:

        assert not cqc._pending_headers

        q = qubit(cqc)
        q.H()
        q.X()
        q.Z()

        assert cqc._pending_headers

        cqc.flush()

        assert not cqc._pending_headers
Esempio n. 7
0
def test_flush_on_exit(tmpdir):
    filename = os.path.join(str(tmpdir), 'CQC_File')

    with CQCToFile(file=filename, pend_messages=True, binary=False) as cqc:

        q = qubit(cqc)
        q.H()
        q.X()

    with open(filename) as f:
        lines = f.readlines()

    # Since pend_messages=True we should only get two lines
    assert len(lines) == 2

    # Check that the first line initialize a qubit
    headers = parse_cqc_message(eval(lines[0][:-1]))
    assert len(headers) == 2
    hdr, cmd = headers
    assert isinstance(hdr, CQCHeader)
    assert hdr.tp == CQCType.COMMAND
    assert isinstance(cmd, CQCCmdHeader)
    assert cmd.qubit_id == 0
    assert cmd.instr == CQC_CMD_NEW

    # Check that the second line applies H, X and releases
    headers = parse_cqc_message(eval(lines[1][:-1]))
    assert len(headers) == 4
    hdr, *cmds = headers
    assert isinstance(hdr, CQCHeader)
    assert hdr.tp == CQCType.COMMAND
    assert len(cmds) == 3
    for cmd in cmds:
        assert isinstance(cmd, CQCCmdHeader)
        assert cmd.qubit_id == 0
    assert cmds[0].instr == CQC_CMD_H
    assert cmds[1].instr == CQC_CMD_X
    assert cmds[2].instr == CQC_CMD_RELEASE
Esempio n. 8
0
def test_createqubit(tmpdir):

    filename = os.path.join(str(tmpdir), 'CQC_File')

    with CQCToFile(file=filename, binary=False) as cqc:

        qubit(cqc)

        # Read the files before cqc goes out of context and flushes
        with open(filename) as f:
            lines = f.readlines()

    assert len(lines) == 1

    # Check that the first line initialize a qubit
    headers = parse_cqc_message(eval(lines[0][:-1]))
    assert len(headers) == 2
    hdr, cmd = headers
    assert isinstance(hdr, CQCHeader)
    assert hdr.tp == CQCType.COMMAND
    assert isinstance(cmd, CQCCmdHeader)
    assert cmd.qubit_id == 0
    assert cmd.instr == CQC_CMD_NEW
Esempio n. 9
0
def test_name(tmpdir):

    filename = os.path.join(str(tmpdir), 'CQC_File')

    with CQCToFile(file=filename) as cqc:
        assert cqc.name == filename