;
Μβ"Ic               @   s   d  d l  Z  d  d l Z d  d l m Z d  d l Z d   Z d   Z Gd   d e j  Z d d  Z
 e d k o e
 d	 d
  n d S(   i    N(   u   StringIOc             C   sK   t    } t j } | t _ t j |   | t _ | j   } | j   | S(   N(   u   StringIOu   sysu   stdoutu   disu   getvalueu   close(   u   funcu   fu   tmpu   result(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   disassemble   s    				
c             C   s   t  t |  d d   S(   Nu    u   single(   u   disassembleu   compile(   u   line(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu
   dis_single   s    c             B   s   |  Ee  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(   c             C   sa   d   } t  |  } x! d D] } |  j | | k  q Wx! d D] } |  j | | k  q@ Wd  S(   Nc             S   s   |  d k p ~  n d  S(   Ni   (    (   u   x(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   unot   s    u	   UNARY_NOTu   JUMP_IF_FALSEu   JUMP_IF_TRUEu   POP_TOP(   u	   UNARY_NOTu   JUMP_IF_FALSE(   u   JUMP_IF_TRUEu   POP_TOP(   u   disassembleu   assert_(   u   selfu   unotu   asmu   elem(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu	   test_unot   s    	  c             C   sF   x? d	 d
 d d f D]+ \ } } t  |  } |  j | | k  q Wd  S(   Nu
   not a is bu   (is not)u
   not a in bu   (not in)u   not a is not bu   (is)u   not a not in bu   (in)(   u
   not a is bu   (is not)(   u
   not a in bu   (not in)(   u   not a is not bu   (is)(   u   not a not in bu   (in)(   u
   dis_singleu   assert_(   u   selfu   lineu   elemu   asm(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   test_elim_inversion_of_is_or_in    s     c             C   sξ   d   } d   } d   } x | d f | d f | d f f D]n \ } } t  |  } x! d D] } |  j | | k  q\ Wx/ d d	 | d
 f D] } |  j | | k  q Wq= Wd   } |  j d t  |  k  |  j d t  |  k  d  S(   Nc             S   s   d  d  |  S(   N(   u   None(   u   x(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   f,   s    c             S   s   d |  S(   NT(   u   True(   u   x(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   g0   s    c             S   s   d |  S(   NF(   u   False(   u   x(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   h3   s    u   Noneu   Trueu   Falseu   LOAD_GLOBALu
   LOAD_CONSTu   (u   )c               S   s   d S(   u1   Adding a docstring made this test fail in Py2.5.0N(   u   None(    (    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   f<   s    (   u   LOAD_GLOBAL(   u   disassembleu   assert_(   u   selfu   fu   gu   hu   funcu   nameu   asmu   elem(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   test_global_as_constant*   s    			"   	c             C   sa   d   } t  |  } x! d D] } |  j | | k  q Wx! d D] } |  j | | k  q@ Wd  S(   Nc               S   s
   x q t  S(   N(   u   list(    (    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   fD   s    u
   LOAD_CONSTu   JUMP_IF_FALSEu   JUMP_ABSOLUTE(   u
   LOAD_CONSTu   JUMP_IF_FALSE(   u   JUMP_ABSOLUTE(   u   disassembleu   assert_(   u   selfu   fu   asmu   elem(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   test_while_oneB   s    	  c             C   si   xb d	 d
 d f D]Q \ } } t  |  } |  j | | k  |  j d | k  |  j d | k  q Wd  S(   Nu   a, = a,u
   LOAD_CONSTu   a, b = a, bu   ROT_TWOu   a, b, c = a, b, cu	   ROT_THREEu   BUILD_TUPLEu   UNPACK_TUPLE(   u   a, = a,u
   LOAD_CONST(   u   a, b = a, bu   ROT_TWO(   u   a, b, c = a, b, cu	   ROT_THREE(   u
   dis_singleu   assert_(   u   selfu   lineu   elemu   asm(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   test_pack_unpackN   s     c             C   se   xU d d d d d f D]> \ } } t  |  } |  j | | k  |  j d
 | k  q Wd   } d  S(   Nu	   a = 1,2,3u   ((1, 2, 3))u   ("a","b","c")u   (('a', 'b', 'c'))u   a,b,c = 1,2,3u   (None, 1, None)u   ((None, 1, None))u   ((1, 2), 3, 4)u   (((1, 2), 3, 4))u   BUILD_TUPLEc            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	   (    (    (    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   craterh   s    (   u	   a = 1,2,3u   ((1, 2, 3))(   u   ("a","b","c")u   (('a', 'b', 'c'))(   u   a,b,c = 1,2,3u   ((1, 2, 3))(   u   (None, 1, None)u   ((None, 1, None))(   u   ((1, 2), 3, 4)u   (((1, 2), 3, 4))(   u
   dis_singleu   assert_(   u   selfu   lineu   elemu   asmu   crater(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu#   test_folding_of_tuples_of_constantsY   s     c             C   sΞ   xv d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ f D]A \ } } t  |  } |  j | | k |  |  j d | k  q4 Wt  d  } |  j d | k  |  j d | k  t  d  } |  j d  | k  d  S(0   Nu	   a = 2+3+4u   (9)u   "@"*4u   ('@@@@')u   a="abc" + "def"u
   ('abcdef')u   a = 3**4u   (81)u   a = 3*4u   (12)u	   a = 13//4u   (3)u   a = 14%4u   (2)u   a = 2+3u   (5)u   a = 13-4u   a = (12,13)[1]u   (13)u   a = 13 << 2u   (52)u   a = 13 >> 2u
   a = 13 & 7u
   a = 13 ^ 7u   (10)u
   a = 13 | 7u   (15)u   BINARY_u   a=2+"b"u   ('b')u
   a="x"*1000u   (1000)(   u	   a = 2+3+4u   (9)(   u   "@"*4u   ('@@@@')(   u   a="abc" + "def"u
   ('abcdef')(   u   a = 3**4u   (81)(   u   a = 3*4u   (12)(   u	   a = 13//4u   (3)(   u   a = 14%4u   (2)(   u   a = 2+3u   (5)(   u   a = 13-4u   (9)(   u   a = (12,13)[1]u   (13)(   u   a = 13 << 2u   (52)(   u   a = 13 >> 2u   (3)(   u
   a = 13 & 7u   (5)(   u
   a = 13 ^ 7u   (10)(   u
   a = 13 | 7u   (15)(   u
   dis_singleu   assert_(   u   selfu   lineu   elemu   asm(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu#   test_folding_of_binops_on_constantsv   s2     c             C   s¨   xO d	 d
 f D]A \ } } t  |  } |  j | | k |  |  j d | k  q WxO d d f D]A \ } } t  |  } |  j | | k |  |  j d | k  q_ Wd  S(   Nu   -0.5u   (-0.5)u   ~-2u   (1)u   UNARY_u   -"abc"u   ('abc')u   ~"abc"(   u   -0.5u   (-0.5)(   u   ~-2u   (1)(   u   -"abc"u   ('abc')(   u   ~"abc"u   ('abc')(   u
   dis_singleu   assert_(   u   selfu   lineu   elemu   asm(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu%   test_folding_of_unaryops_on_constants   s      c             C   s^   d   } t  |  } |  j d | k  |  j d | k  |  j | j   j d  d  d  S(   Nc             S   s   |  S(   N(    (   u   x(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   f©   s    u
   LOAD_CONSTu   (None)u   RETURN_VALUEi   (   u   disassembleu   assert_u   assertEqualu   splitu   count(   u   selfu   fu   asm(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   test_elim_extra_return§   s
    	c             C   s^   d   } t  |  } |  j d | k  |  j d | k  |  j | j   j d  d  d  S(   Nc             S   s   |  o | S| S(   N(    (   u   condu
   true_valueu   false_value(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   f²   s    u   JUMP_FORWARDu   JUMP_ABSOLUTEu   RETURN_VALUEi   (   u   disassembleu   assert_u   assertEqualu   splitu   count(   u   selfu   fu   asm(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   test_elim_jump_to_return°   s
    	c             C   s^   d   } t  |  } |  j d | k  |  j d | k  |  j | j   j d  d  d  S(   Nc             S   s6   |  o d S| o d Sx d Sx |  o d Sd Sd S(   Ni   i   i   i   i   i   (    (   u   cond1u   cond2(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   f»   s       u   JUMP_FORWARDu   JUMP_ABSOLUTEu   RETURN_VALUEi   (   u   disassembleu   assert_u   assertEqualu   splitu   count(   u   selfu   fu   asm(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   test_elim_jump_after_return1Ή   s
    		c             C   sj   d   } t  |  } |  j d | k  |  j | j   j d  d  |  j | j   j d  d  d  S(   Nc             S   s   x |  o d Sq d  S(   Ni   (    (   u   cond1u   cond2(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   fΛ   s     u   JUMP_FORWARDu   JUMP_ABSOLUTEi   u   RETURN_VALUEi   (   u   disassembleu   assert_u   assertEqualu   splitu   count(   u   selfu   fu   asm(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   test_elim_jump_after_return2Ι   s
    	c             C   s,   d   } t  |  } |  j d | k  d  S(   Nc              S   s   d d d    }  |  S(   Ni   (   u   returnc               S   s   d  S(   N(    (    (    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   gΦ   s    i   (    (   u   g(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   fΥ   s    u
   BINARY_ADD(   u   disassembleu   assert_(   u   selfu   fu   asm(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   test_make_function_doesnt_bailΤ   s    	N(   u   __name__u
   __module__u	   test_unotu   test_elim_inversion_of_is_or_inu   test_global_as_constantu   test_while_oneu   test_pack_unpacku#   test_folding_of_tuples_of_constantsu#   test_folding_of_binops_on_constantsu%   test_folding_of_unaryops_on_constantsu   test_elim_extra_returnu   test_elim_jump_to_returnu   test_elim_jump_after_return1u   test_elim_jump_after_return2u   test_make_function_doesnt_bail(   u
   __locals__(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   TestTranforms   s   
		
												u   TestTranformsc             C   sΈ   d d  l  } d d l m } t f } | j |   |  o{ t | d  ok d d  l } d  g d } xA t t	 |   D]- } | j |   | j
   | j   | | <qu Wt |  n d  S(   Ni    (   u   supportu   gettotalrefcounti   (   u   sysu   testu   supportu   TestTranformsu   run_unittestu   hasattru   gcu   Noneu   rangeu   lenu   collectu   gettotalrefcountu   print(   u   verboseu   sysu   supportu   test_classesu   gcu   countsu   i(    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu	   test_mainέ   s    	 
u   __main__u   verboseT(   u   disu   sysu   iou   StringIOu   unittestu   disassembleu
   dis_singleu   TestCaseu   TestTranformsu   Noneu	   test_mainu   __name__u   True(    (    (    u0   /mit/python/lib/python3.0/test/test_peepholer.pyu   <module>   s   	
	Κ