o
    ¯bR  ã                   @   s–   d dd… Z ddlmZ ddlmZ ddlmZ G dd	„ d	ƒZG d
d„ dejƒZ	G dd„ dej
ƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )z$Revision: 1.3 $é   éþÿÿÿé    )Úhtb)Úunittesté   )ÚDummyConsumerc                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú
DummyClockr   c                 C   s
   || _ d S ©N©Útime)ÚselfÚwhen© r   ú7/usr/lib/python3/dist-packages/twisted/test/test_htb.pyÚset   s   
zDummyClock.setc                 C   s   | j S r	   r
   ©r   r   r   r   Ú__call__   s   zDummyClock.__call__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   
   s    r   c                   @   s   e Zd ZdZdZdS )Ú
SomeBucketéd   é   N)r   r   r   ÚmaxburstÚrater   r   r   r   r      s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestBucketBasec                 C   s   t j| _tƒ | _| jt _d S r	   )r   r   Ú_realTimeFuncr   Úclockr   r   r   r   ÚsetUp   s   zTestBucketBase.setUpc                 C   s   | j t_d S r	   )r   r   r   r   r   r   r   ÚtearDown   s   zTestBucketBase.tearDownN)r   r   r   r   r   r   r   r   r   r      s    r   c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚBucketTestsc                 C   s    t ƒ }| d¡}|  d|¡ dS )z1
        Testing the size of the bucket.
        éè  r   N)r   ÚaddÚassertEqual©r   ÚbÚfitr   r   r   ÚtestBucketSize$   s   
zBucketTests.testBucketSizec                 C   s6   t ƒ }| d¡}| j d¡ | d¡}|  d|¡ dS )z2
        Testing the bucket's drain rate.
        r"   é
   é   N)r   r#   r   r   r$   r%   r   r   r   ÚtestBucketDrain,   s
   

zBucketTests.testBucketDrainc                 C   sP   t ƒ }| d¡ | j d¡ | ¡ }|  |¡ | j d¡ | ¡ }|  |¡ dS )z\
        L{htb.Bucket.drip} returns C{True} if the bucket is empty after that drip.
        r*   é	   r)   N)r   r#   r   r   ÚdripÚassertFalseÚ
assertTrue)r   r&   Úemptyr   r   r   Útest_bucketEmpty6   s   

zBucketTests.test_bucketEmptyN)r   r   r   r(   r+   r1   r   r   r   r   r!   #   s    
r!   c                   @   r    )ÚBucketNestingTestsc                 C   s.   t  | ¡ tƒ | _t| jƒ| _t| jƒ| _d S r	   )r   r   r   ÚparentÚchild1Úchild2r   r   r   r   r   E   s   
zBucketNestingTests.setUpc                 C   s(   | j  d¡ | j d¡}|  d|¡ d S )NéZ   r)   )r4   r#   r5   r$   ©r   r'   r   r   r   ÚtestBucketParentSizeK   s   z'BucketNestingTests.testBucketParentSizec                 C   s<   d| j _| j d¡ | j d¡ | j d¡}|  d|¡ d S )Nr   r   r)   )r3   r   r4   r#   r   r   r$   r7   r   r   r   ÚtestBucketParentRateQ   s
   z'BucketNestingTests.testBucketParentRateN)r   r   r   r   r8   r9   r   r   r   r   r2   D   s    r2   c                   @   r    )ÚConsumerShaperTestsc                 C   s0   t  | ¡ tƒ | _tƒ | _t | j| j¡| _d S r	   )	r   r   r   Ú
underlyingr   Úbucketr   ÚShapedConsumerÚshapedr   r   r   r   r   c   s   
zConsumerShaperTests.setUpc                 C   sT   d}| j  d¡ | j d¡ | j |¡ | j ¡  |  t| j	 
¡ ƒ|| j j ¡ d S )Nr)   r   Údxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r<   r#   r>   Úwriter   r   ÚresumeProducingr$   Úlenr;   Úgetvaluer   )r   Údelta_tr   r   r   ÚtestRatei   s   
"zConsumerShaperTests.testRatec                 C   s.   |   | jjd¡ | j ¡  |   | jjd¡ d S )Nr   r   )r$   r<   Ú	_refcountr>   ÚstopProducingr   r   r   r   ÚtestBucketRefss   s   
z"ConsumerShaperTests.testBucketRefsN)r   r   r   r   rE   rH   r   r   r   r   r:   b   s    
r:   N)Ú__version__Útwisted.protocolsr   Útwisted.trialr   Útest_pcpr   r   ÚBucketr   ÚTestCaser   r!   r2   r:   r   r   r   r   Ú<module>   s   

!