
~Mc           @   sI  d  Z  d d l Z d d l Z d d l m Z y d d l m Z Wn e k
 r[ d Z n Xd d l	 m
 Z
 d d l m Z m Z d d l m Z d e
 j f d	     YZ d
 e j f d     YZ d e j f d     YZ d e
 j f d     YZ d e f d     YZ d e
 j f d     YZ d e f d     YZ d e
 j f d     YZ d e
 j f d     YZ d e f d     YZ d e e f d     YZ d e f d     YZ  d  e f d!     YZ! d" e
 j f d#     YZ" d$ e
 j f d%     YZ# d& e
 j f d'     YZ$ d( e
 j f d)     YZ% d* e
 j f d+     YZ& d S(,   s(   
Test cases for twisted.reflect module.
iN(   t   ModuleImporter(   t   deque(   t   unittest(   t   reflectt   util(   t   Versiont   SettableTestc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   t  j   |  _ d  S(   N(   R   t   Settablet   setter(   t   self(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   setUp   s    c         C   s
   |  `  d  S(   N(   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   tearDown   s    c         C   sF   |  j  d d d d  |  j |  j  j d  |  j |  j  j d  d  S(   Nt   ai   t   bi   (   R   t   failUnlessEqualR   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   testSet   s    (   t   __name__t
   __module__R
   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR      s   		t   AccessorTesterc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   | |  _  |  j d |  d  S(   Nt   x(   t   yt	   reallySet(   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   set_x&   s    	c         C   s   d |  _  d S(   Ni   (   t   q(   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   get_z+   s    	c         C   s   |  j  d  d  S(   NR   (   t	   reallyDel(   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   del_z0   s    (   R   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   $   s   		t   PropertyAccessorTesterc           B   s8   e  Z d  Z d Z d   Z d   Z d   Z d   Z RS(   sJ   
    Test class to check L{reflect.PropertyAccessor} functionalities.
    i    c         C   s   | |  _  d  S(   N(   t   s(   R	   t   r(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   set_r;   s    c         C   s   | |  _  |  j d |  d  S(   NR   (   R   R   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   ?   s    	c         C   s   d |  _  d S(   Ni   (   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   D   s    	c         C   s   |  j  d  d  S(   NR   (   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   I   s    (   R   R   t   __doc__R   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   5   s   			t   AccessorTestc           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C   s   t    |  _ d  S(   N(   R   t   tester(   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR
   O   s    c         C   s<   d |  j  _ |  j |  j  j d  |  j |  j  j d  d  S(   Ni   (   R!   R   R   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   R   s    c         C   s0   |  j  |  j j d  |  j  |  j j d  d  S(   Ni   (   R   R!   t   zR   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   testGetW   s    c         C   sz   |  j  j |  j |  j  j d  |  j  ` |  j t |  j  d  d  d |  j  _ |  j  ` |  j t |  j  d  d  d  S(   Ni   R   i    R   (   R!   R"   R   R   t   hasattrR   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   testDel[   s    
		(   R   R   R
   R   R#   R%   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR    N   s   			t   PropertyAccessorTestc           B   s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   sQ   
    Tests for L{reflect.PropertyAccessor}, using L{PropertyAccessorTester}.
    c         C   s   t    |  _ d  S(   N(   R   R!   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR
   k   s    c         C   sR   |  j  |  j j d  d |  j _ |  j  |  j j d  |  j  |  j j d  d S(   sb   
        If an attribute is present in the class, it can be retrieved by
        default.
        i    i   N(   t   assertEqualsR!   R   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_setWithDefaultValueo   s    c         C   s*   d |  j  j d <|  j |  j  j d  d S(   sn   
        The attribute value can be overriden by directly modifying the value in
        C{__dict__}.
        i
   R   N(   R!   t   __dict__R'   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_getValueInDictz   s    c         C   s   |  j  t t |  j d  d S(   s   
        If a getter is defined on an attribute but without any default value,
        it raises C{AttributeError} when trying to access it.
        R   N(   t   assertRaisest   AttributeErrort   getattrR!   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_notYetInDict   s    (   R   R   R   R
   R(   R*   R.   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR&   f   s
   				t   LookupsTestCasec           B   sh   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   sC   
    Tests for L{namedClass}, L{namedModule}, and L{namedAny}.
    c         C   s    |  j  t j d  t j  d S(   sY   
        L{namedClass} should return the class object for the name it is passed.
        s   twisted.python.reflect.SummerN(   t   assertIdenticalR   t
   namedClasst   Summer(   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_namedClassLookup   s    c         C   s   |  j  t j d  t  d S(   sc   
        L{namedModule} should return the module object for the name it is
        passed.
        s   twisted.python.reflectN(   R0   R   t   namedModule(   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_namedModuleLookup   s    c         C   s,   d d l  } |  j t j d  | j  d S(   sY   
        L{namedAny} should return the package object for the name it is passed.
        iNs   twisted.python(   t   twisted.pythonR0   R   t   namedAnyt   python(   R	   t   twisted(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_namedAnyPackageLookup   s    c         C   s   |  j  t j d  t  d S(   sX   
        L{namedAny} should return the module object for the name it is passed.
        s   twisted.python.reflectN(   R0   R   R7   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_namedAnyModuleLookup   s    c         C   s    |  j  t j d  t j  d S(   sW   
        L{namedAny} should return the class object for the name it is passed.
        s   twisted.python.reflect.SummerN(   R0   R   R7   R2   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_namedAnyClassLookup   s    c         C   s#   |  j  t j d  t j j  d S(   s   
        L{namedAny} should return the object an attribute of a non-module,
        non-package object is bound to for the name it is passed.
        s'   twisted.python.reflect.Summer.reallySetN(   t   assertEqualR   R7   R2   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_namedAnyAttributeLookup   s    c         C   s&   |  j  t j d  t j j j  d S(   s   
        L{namedAny} should return the object an attribute of an object which
        itself was an attribute of a non-module, non-package object is bound to
        for the name it is passed.
        s/   twisted.python.reflect.Summer.reallySet.__doc__N(   R0   R   R7   R2   R   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt"   test_namedAnySecondAttributeLookup   s    c         C   s\   |  j  t t j d  |  j  t t j d  |  j  t t j d  |  j  t t j d  d S(   s   
        Exceptions raised by modules which L{namedAny} causes to be imported
        should pass through L{namedAny} to the caller.
        s   twisted.test.reflect_helper_ZDEs   twisted.test.reflect_helper_VEs   twisted.test.reflect_helper_IEN(   R+   t   ZeroDivisionErrorR   R7   t
   ValueErrort   ImportError(   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_importExceptions   s    c         C   sF   |  j  t t j d  |  j  t t j d  |  j  t t j d  d S(   s   
        If segments on the end of a fully-qualified Python name represents
        attributes which aren't actually present on the object represented by
        the earlier segments, L{namedAny} should raise an L{AttributeError}.
        s   twisted.nosuchmoduleintheworlds    twisted.nosuch.modulein.theworlds7   twisted.python.reflect.Summer.nosuchattributeintheworldN(   R+   R,   R   R7   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_attributeExceptions   s    c         C   s  |  j  t j t j d  } |  j t |  d  |  j  t j t j d  } |  j t |  d  |  j  t j t j d  } |  j t |  d  |  j  t j t j d  } |  j t |  d  xO d	 d
 d g D]> } |  j  t j t j |  } |  j t |  d | f  q Wd S(   s  
        Passing a name which isn't a fully-qualified Python name to L{namedAny}
        should result in one of the following exceptions:
        - L{InvalidName}: the name is not a dot-separated list of Python objects
        - L{ObjectNotFound}: the object doesn't exist
        - L{ModuleNotFound}: the object doesn't exist and there is only one
          component in the name
        t   nosuchmoduleintheworlds(   No module named 'nosuchmoduleintheworld's   @#$@(#.!@(#!@#s(   '@#$@(#.!@(#!@#' does not name an objects   tcelfer.nohtyp.detsiwts0   'tcelfer.nohtyp.detsiwt' does not name an objectt    s   Empty module names   .twisteds   twisted.s   twisted..pythonsO   name must be a string giving a '.'-separated list of Python identifiers, not %rN(   R+   R   t   ModuleNotFoundR7   R=   t   strt   ObjectNotFoundt   InvalidName(   R	   t   errt   invalidName(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_invalidNames   s(    						(   R   R   R   R3   R5   R:   R;   R<   R>   R?   RC   RD   RM   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR/      s   											t   ImportHooksLookupTestsc           B   s    e  Z d  Z d   Z d   Z RS(   s   
    Tests for lookup methods in the presence of L{ihooks}-style import hooks.
    Runs all of the tests from L{LookupsTestCase} after installing a custom
    import hook.
    c         C   s   t    |  _ |  j j   d S(   s   
        Perturb the normal import behavior subtly by installing an import
        hook.  No custom behavior is provided, but this adds some extra
        frames to the call stack, which L{namedAny} must be able to account
        for.
        N(   R    t   importert   install(   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR
   )  s    c         C   s   |  j  j   d S(   s3   
        Uninstall the custom import hook.
        N(   RO   t	   uninstall(   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   4  s    (   R   R   R   R
   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyRN   #  s   	t
   ObjectGrepc           B   sq   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 e d
 k ro d	 e
 _ n  RS(   c         C   sk   t    } i | d 6} i d | 6} |  j d t j | | t j   |  j d t j | | t j   d S(   sW   
        Test references search through a dictionnary, as a key or as a value.
        s   [None]s   {None}N(   t   objectt   Nonet   assertInR   t   objgrept   isSame(   R	   t   ot   d1t   d2(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_dictionary=  s
    	"c         C   s;   t    } d | g } |  j d t j | | t j   d S(   s8   
        Test references search through a list.
        s   [1]N(   RS   RT   RU   R   RV   RW   (   R	   RX   t   L(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt	   test_listH  s    	c         C   s;   t    } | d f } |  j d t j | | t j   d S(   s9   
        Test references search through a tuple.
        s   [0]N(   RS   RT   RU   R   RV   RW   (   R	   RX   t   T(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt
   test_tupleQ  s    	c         C   sT   d d d     Y} t    } |   } | | _ |  j d t j | | t j   d S(   sE   
        Test references search through an object attribute.
        t   Dummyc           B   s   e  Z RS(    (   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR`   ^  s   s   .oN(    (   RS   RX   RU   R   RV   RW   (   R	   R`   RX   t   d(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_instanceZ  s
    			c         C   sQ   d d d     Y} |   } t  j |  } |  j d t j | | t j   d S(   sB   
        Test references search through a weakref object.
        R`   c           B   s   e  Z RS(    (   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR`   j  s   s   ()N(    (   t   weakreft   refRU   R   RV   RW   (   R	   R`   RX   t   w1(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_weakreff  s    	c         C   s   d d d     Y} |   } | j  } |  j d t j | | j t j   |  j d t j | | j t j   |  j d t j | | j t j   d S(   sK   
        Test references search through method special attributes.
        R`   c           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(    (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   dummyv  s    (   R   R   Rg   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR`   u  s   s   .im_selfs	   .im_classs   .im_funcN(    (   Rg   RU   R   RV   t   im_selfRW   t   im_classt   im_func(   R	   R`   RX   t   m(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_boundMethodq  s    		%%c   
      C   s   d d d     Y} |   } i d d 6d d 6d | 6} d d | d g } | i  |   f } i d d 6d	 d
 6| d 6} |   } | | _ | j } t j |  }	 |  j d t j |	 | t j   d S(   sF   
        Test references search using complex set of objects.
        R`   c           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(    (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   method  s    (   R   R   Rm   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR`     s   t   bazt   Quuxt   Fooshi   t   fooi    t   bari   i   s!   ().im_self.attr[2][0][2]{'Foosh'}N(    (    (    (	   RT   t   attrRm   Rc   Rd   RU   R   RV   RW   (
   R	   R`   RX   t   D1R\   R^   t   D2t   iRk   t   w(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_everything  s    				c         C   s   g  } | g } | | g } | | g } |  j  d g t j | | t j d d  |  j  d d g t j | | t j d d  |  j  d d d g t j | | t j d d  d S(	   s6   
        Test the depth of references search.
        s   [0]t   maxDepthi   s   [1][0]i   s	   [1][1][0]i   N(   R'   R   RV   RW   (   R	   R   R   t   cRa   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_depthLimit  s    	+.c         C   sR   t    } t   } | j d  | j |  |  j d t j | | t j   d S(   sW   
        Test references search through a deque object. Only for Python > 2.3.
        s   [1]N(   RS   R   t   appendRT   RU   R   RV   RW   (   R	   RX   t   D(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt
   test_deque  s
    		s   Deque not availableN(   R   R   R[   R]   R_   Rb   Rf   Rl   Rx   R{   R~   R   RT   t   skip(    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyRR   <  s   											t   GetClassc           B   s   e  Z d    Z d   Z RS(   c         C   sX   d d d     Y} |   } |  j  t j |  j d  |  j t j |  j d  d  S(   Nt   OldClassc           B   s   e  Z RS(    (   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   t   classt   classobj(    (   R   R   (   RU   R   t   getClassR   R'   (   R	   R   t   old(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   testOld  s    	c         C   s[   d t  f d     Y} |   } |  j t j |  j d  |  j t j |  j d  d  S(   Nt   NewClassc           B   s   e  Z RS(    (   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   t   type(   RS   R'   R   R   R   (   R	   R   t   new(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   testNew  s    	(   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   	t	   Breakablec           B   s&   e  Z e Z e Z d    Z d   Z RS(   c         C   s    |  j  r t d   n d Sd  S(   Ns   str!s   <Breakable>(   t   breakStrt   RuntimeError(   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   __str__  s    	c         C   s    |  j  r t d   n d Sd  S(   Ns   repr!s   Breakable()(   t	   breakReprR   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   __repr__  s    	(   R   R   t   FalseR   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   	t
   BrokenTypec           B   s#   e  Z e Z d    Z e e  Z  RS(   c         C   s   |  j  r t d   n  d S(   Ns   no nameR   (   t	   breakNameR   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   get___name__  s    	(   R   R   R   R   R   t   property(    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   	t   BTBasec           B   s   e  Z e Z e Z e Z RS(    (   R   R   R   t   __metaclass__t   TrueR   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   t   NoClassAttrc           B   s   e  Z e d     Z RS(   c         C   s   |  j  S(   N(   t	   not_class(   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   <lambda>  s    (   R   R   R   t	   __class__(    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   t   SafeReprc           B   sV   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   s2   
    Tests for L{reflect.safe_repr} function.
    c         C   s2   d d d g } |  j  t j |  t |   d S(   sg   
        L{reflect.safe_repr} produces the same output as C{repr} on a working
        object.
        i   i   i   N(   R'   R   t	   safe_reprt   repr(   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_workingRepr  s    c         C   se   t    } t | _ t j |  } |  j d |  |  j t j j t	  d |  |  j d |  d S(   s   
        L{reflect.safe_repr} returns a string with class name, address, and
        traceback when the repr call failed.
        s   Breakable instance at 0xi    s   RuntimeError: repr!N(
   R   R   R   R   R   RU   t   ost   patht   splitextt   __file__(   R	   R   t   bRepr(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_brokenRepr  s    		 c         C   s5   t    } t | _ |  j t j |  t |   d S(   sT   
        L{reflect.safe_repr} isn't affected by a broken C{__str__} method.
        N(   R   R   R   R'   R   R   R   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_brokenStr  s    		c         C   s7   d t  f d     Y} t j |  t j |    d  S(   Nt   Xc           B   s   e  Z e Z RS(    (   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   (   R   R   R   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_brokenClassRepr  s    c            sq   d t  f d     Y} i d | 6    f d   } |  j t j t j |   t j |  } |  j d |  d S(   s   
        L{unsignedID} is used to print ID of the object in case of error, not
        standard ID value which can be negative.
        R   c           B   s   e  Z e Z RS(    (   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   id   c            s1   y   |  SWn t  t f k
 r, t |   SXd  S(   N(   t	   TypeErrort   KeyErrort   id(   t   obj(   t   ids(    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   fakeID   s    t   0x64N(   R   t
   addCleanupR   t   setIDFunctionR   R   RU   (   R	   R   R   t   xRepr(    (   R   s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_unsignedID  s    c         C   s7   d t  f d     Y} t j |  t j |    d  S(   NR   c           B   s   e  Z e Z RS(    (   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   ,  s   (   R   R   R   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_brokenClassStr+  s    c         C   se   t    } t | _ t j |  } |  j d |  |  j t j j t	  d |  |  j d |  d S(   s   
        If an object raises an exception when accessing its C{__class__}
        attribute, L{reflect.safe_repr} uses C{type} to retrieve the class
        object.
        s   NoClassAttr instance at 0xi    s   RuntimeError: repr!N(
   R   R   R   R   R   RU   R   R   R   R   (   R	   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_brokenClassAttribute2  s    		 c         C   sl   d t  f d     Y} t j |    } |  j d |  |  j t j j t  d |  |  j d |  d S(   s   
        If a class raises an exception when accessing its C{__name__} attribute
        B{and} when calling its C{__str__} implementation, L{reflect.safe_repr}
        returns 'BROKEN CLASS' instead of the class name.
        R   c           B   s   e  Z e Z RS(    (   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   F  s   s   <BROKEN CLASS AT 0xi    s   RuntimeError: repr!N(   R   R   R   RU   R   R   R   R   (   R	   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_brokenClassNameAttribute@  s
     (   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   									t   SafeStrc           B   sM   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   s1   
    Tests for L{reflect.safe_str} function.
    c         C   s2   d d d g } |  j  t j |  t |   d  S(   Ni   i   i   (   R'   R   t   safe_strRH   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_workingStrT  s    c         C   s#   t    } t | _ t j |  d  S(   N(   R   R   R   R   R   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   Y  s    		c         C   s#   t    } t | _ t j |  d  S(   N(   R   R   R   R   R   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   _  s    		c         C   s7   d t  f d     Y} t j |  t j |    d  S(   NR   c           B   s   e  Z e Z RS(    (   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   f  s   (   R   R   R   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   e  s    c         C   s7   d t  f d     Y} t j |  t j |    d  S(   NR   c           B   s   e  Z e Z RS(    (   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   m  s   (   R   R   R   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   l  s    c         C   se   t    } t | _ t j |  } |  j d |  |  j t j j t	  d |  |  j d |  d S(   s   
        If an object raises an exception when accessing its C{__class__}
        attribute, L{reflect.safe_str} uses C{type} to retrieve the class
        object.
        s   NoClassAttr instance at 0xi    s   RuntimeError: str!N(
   R   R   R   R   R   RU   R   R   R   R   (   R	   R   t   bStr(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   s  s    		 c         C   sl   d t  f d     Y} t j |    } |  j d |  |  j t j j t  d |  |  j d |  d S(   s   
        If a class raises an exception when accessing its C{__name__} attribute
        B{and} when calling its C{__str__} implementation, L{reflect.safe_str}
        returns 'BROKEN CLASS' instead of the class name.
        R   c           B   s   e  Z e Z RS(    (   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   s   <BROKEN CLASS AT 0xi    s   RuntimeError: str!N(   R   R   R   RU   R   R   R   R   (   R	   R   t   xStr(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s
     (
   R   R   R   R   R   R   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR   O  s   						t   FilenameToModulec           B   s    e  Z d  Z d   Z d   Z RS(   s9   
    Test L{reflect.filenameToModuleName} detection.
    c         C   sj   t  j t j j d d   } |  j | d  t  j t j j d d  t j j  } |  j | d  d S(   sD   
        Tests it finds good name for directories/packages.
        R9   t   testN(   R   t   filenameToModuleNameR   R   t   joinR'   t   sep(   R	   t   module(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_directory  s
    c         C   s5   t  j t j j d d d   } |  j | d  d S(   s4   
        Test it finds good name for files.
        R9   R   s   test_reflect.pyt   test_reflectN(   R   R   R   R   R   R'   (   R	   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt	   test_file  s    (   R   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   	
t   FullyQualifiedNameTestsc           B   sD   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s1   
    Test for L{reflect.fullyQualifiedName}.
    c         C   s   |  j  t j |  |  d S(   se   
        Helper to check that fully qualified name of C{obj} results to
        C{expected}.
        N(   R'   R   t   fullyQualifiedName(   R	   R   t   expected(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   _checkFullyQualifiedName  s    c         C   s?   d d l  } |  j | d  d d l } |  j | j d  d S(   sl   
        L{reflect.fullyQualifiedName} returns the full name of a package and
        a subpackage.
        iNR9   s   twisted.python(   R9   R   R6   R8   (   R	   R9   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_package  s    c         C   s6   |  j  t d  d d l } |  j  | j j d  d S(   sh   
        L{reflect.fullyQualifiedName} returns the name of a module inside a a
        package.
        s   twisted.python.reflectiNs   twisted.trial.unittest(   R   R   t   twisted.trial.unittestt   trialR   (   R	   R9   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_module  s    c         C   s   |  j  t j d  d S(   sc   
        L{reflect.fullyQualifiedName} returns the name of a class and its
        module.
        s   twisted.python.reflect.SettableN(   R   R   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt
   test_class  s    c         C   s   |  j  t j d  d S(   si   
        L{reflect.fullyQualifiedName} returns the name of a function inside its
        module.
        s)   twisted.python.reflect.fullyQualifiedNameN(   R   R   R   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_function  s    c         C   s3   |  j  t j j d  |  j  t j   j d  d S(   su   
        L{reflect.fullyQualifiedName} returns the name of a method inside its
        class and its module.
        s1   twisted.python.reflect.PropertyAccessor.reallyDelN(   R   R   t   PropertyAccessorR   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_method  s    (	   R   R   R   R   R   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   								t   DeprecationTestCasec           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s5   
    Test deprecations in twisted.python.reflect
    c         C   sA   |  j  t d d d d  t j d t d  } |  j | d  d S(	   s7   
        Test deprecation of L{reflect.macro}.
        t   Twistedi   i   i    R   s   test = 1i   N(   t   callDeprecatedR   R   t   macroR   R'   (   R	   t   result(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt
   test_macro  s    c         C   s/   |  j  t d d d d  d f t j t  d S(   s=   
        Test deprecation of L{reflect.allYourBase}.
        R   i   i    s   inspect.getmroN(   R   R   R   t   allYourBaseR   (   R	   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_allYourBase  s    c         C   s;   g  } |  j  t d d d d  d f t j t | d  d S(   sA   
        Test deprecation of L{reflect.accumulateBases}.
        R   i   i    s   inspect.getmroN(   R   R   R   t   accumulateBasesR   RT   (   R	   t   l(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   test_accumulateBases  s    (   R   R   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyR     s   		('   R   Rc   R   t   ihooksR    t   collectionsR   RB   RT   t   twisted.trialR   R6   R   R   t   twisted.python.versionsR   t   TestCaseR   t   AccessorR   R   R   R    R&   R/   RN   RR   R   RS   R   R   R   R   R   R   R   R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_reflect.pyt   <module>   s6   
&seAA