Ñò
À*§Kc           @   sô   d  d k  Z  d  d k l Z d e f d „  ƒ  YZ d d „ Z d „  Z d „  Z d	 „  Z e e ƒ Z d
 „  Z d „  Z e e ƒ Z d „  Z	 e e	 ƒ Z
 d „  Z e e ƒ Z d „  Z e e ƒ Z d „  Z e e ƒ Z d e  i f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   greenlett   genletc           B   s;   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z e Z RS(   c         O   s   | |  _  | |  _ d  |  _ d  S(   N(   t   argst   kwdst   Nonet   child(   t   selfR   R   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   __init__   s    		c         C   s#   |  i  \ } | |  i |  i Ž  d  S(   N(   t   fnR   R   (   R   R   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   run   s    c         C   s   |  S(   N(    (   R   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   __iter__   s    c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt	   set_child   s    c         C   s~   |  i  oC |  i  } x' | i  o | } | i  } d  | _  q W| i ƒ  } n t i ƒ  |  _ |  i ƒ  } |  o | St ‚ d  S(   N(   R   R   t   switchR    t
   getcurrentt   parentt   StopIteration(   R   R   t   tmpt   result(    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   __next__   s    
	 
	(   t   __name__t
   __module__R   R	   R
   R   R   t   next(    (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyR      s   					i   c         C   s†   t  i ƒ  } xf | d j oX t | t ƒ p t d ƒ ‚ n | d j o | i i | ƒ n | i } | d 8} q W| i |  ƒ d  S(   Ni    s   yield outside a genleti   (   R    R   t
   isinstanceR   t   RuntimeErrorR   R   R   (   t   valuet   levelt   g(    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   Yield*   s     	c            s    d t  f ‡  f d †  ƒ  Y} | S(   Nt   Genletc              s   e  Z ˆ  f Z RS(    (   R   R   R   (    (   t   func(    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyR   8   s   (   R   (   R   R   (    (   R   sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyR   7   s    c         c   s1   x* t  |  ƒ D] } | i | d ƒ | Vq Wd  S(   Ni   (   t   ranget   append(   t   nt   seent   i(    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   g1>   s     c         C   s6   x/ t  |  ƒ D]! } | i | d ƒ t | ƒ q Wd  S(   Ni   (   R   R   R   (   R    R!   R"   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   g2C   s     c         C   s   t  |  ƒ d  S(   N(   R   (   R"   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   nestedJ   s    c         C   s6   x/ t  |  ƒ D]! } | i | d ƒ t | ƒ q Wd  S(   Ni   (   R   R   R%   (   R    R!   R"   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   g3M   s     c         C   sE   |  d j o d  Sx" t  |  d ƒ D] } t | ƒ q# Wt |  ƒ d  S(   Ni    i   (   t   axR   (   R    t   ii(    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   aS   s     c      	   C   s”   t  |  ƒ d j os xz |  D]d } g  } t g  } |  D] } | | j o | | q5 q5 ~ ƒ D] } | t | g | ƒ q] ~ q Wn t |  ƒ d  S(   Ni   (   t   lent   permsR   (   t   lt   et   _[1]t   _[2]t   xt   p(    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyR+   [   s
     fc         C   s9   x2 t  d |  ƒ D]! } t | ƒ t | | d ƒ q Wd  S(   Ni   i   (   R   R   (   R    R(   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   gr1d   s     
c         C   s(   x! t  |  ƒ D] } | i | ƒ q Wd  S(   N(   R2   R   (   R    R!   R(   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   gr2k   s     t   NestedGeneratorTestsc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sY   g  } x$ t  d | ƒ D] } | i | ƒ q W|  i | d d d d d d d d g ƒ d  S(   Ni   i   i   i   i   i	   i   (   R3   R   t   assertEquals(   R   R!   R(   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   test_layered_genletsr   s
     c         C   s‘  t  t t d ƒ ƒ ƒ } t | ƒ } |  i t | ƒ d ƒ |  i d d d d g | j ƒ |  i d d d d g | j ƒ g  } xH t t  t t d ƒ ƒ ƒ t  t t d ƒ ƒ ƒ ƒ D] } | i | ƒ q² W|  i | d d d d g d d d g f d d d d g d d d g f d d d d g d d d g f d d d d g d d d g f d d d d g d d d g f d d d d g d d d g f g ƒ d  S(	   Ni   i   i   i   i    i   i   i   (   R+   t   listR   R5   R*   t
   assertTruet   zipR   (   R   t	   gen_permst   permutationst   resR(   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   test_permutationsx   s    4 <<c         C   s”   x t  t t g D]| } g  } x; t d ƒ D]- } x$ | d | ƒ D] } | i | ƒ q? Wq) W|  i | d d d d d d d d d d d g
 ƒ q Wd  S(   Ni   i   i   i    i   i   (   R#   R$   R&   R   R   R5   (   R   R   R!   t   kt   j(    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   test_genlet_simpleˆ   s       c         C   s(   y t  d ƒ Wn t j
 o n Xd  S(   Ni
   (   R   R   (   R   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   test_genlet_bad   s    c         C   s.   g  } x! t  d ƒ D] } | i | ƒ q Wd  S(   Ni   (   R'   R   (   R   R!   R(   (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   test_nested_genlets–   s     (   R   R   R6   R=   R@   RA   RB   (    (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyR4   q   s
   				(   t   unittestR    R   R   R   R#   R$   R%   R&   R)   R'   R+   R2   R3   t   TestCaseR4   (    (    (    sC   /home/ambroff/code/greenlet/greenlet/tests/test_generator_nested.pyt   <module>   s&   &									