ó
­«Y]c           @   s‹   d  d l  Z  d  d l Z d  d l m Z d  d l Z d „  Z d „  Z d e j f d „  ƒ  YZ d d „ Z
 e d k r‡ e
 d	 e ƒ n  d S(
   iÿÿÿÿN(   t   StringIOc         C   sK   t  ƒ  } t j } | t _ t j |  ƒ | t _ | j ƒ  } | j ƒ  | S(   N(   R    t   syst   stdoutt   dist   getvaluet   close(   t   funct   ft   tmpt   result(    (    s$   lib/python2.7/test/test_peepholer.pyt   disassemble   s    				
c         C   s   t  t |  d d ƒ ƒ S(   Nt    t   single(   R
   t   compile(   t   line(    (    s$   lib/python2.7/test/test_peepholer.pyt
   dis_single   s    t   TestTranformsc           B   s}   e  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 RS(   c         C   sJ   d „  } t  | ƒ } x d D] } |  j | | ƒ q W|  j d | ƒ d  S(   Nc         S   s   |  d k s ~  n  d  S(   Ni   (    (   t   x(    (    s$   lib/python2.7/test/test_peepholer.pyt   unot   s    t	   UNARY_NOTt   POP_JUMP_IF_FALSEt   POP_JUMP_IF_TRUE(   R   R   (   R
   t   assertNotInt   assertIn(   t   selfR   t   asmt   elem(    (    s$   lib/python2.7/test/test_peepholer.pyt	   test_unot   s
    	c         C   sC   x< d	 d
 d d f D]( \ } } t  | ƒ } |  j | | ƒ q Wd  S(   Ns
   not a is bs   (is not)s
   not a in bs   (not in)s   not a is not bs   (is)s   not a not in bs   (in)(   s
   not a is bs   (is not)(   s
   not a in bs   (not in)(   s   not a is not bs   (is)(   s   not a not in bs   (in)(   R   R   (   R   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt   test_elim_inversion_of_is_or_in   s    c         C   s   d „  } t  | ƒ } x d D] } |  j | | ƒ q Wx d D] } |  j | | ƒ q= Wd „  } |  j d t  | ƒ ƒ |  j d t  | ƒ ƒ d  S(   Nc         S   s   d  |  S(   N(   t   None(   R   (    (    s$   lib/python2.7/test/test_peepholer.pyR   +   s    t   LOAD_GLOBALt
   LOAD_CONSTs   (None)c           S   s   d S(   s1   Adding a docstring made this test fail in Py2.5.0N(   R   (    (    (    s$   lib/python2.7/test/test_peepholer.pyR   3   s    (   R   (   R   s   (None)(   R
   R   R   (   R   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt   test_none_as_constant)   s    		c         C   s[   d „  } t  | ƒ } x d D] } |  j | | ƒ q Wx d D] } |  j | | ƒ q= Wd  S(   Nc           S   s   x q Wt  S(   N(   t   list(    (    (    s$   lib/python2.7/test/test_peepholer.pyR   ;   s    R   R   t   JUMP_ABSOLUTE(   R   R   (   R"   (   R
   R   R   (   R   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt   test_while_one9   s    	c         C   s`   xY d	 d
 d f D]H \ } } t  | ƒ } |  j | | ƒ |  j d | ƒ |  j d | ƒ q Wd  S(   Ns   a, = a,R   s   a, b = a, bt   ROT_TWOs   a, b, c = a, b, ct	   ROT_THREEt   BUILD_TUPLEt   UNPACK_TUPLE(   s   a, = a,R   (   s   a, b = a, bR$   (   s   a, b, c = a, b, cR%   (   R   R   R   (   R   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt   test_pack_unpackE   s    c         C   s_   xO d d d d d f D]8 \ } } t  | ƒ } |  j | | ƒ |  j d
 | ƒ q Wd „  } d  S(   Ns	   a = 1,2,3s   ((1, 2, 3))s   ("a","b","c")s   (('a', 'b', 'c'))s   a,b,c = 1,2,3s   (None, 1, None)s   ((None, 1, None))s   ((1, 2), 3, 4)s   (((1, 2), 3, 4))R&   c        d   S   s8  d d d d d d d d d	 d
 d d d d d d d d d	 d
 d d d d d d d d d	 d
 d d d d d d d d d	 d
 d d d d d d d d d	 d
 d d d d d d d d d	 d
 d d d d d d d d d	 d
 d d d d d d d d d	 d
 d d d d d d d d d	 d
 d d d d d d d d d	 d
 gd f d  S(   Ni    i   i   i   i   i   i   i   i   i	   (    (    (    (    s$   lib/python2.7/test/test_peepholer.pyt   crater_   s    (   s	   a = 1,2,3s   ((1, 2, 3))(   s   ("a","b","c")s   (('a', 'b', 'c'))(   s   a,b,c = 1,2,3s   ((1, 2, 3))(   s   (None, 1, None)s   ((None, 1, None))(   s   ((1, 2), 3, 4)s   (((1, 2), 3, 4))(   R   R   R   (   R   R   R   R   R)   (    (    s$   lib/python2.7/test/test_peepholer.pyt#   test_folding_of_tuples_of_constantsP   s    c         C   s¿   xp d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ f D]; \ } } t  | ƒ } |  j | | | ƒ |  j d | ƒ q4 Wt  d ƒ } |  j d | ƒ |  j d | ƒ t  d ƒ } |  j d  | ƒ d  S(0   Ns	   a = 2+3+4s   (9)s   "@"*4s   ('@@@@')s   a="abc" + "def"s
   ('abcdef')s   a = 3**4s   (81)s   a = 3*4s   (12)s	   a = 13//4s   (3)s   a = 14%4s   (2)s   a = 2+3s   (5)s   a = 13-4s   a = (12,13)[1]s   (13)s   a = 13 << 2s   (52)s   a = 13 >> 2s
   a = 13 & 7s
   a = 13 ^ 7s   (10)s
   a = 13 | 7s   (15)t   BINARY_s   a=2+"b"s   ('b')s
   a="x"*1000s   (1000)(   s	   a = 2+3+4s   (9)(   s   "@"*4s   ('@@@@')(   s   a="abc" + "def"s
   ('abcdef')(   s   a = 3**4s   (81)(   s   a = 3*4s   (12)(   s	   a = 13//4s   (3)(   s   a = 14%4s   (2)(   s   a = 2+3s   (5)(   s   a = 13-4s   (9)(   s   a = (12,13)[1]s   (13)(   s   a = 13 << 2s   (52)(   s   a = 13 >> 2s   (3)(   s
   a = 13 & 7s   (5)(   s
   a = 13 ^ 7s   (10)(   s
   a = 13 | 7s   (15)(   R   R   R   (   R   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt#   test_folding_of_binops_on_constantsm   s0    c         C   s°   t  d ƒ } |  j d | ƒ |  j d | ƒ t  d ƒ } |  j d | ƒ |  j d | ƒ t  d ƒ } |  j d | ƒ t  d ƒ } |  j d | ƒ t  d ƒ } |  j d | ƒ d  S(	   Ns	   u"foo"[0]s   (u'f')t   BINARY_SUBSCRs   u"\u0061\uffff"[1]s   (u'\uffff')s
   u"fuu"[10]s   u"\U00012345"[0]s   u"\U00012345abcdef"[3](   R   R   R   (   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt   test_binary_subscr_on_unicodeŒ   s    c         C   sŸ   xL d d d f D]; \ } } t  | ƒ } |  j | | | ƒ |  j d | ƒ q WxI d d f D]; \ } } t  | ƒ } |  j | | | ƒ |  j d | ƒ q\ Wd  S(   Ns   `1`s   ('1')s   -0.5s   (-0.5)s   ~-2s   (1)t   UNARY_s   -"abc"s   ('abc')s   ~"abc"(   s   `1`s   ('1')(   s   -0.5s   (-0.5)(   s   ~-2s   (1)(   s   -"abc"s   ('abc')(   s   ~"abc"s   ('abc')(   R   R   R   (   R   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt%   test_folding_of_unaryops_on_constantsŸ   s    c         C   sX   d „  } t  | ƒ } |  j d | ƒ |  j d | ƒ |  j | j ƒ  j d ƒ d ƒ d  S(   Nc         S   s   |  S(   N(    (   R   (    (    s$   lib/python2.7/test/test_peepholer.pyR   ´   s    R   s   (None)t   RETURN_VALUEi   (   R
   R   t   assertEqualt   splitt   count(   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt   test_elim_extra_return²   s
    	c         C   sX   d „  } t  | ƒ } |  j d | ƒ |  j d | ƒ |  j | j ƒ  j d ƒ d ƒ d  S(   Nc         S   s   |  r
 | S| S(   N(    (   t   condt
   true_valuet   false_value(    (    s$   lib/python2.7/test/test_peepholer.pyR   ½   s    t   JUMP_FORWARDR"   R1   i   (   R
   R   R2   R3   R4   (   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt   test_elim_jump_to_return»   s
    	c         C   sX   d „  } t  | ƒ } |  j d | ƒ |  j d | ƒ |  j | j ƒ  j d ƒ d ƒ d  S(   Nc         S   s2   |  r
 d S| r d Sx d SWx |  r) d Sd SWd S(   Ni   i   i   i   i   i   (    (   t   cond1t   cond2(    (    s$   lib/python2.7/test/test_peepholer.pyR   Æ   s       R9   R"   R1   i   (   R
   R   R2   R3   R4   (   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt   test_elim_jump_after_return1Ä   s
    		c         C   sg   d „  } t  | ƒ } |  j d | ƒ |  j | j ƒ  j d ƒ d ƒ |  j | j ƒ  j d ƒ d ƒ d  S(   Nc         S   s   x |  r d Sq Wd  S(   Ni   (    (   R;   R<   (    (    s$   lib/python2.7/test/test_peepholer.pyR   Ö   s     R9   R"   i   R1   i   (   R
   R   R2   R3   R4   (   R   R   R   (    (    s$   lib/python2.7/test/test_peepholer.pyt   test_elim_jump_after_return2Ô   s
    	(   t   __name__t
   __module__R   R   R    R#   R(   R*   R,   R.   R0   R5   R:   R=   R>   (    (    (    s$   lib/python2.7/test/test_peepholer.pyR      s   	
	
												c         C   sÌ   d d  l  } d d l m } t f } | j d t f ƒ Œ | j | Œ  |  rÂ t | d ƒ rÂ d d  l } d  g d } xA t
 t | ƒ ƒ D]- } | j | Œ  | j ƒ  | j ƒ  | | <q‰ W| GHn  Wd  QXd  S(   Niÿÿÿÿ(   t   test_supports   backquote not supportedt   gettotalrefcounti   (   R   t   testRA   R   t   check_py3k_warningst   SyntaxWarningt   run_unittestt   hasattrt   gcR   t   xranget   lent   collectRB   (   t   verboseR   RA   t   test_classesRH   t   countst   i(    (    s$   lib/python2.7/test/test_peepholer.pyt	   test_mainà   s    	
t   __main__RL   (   R   R   t	   cStringIOR    t   unittestR
   R   t   TestCaseR   R   RP   R?   t   True(    (    (    s$   lib/python2.7/test/test_peepholer.pyt   <module>   s   	
	Í