
[XMc           @   s  d  d l  Z  d  d l m Z y d  d l Z Wn e k
 rK d  d l Z n Xy d  d l Z Wn e k
 r{ d  d l Z n Xd  d l m	 Z	 m
 Z
 m Z d e j f d     YZ d e	 j f d     YZ d e j f d	     YZ d
 d d     YZ d d d     YZ d d d     YZ d   Z d e j f d     YZ d d d     YZ d d d     YZ d e j f d     YZ d e j f d     YZ e e e g Z d S(    iN(   t   unittest(   t   stylest   aott   crefutilt   VersionTestCasec           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C   sm   d d d     Ya  t j t     } d t j f d     Ya  t j |  } t j   | j si t d  d  S(   Nt   NullVersionedc           B   s   e  Z d  Z RS(   i    (   t   __name__t
   __module__t   ok(    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR      s   c           B   s   e  Z d  Z d   Z RS(   i   c         S   s   d |  _  d  S(   Ni   (   R   (   t   self(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   upgradeToVersion1!   s    (   R   R   t   persistenceVersionR
   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR      s   s   initial upgrade not run!(    (	   R   t   picklet   dumpsR   t	   Versionedt   loadst	   doUpgradeR   t   AssertionError(   R	   t   pkclt   mnv(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testNullVersionUpgrade   s    
c         C   s   d t  j f d     Ya t   } | j p1 | j s> t d  t j |  } d t _ t j	 |  } t  j
   | j s t d  | j s t d  t j |  } t j	 |  } t  j
   | j d k s t d  | j d k s t d  d  S(	   Nt   MyVersionedc           B   s>   e  Z d  Z d g Z d Z d Z d   Z d   Z d   Z RS(   i   t   garbagedatai    c         S   s   d |  _  d   |  _ d  S(   Nt   xxxc         S   s   d S(   Ns   cant persist(    (   t   q(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   <lambda>1   s    (   t   somedataR   (   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   __init__/   s    	c         S   s   |  j  d 7_  d  S(   Ni   (   t   v3(   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   upgradeToVersion33   s    c         S   s   |  j  d 7_  d  S(   Ni   (   t   v4(   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   upgradeToVersion46   s    (	   R   R   R   t   persistenceForgetsR   R   R   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR   )   s   			s   hasn't been upgraded yeti   s   didn't do version 3 upgrades   didn't do version 4 upgradei   s   upgraded unnecessarily(   R   R   R   R   R   R   R   R   R   R   R   (   R	   t   mvt   picklt   obj(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testVersionUpgrade'   s    		

c         C   s   d t  j f d     Ya t d d  } t d d  } t j | | f  } ~ ~ d t _ d   t _ t j |  \ } } t  j   |  j	 | j
 d  |  j	 | j
 d  |  j | j  |  j | j  d  S(   Nt   ClassWithCustomHashc           B   s   e  Z d    Z d   Z RS(   c         S   s   | |  _  | |  _ d  S(   N(   t   uniquet   hash(   R	   R&   R'   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR   I   s    	c         S   s   |  j  S(   N(   R'   (   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   __hash__L   s    (   R   R   R   R(   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR%   H   s   	t   v1i    t   v2i   c         S   s   t  |  d t  S(   Nt   upgraded(   t   setattrt   True(   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR   U   s    (   R   R   R%   R   R   R   R
   R   R   t   assertEqualsR&   t
   failUnlessR+   (   R	   R)   R*   t   pkl(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testNonIdentityHashF   s    	
c            s   d t  j f d     Ya d t  j f d     Ya t   } t   } t j |  t j |  }   ~ ~ d t _   f d   } | t _ d t _ d   t _ t j |  } t  j	   |  j
 | j j  d  S(   Nt	   ToyClassAc           B   s   e  Z RS(    (   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR2   _   s   t	   ToyClassBc           B   s   e  Z RS(    (   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR3   a   s   i   c            s    t  j    |  _ t j   d  S(   N(   R   R   t   yR   R   (   R	   (   t   pklB(    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR
   h   s    c         S   s   t  |  d t  S(   NR+   (   R,   R-   (   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR   m   s    (   R   R   R2   R3   R   R   R   R
   R   R   R/   R4   R+   (   R	   t   xR4   t   pklAR
   (    (   R5   s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt.   testUpgradeDeserializesObjectsRequiringUpgrade]   s    					
(   R   R   R   R$   R1   R8   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR      s   			t   MyEphemeralc           B   s   e  Z d    Z RS(   c         C   s   | |  _  d  S(   N(   R6   (   R	   R6   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR   u   s    (   R   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR9   s   s   t   EphemeralTestCasec           B   s   e  Z d    Z RS(   c         C   s   t  d  } |  j | j t   |  j | j d  t j |  } t j |  } |  j | j t j  |  j	 t
 | d   d  S(   Ni   R6   (   R9   R.   t	   __class__R6   R   R   R   R   t	   Ephemeralt   assert_t   hasattr(   R	   t   oR"   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testEphemeral{   s    (   R   R   R@   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR:   y   s   t
   Pickleablec           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  d  S(   N(   R6   (   R	   R6   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR      s    c         C   s   |  j  S(   N(   R6   (   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   getX   s    (   R   R   R   RB   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyRA      s   	t   Ac           B   s   e  Z d  Z d   Z RS(   s   
    dummy class
    c         C   s   d  S(   N(    (   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   amethod   s    (   R   R   t   __doc__RD   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyRC      s   t   Bc           B   s   e  Z d  Z d   Z RS(   s   
    dummy class
    c         C   s   d  S(   N(    (   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   bmethod   s    (   R   R   RE   RG   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyRF      s   c           C   s   d  S(   N(    (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   funktion   s    t   PicklingTestCasec           B   s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   s$   Test pickling of extra object types.c         C   s2   t  j t  } t  j |  } |  j | t  d  S(   N(   R   R   R   R   R.   (   R	   R"   R?   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt
   testModule   s    c         C   s8   t  j t j  } t  j |  } |  j | t j  d  S(   N(   R   R   RA   RB   R   R.   (   R	   R"   R?   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testClassMethod   s    c         C   sc   t  d  } t j | j  } t j |  } |  j |   d  |  j t |  t | j   d  S(   Ni   (   RA   R   R   RB   R   R.   t   type(   R	   R#   R"   R?   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testInstanceMethod   s
    c         C   sm   t  j    } | j d  t j |  } t j |  } |  j t |  t |   |  j | j   d  d  S(   Nt   abc(   t   StringIOt   writeR   R   R   R.   RL   t   getvalue(   R	   t   fR"   R?   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testStringIO   s    (   R   R   RE   RJ   RK   RM   RS   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyRI      s
   			t   EvilSourcerorc           B   s   e  Z d    Z RS(   c         C   s(   |  |  _  |  |  j  _ | |  j  j _ d  S(   N(   t   at   bt   c(   R	   R6   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR      s    	(   R   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyRT      s   t   NonDictStatec           B   s   e  Z d    Z d   Z RS(   c         C   s   |  j  S(   N(   t   state(   R	   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   __getstate__   s    c         C   s   | |  _  d  S(   N(   RY   (   R	   RY   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   __setstate__   s    (   R   R   RZ   R[   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyRX      s   	t   AOTTestCasec           B   sP   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c      
   C   sc   d d d t  t d d d  d d t j d d  t f
 } t j t j |   } |  j	 | |  d  S(   Ni   g       @y              @i   i   t   hellou   world(
   R-   t   slicet   syst   maxintt   Nonet   EllipsisR   t   unjellyFromSourcet   jellyToSourceR.   (   R	   R#   t   rtObj(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testSimpleTypes   s    7c         C   sb   t    } t   } | j | _ | | _ t j t j |   j j } |  j | j | j	 j
  d  S(   N(   RC   RF   RG   RU   R   Rc   Rd   R.   t   im_classt   im_selfR;   (   R	   RU   RV   t   im_(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testMethodSelfIdentity   s    			c         C   sj   t    } t   } | j | _ | | _ t j } t ` z# |  j t t j t j |   Wd | t _ Xd S(   s   
        If a class change after an instance has been created,
        L{aot.unjellyFromSource} shoud raise a C{TypeError} when trying to
        unjelly the instance.
        N(	   RC   RF   RG   RU   t   assertRaisest	   TypeErrorR   Rc   Rd   (   R	   RU   RV   t   savedbmethod(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   test_methodNotSelfIdentity   s    				c         C   s?   y | Wn d d l  m } n X|  j t t j |    d S(   sp   
        L{aot.jellyToSource} should raise a C{TypeError} when trying to jelly
        an unknown type.
        i(   t   SetN(   t   setsRo   Rk   Rl   R   Rd   (   R	   t   set(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   test_unsupportedType   s
    c         C   s   t  j   j } i d d 6| d 6} d d d d d d d	 d t t  j | t g } t |  } | j |  | j |  | j |  t  j t  j | | g   } | d | d k s t	  | d d d !| d d !k s t	  d  S(   Nt   worldR]   t   methodi   i   i   s   he	llo

"x world!u   goodbye 
	တ world!g      ?id   l   d i    i   l-                              \l.:'-4^SC{'#EMn9I{;4'Dh3
4;,Y V|(4"Kl5s (
   R   t
   AOTJelliert	   jellyToAOR    RH   t   tuplet   appendRc   Rd   R   (   R	   t   ajt   dt   lt   tt   uj(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testBasicIdentity   s    		c         C   s@   t    } d | _ t j t j |   j | j k s< t  d  S(   Ns	   meringue!(   RX   RY   R   Rc   Rd   R   (   R	   RU   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testNonDictState  s    		c         C   sS   d } t  j    } | j |  t j t j |   } | j   | k sO t  d  S(   Nt   foo_bar(   RO   RP   R   Rc   Rd   RQ   R   (   R	   t   st   sioR}   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testCopyReg  s
    c         C   s   t  t  g    } t j |  } t j |  } | j | k sE t  | j j | j k s` t  | j | j j k	 s{ t  d  S(   N(   RT   R   t
   jellyToAOTt   unjellyFromAOTRU   R   RV   RW   (   R	   R?   t   j1t   oj(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   testFunkyReferences  s    (
   R   R   Rf   Rj   Rn   Rr   R~   R   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR\      s   								t   CrefUtilTestCasec           B   s    e  Z d  Z d   Z d   Z RS(   s    
    Tests for L{crefutil}.
    c         C   s,   t  j i   } |  j t | j d d  d S(   sO   
        L{crefutil._DictKeyAndValue} only support keys C{0} and C{1}.
        i   i   N(   R   t   _DictKeyAndValueRk   t   RuntimeErrort   __setitem__(   R	   Rz   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   test_dictUnknownKey'  s    c         C   s3   t  j   } d | d <|  j t | j d d  d S(   sI   
        L{crefutil._Defer} can be assigned a key only one time.
        i   i    N(   R   t   _DeferRk   R   R   (   R	   Rz   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   test_deferSetMultipleTimes/  s    
(   R   R   RE   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyR   "  s   	(    (    (    (    (    (   R_   t   twisted.trialR    t   cPickleR   t   ImportErrort	   cStringIORO   t   twisted.persistedR   R   R   t   TestCaseR   R<   R9   R:   RA   RC   RF   RH   RI   RT   RX   R\   R   t	   testCases(    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_persisted.pyt   <module>   s.   Z	Y