예제 #1
0
def test_qasm_output_args_format():
    a = raw_types.NamedQubit('a')
    b = raw_types.NamedQubit('b')
    m_a = common_gates.MeasurementGate('meas_a')(a)
    m_b = common_gates.MeasurementGate('meas_b')(b)
    args = cirq.QasmOutputArgs(precision=4,
                               version='2.0',
                               qubit_id_map={
                                   a: 'aaa[0]',
                                   b: 'bbb[0]'
                               },
                               meas_key_id_map={
                                   'meas_a': 'm_a',
                                   'meas_b': 'm_b'
                               })

    assert args.format('_{0}_', a) == '_aaa[0]_'
    assert args.format('_{0}_', b) == '_bbb[0]_'

    assert args.format('_{0:meas}_', m_a.gate.key) == '_m_a_'
    assert args.format('_{0:meas}_', m_b.gate.key) == '_m_b_'

    assert args.format('_{0}_', 89.1234567) == '_89.1235_'
    assert args.format('_{0}_', 1.23) == '_1.23_'

    assert args.format('_{0:half_turns}_', 89.1234567) == '_pi*89.1235_'
    assert args.format('_{0:half_turns}_', 1.23) == '_pi*1.23_'

    assert args.format('_{0}_', 'other') == '_other_'
예제 #2
0
def test_qasm_output_args_validate():
    args = cirq.QasmOutputArgs(version='2.0')
    args.validate_version('2.0')

    with pytest.raises(ValueError):
        args.validate_version('2.1')