ķ
Ąŧ\c           @   sO  d  d l  m Z m Z m Z m Z m Z m Z m Z m Z m	 Z	 m
 Z
 d  d l m Z m Z m Z m Z m Z d  d l m Z m Z m Z m Z m Z d  d l m Z m Z m Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d   Z) d   Z* d S(   i˙˙˙˙(
   t   Qasmt   prodt
   flip_indext   trimt	   get_indext   nonblankt	   fullsplitt
   fixcommandt   stripquotest	   read_qasm(   t   Xt   Zt   Ht   St   T(   t   CNOTt   SWAPt   CPHASEt   CGatet   CGateS(   t   Mzt   CreateOneQubitGatet   CreateCGatec          C   sA   d }  t  |   } | j   t d d  t d  k s= t  d  S(   Ns;       qubit q_0
    qubit q_1
    h q_0
    cnot q_0,q_1
    i   i    (   R	   t   get_circuitR   R   t   AssertionError(   t
   qasm_linest   q(    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_readqasm   s    c          C   sD   t  d d d d  }  |  j   t d d  t d  k s@ t  d  S(   Ns   qubit q0s   qubit q1s   h q0s
   cnot q0,q1i   i    (   R    R   R   R   R   (   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_ex1   s    c          C   so   t    }  |  j d  |  j d  |  j d  |  j d d  |  j   t d d  t d  k sk t  d  S(   Nt   q_0t   q_1i   i    (   R    t   qubitt   ht   cnotR   R   R   R   (   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_ex1_methodcalls   s    	c          C   sW   t  d d d d d  }  |  j   t d d  t d d  t d d  k sS t  d  S(   Ns   qubit q0s   qubit q1s
   cnot q0,q1s
   cnot q1,q0i   i    (   R    R   R   R   (   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_swap   s    c          C   sĒ   t  d d d d d d d d d	 d
 d  }  |  j   t d t d   t d t d   t d  t d  t d  t d d  t d d  t d  k sĻ t  d  S(   Ns	   qubit q_0s	   qubit q_1s	   qubit q_2s   h  q_1s   cnot q_1,q_2s   cnot q_0,q_1s   h q_0s   measure q_1s   measure q_0s   c-x q_1,q_2s   c-z q_0,q_2i   i    i   (	   R    R   R   R   R
   R   R   R   R   (   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_ex2"   s
    	c          C   s   x{ d t  f d t f d t f d t f d t f d t f g D]= \ }  } t d d |   } | j   | d	  k s= t  q= Wd  S(
   Nt   xt   zR    t   st   tt   measures	   qubit q_0s   %s q_0i    (	   R
   R   R   R   R   R   R    R   R   (   t   symbolt   gateR   (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_1q)   s    Ic          C   sm   xf d t  f d t f d t f g D]C \ }  } t d d d |   } | j   | d d  k s" t  q" Wd  S(	   NR!   t   swapt   cphases	   qubit q_0s	   qubit q_1s
   %s q_0,q_1i   i    (   R   R   R   R    R   R   (   R*   R+   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_2q.   s    .c          C   s@   t  d d d d  }  |  j   t d t d   k s< t  d  S(	   Ns   qubit q0s   qubit q1s   qubit q2s   toffoli q2,q1,q0i    i   i   (   i    i   (   R    R   R   R
   R   (   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_3q3   s    c           C   s_   t  d d d g  d k s! t  t  t d  t d  g  t d  t d  k s[ t  d  S(   Ni   i   i   i   i    (   R   R   R   R
   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_prod7   s    !c           C   s:   t  d d  d k s t  t  d d  d k s6 t  d  S(   Ni    i   i   (   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_flip_index;   s    c           C   s4   t  d  d k s t  t  d  d k s0 t  d  S(   Ns   nothing happens heres   Something #happens heres
   Something (   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_trim?   s    c           C   sF   t  d d d g  d k s! t  t  d d d g  d k sB t  d  S(   Nt   q0t   q1i   i    (   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_get_indexC   s    !c           C   sL   t  t d   t  d  k s$ t  t  t d   t  d  k sH t  d  S(   Nt   abcds   abc t   abc(   t   listR   R   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_nonblankG   s    $c           C   s.   t  d  d d d d d g f k s* t  d  S(   Ns   g q0,q1,q2,  q3t   gR4   R5   t   q2t   q3(   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_fullsplitK   s    c           C   s4   t  d  d k s t  t  d  d k s0 t  d  S(   Nt   foot   deft   qdef(   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_fixcommandN   s    c           C   sL   t  d  d k s t  t  d  d k s0 t  t  d  d k sH t  d  S(   Ns   'S'R   s   "S"(   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_stripquotesR   s    c          C   s   t  d d d  }  t d  } t |  j    d k s< t  t  d d d d  }  t d  } t |  j    d	 k s{ t  d  S(
   Ns	   def Q,0,Qs   qubit q0s   Q q0t   Qs   Q(0)s
   def CQ,1,Qs   qubit q1s   CQ q0,q1s   C((1),Q(0))(   R    R   t   strR   R   R   (   R   t   Qgate(    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   test_qasm_qdefW   s    N(+   t   sympy.physics.quantum.qasmR    R   R   R   R   R   R   R   R   R	   t   sympy.physics.quantum.gateR
   R   R   R   R   R   R   R   R   R   t!   sympy.physics.quantum.circuitplotR   R   R   R   R   R"   R#   R$   R,   R/   R0   R1   R2   R3   R6   R:   R>   RB   RC   RG   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_qasm.pyt   <module>   s(   F((	
															