ó
ç'ÊUc           @   sÚ   d  d l  m Z d  d l m Z m Z d  d l m Z d  d l m Z m	 Z	 m
 Z
 m Z m Z d e j f d „  ƒ  YZ d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   unittest(   t   reactort   defer(   t   Failure(   t   mustbe_deferredt   process_chaint   process_chain_botht   process_parallelt   iter_errbackt   MustbeDeferredTestc           B   s   e  Z d  „  Z d „  Z RS(   c            sN   g  ‰  ‡  f d †  } t  | d ƒ } | j |  j d d g ƒ ˆ  j d ƒ | S(   Nc            s   ˆ  j  |  ƒ ˆ  S(   N(   t   append(   t   v(   t   steps(    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   _append   s    i   i   (   R   t   addCallbackt   assertEqualR
   (   t   selfR   t   dfd(    (   R   s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   test_success_function
   s    c            sN   g  ‰  ‡  f d †  } t  | d ƒ } | j |  j d d g ƒ ˆ  j d ƒ | S(   Nc            s3   ˆ  j  |  ƒ t j ƒ  } t j d | j ˆ  ƒ | S(   Ni    (   R
   R   t   DeferredR   t	   callLatert   callback(   R   R   (   R   (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyR      s    i   i   (   R   R   R   R
   (   R   R   R   (    (   R   s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   test_unfired_deferred   s    (   t   __name__t
   __module__R   R   (    (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyR	   	   s   	c         C   s   d |  | | f S(   Ns   (cb1 %s %s %s)(    (   t   valuet   arg1t   arg2(    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   cb1"   s    c         C   s   t  j d |  | | f ƒ S(   Ns   (cb2 %s %s %s)(   R   t   succeed(   R   R   R   (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   cb2$   s    c         C   s   d |  | | f S(   Ns   (cb3 %s %s %s)(    (   R   R   R   (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   cb3&   s    c         C   s   t  t ƒ  ƒ S(   N(   R   t	   TypeError(   R   R   R   (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   cb_fail(   s    c         C   s   d |  j  j j | | f S(   Ns   (eb1 %s %s %s)(   R   t	   __class__R   (   t   failureR   R   (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   eb1*   s    t   DeferUtilsTestc           B   sG   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z d „  Z RS(   c         c   sƒ   t  t t t g d d d ƒ V} |  j | d ƒ t } y! t  t t t g d d d ƒ VWn t k
 rq } t } n X|  j	 | ƒ d  S(   Nt   rest   v1t   v2s'   (cb3 (cb2 (cb1 res v1 v2) v1 v2) v1 v2)(
   R   R   R   R   R   t   FalseR!   R    t   Truet
   assertTrue(   R   t   xt   gotexct   e(    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   test_process_chain0   s    !
c         c   s‰   t  t t t g d  t d  g d d d ƒ V} |  j | d ƒ t t ƒ  ƒ } t  t t t g t d  d  g | d d ƒ V} |  j | d ƒ d  S(   NR&   R'   R(   s!   (cb3 (eb1 TypeError v1 v2) v1 v2)s5   (cb3 (cb2 (eb1 ZeroDivisionError v1 v2) v1 v2) v1 v2)(	   R   R!   R   R   t   NoneR$   R   R   t   ZeroDivisionError(   R   R,   t   fail(    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   test_process_chain_both<   s
    ++c         c   s<   t  t t t g d d d ƒ V} |  j | d d d g ƒ d  S(   NR&   R'   R(   s   (cb1 res v1 v2)s   (cb2 res v1 v2)s   (cb3 res v1 v2)(   R   R   R   R   R   (   R   R,   (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   test_process_parallelE   s    c         C   s2   t  t t t g d d d ƒ } |  j | t ƒ | S(   NR&   R'   R(   (   R   R   R!   R   t   failUnlessFailureR    (   R   t   d(    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   test_process_parallel_failureJ   s    (   R   R   R   t   inlineCallbacksR/   R3   R4   R7   (    (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyR%   .   s   	t   IterErrbackTestc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sQ   d „  } g  } t  t | ƒ  | j ƒ ƒ } |  j | t d ƒ ƒ |  j | ƒ d  S(   Nc          s   s    x t  d ƒ D] }  |  Vq Wd  S(   Ni
   (   t   xrange(   R,   (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   itergoodS   s    i
   (   t   listR   R
   R   t   ranget   failIf(   R   R;   t   errorst   out(    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   test_iter_errback_goodR   s
    	c         C   sz   d „  } g  } t  t | ƒ  | j ƒ ƒ } |  j | d d d d d g ƒ |  j t | ƒ d ƒ |  j | d j t ƒ d  S(   Nc          s   s9   x2 t  d ƒ D]$ }  |  d k r, d d } n  |  Vq Wd  S(   Ni
   i   i   i    (   R:   (   R,   t   a(    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   iterbad]   s    i    i   i   i   i   (   R<   R   R
   R   t   lent   assertIsInstanceR   R1   (   R   RC   R?   R@   (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   test_iter_errback_bad\   s    	(   R   R   RA   RF   (    (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyR9   P   s   	
N(   t   twisted.trialR    t   twisted.internetR   R   t   twisted.python.failureR   t   scrapy.utils.deferR   R   R   R   R   t   TestCaseR	   R   R   R   R!   R$   R%   R9   (    (    (    s:   /home/travis/build/scrapy/scrapy/tests/test_utils_defer.pyt   <module>   s   (					"