a
    OE(                     @   s   d dl Z d dlZd dlZd dlZe ZG dd dejZG dd dejZG dd dejZ	G dd	 d	ejZ
ed
kre  dS )    Nc                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )Queuec                 C   s.   t d tjdd| _| t| jd d S )NZqrtestqueuekeyr   )rdeleteqrr   qassertEqualslenself r   M/var/www/dev/btcams2022/python_venv/lib/python3.9/site-packages/test/tests.pysetUp	   s    
zQueue.setUpc                 C   sD   | j }|d | t|d | | d | t|d d S Nfoo   r   r   pushr	   r
   popr   r   r   r   r   test_roundtrip   s
    
zQueue.test_roundtripc                 C   s>   | j }|d |d | | d | | d d S Nr   barr   r   r	   r   r   r   r   r   
test_order   s
    

zQueue.test_orderc                 C   s>   | j }|d | | d |d | | d d S r   r   r   r   r   r   test_order_mixed   s
    

zQueue.test_order_mixedc                 C   sl   d}t |D ]"}| t| j| | j| qt |D ]$}| t| j||  | j  q8| j  d S )Nd   )ranger	   r
   r   r   r   clearr   countir   r   r   test_len#   s    zQueue.test_lenc                 C   s   d}dd t |D }| j  | j| |  t |D ]}| | j| ||  q<t |d D ]*}| | j||d  |||d   qd| | jdd |dd  | j  d S )Nr   c                 S   s   g | ]}|qS r   r   .0r"   r   r   r   
<listcomp>/       z'Queue.test_get_item.<locals>.<listcomp>r   r   )r   r   r   extendreverser	   r   r!   itemsr"   r   r   r   test_get_item-   s    
(zQueue.test_get_itemc                    s   d | j dd t D  | t| j   | j   | j dd t D  | t| j   | j   | j t  | | j   fddt D  | j   dS )2Test extending a queue, including with a generatorr   c                 s   s   | ]
}|V  qd S Nr   r$   r   r   r   	<genexpr>@   r'   z$Queue.test_extend.<locals>.<genexpr>c                 S   s   g | ]}|qS r   r   r$   r   r   r   r&   D   r'   z%Queue.test_extend.<locals>.<listcomp>c                    s   g | ]} | d  qS r   r   r$   r!   r   r   r&   I   r'   N)r   r)   r   r	   r
   r   elementsr   r   r2   r   test_extend=   s    

$zQueue.test_extendc                 C   sL   d}| j dd t|D  | j  }|rH| t|t | j  }q(dS )zBMake sure that it behaves like python-object-in, python-object-outr   c                 s   s   | ]}d |iV  qdS )r   Nr   r$   r   r   r   r0   O   r'   z)Queue.test_pack_unpack.<locals>.<genexpr>N)r   r)   r   r   
assertTrue
isinstancedict)r   r!   nextr   r   r   test_pack_unpackL   s    
zQueue.test_pack_unpackc                    s   d | j t  | | j   fddt D  t }| j | | t| j d |	d | j 
| | t| j   | | j   fddt D  |  | j   W d    n1 s0    Y  d S )Nr   c                    s   g | ]} | d  qS r1   r   r$   r2   r   r   r&   Y   r'   z(Queue.test_dump_load.<locals>.<listcomp>r   c                    s   g | ]} | d  qS r1   r   r$   r2   r   r   r&   b   r'   )r   r)   r   r	   r3   ostmpfiledumpr
   seekloadtruncater   r   fr   r2   r   test_dump_loadU   s    $

$zQueue.test_dump_loadN)__name__
__module____qualname__r   r   r   r   r#   r-   r4   r9   rB   r   r   r   r   r      s   
	r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )CappedCollectionc                 C   s0   t d tjddd| _| t| jd d S )NZqrtestcc   )r   sizer   )r   r   r   rF   aqr	   r
   r   r   r   r   r   h   s    
zCappedCollection.setUpc                 C   sD   | j }|d | t|d | | d | t|d d S r   rI   r   r	   r
   r   r   rI   r   r   r   r   m   s
    
zCappedCollection.test_roundtripc                 C   s>   | j }|d |d | | d | | d d S r   rI   r   r	   r   rK   r   r   r   r   t   s
    

zCappedCollection.test_orderc                 C   s>   | j }|d | | d |d | | d d S r   rL   rK   r   r   r   r   {   s
    

z!CappedCollection.test_order_mixedc                 C   s   | j }|d |d |d | t|d |d |d | t|d | | d | | d | | d | t|d d S )NabcrG   der   rJ   rK   r   r   r   
test_limit   s    




zCappedCollection.test_limitc                 C   sB   d}| j dd t|D  | t| j | j j | j   dS )r.   r   c                 s   s   | ]
}|V  qd S r/   r   r$   r   r   r   r0      r'   z/CappedCollection.test_extend.<locals>.<genexpr>N)rI   r)   r   r	   r
   rH   r   )r   r!   r   r   r   r4      s    zCappedCollection.test_extendN)	rC   rD   rE   r   r   r   r   rR   r4   r   r   r   r   rF   g   s   rF   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )Stackc                 C   s   t d tjdd| _d S )NZqrteststackr   )r   r   r   rS   stackr   r   r   r   r      s    
zStack.setUpc                 C   sD   | j }|d | t|d | | d | t|d d S r   )rT   r   r	   r
   r   r   rT   r   r   r   r      s
    
zStack.test_roundtripc                 C   s>   | j }|d |d | | d | | d d S r   rT   r   r	   r   rU   r   r   r   r      s
    

zStack.test_orderc                 C   s>   | j }|d | | d |d | | d d S r   rV   rU   r   r   r   r      s
    

zStack.test_order_mixedc                 C   s   d}dd t |D }| j| |  t |D ]}| | j| ||  q2t |d D ]*}| | j||d  |||d   qZ| | jdd |dd  | j  d S )Nr   c                 S   s   g | ]}|qS r   r   r$   r   r   r   r&      r'   z'Stack.test_get_item.<locals>.<listcomp>r      r   r(   )r   rT   r)   r*   r	   r   r+   r   r   r   r-      s    (zStack.test_get_itemc                    s   d | j dd t D  | | j   fddt D  | j  }|dkrr| j  }| ||k |}qL| j   dS )r.   r   c                 s   s   | ]
}|V  qd S r/   r   r$   r   r   r   r0      r'   z$Stack.test_extend.<locals>.<genexpr>c                    s   g | ]} | d  qS r1   r   r$   r2   r   r   r&      r'   z%Stack.test_extend.<locals>.<listcomp>N)rT   r)   r   r	   r3   r   r5   r   )r   lastnowr   r2   r   r4      s    $

zStack.test_extendc                    s   d | j t  | | j   fddt D  t }| j | | t| j d |	d | j 
| | t| j   | | j   fddt D  |  | j   W d    n1 s0    Y  d S )Nr   c                    s   g | ]} | d  qS r1   r   r$   r2   r   r   r&      r'   z(Stack.test_dump_load.<locals>.<listcomp>r   c                    s   g | ]} | d  qS r1   r   r$   r2   r   r   r&      r'   )rT   r)   r   r	   r3   r:   r;   r<   r
   r=   r>   r?   r   r@   r   r2   r   rB      s    $

$zStack.test_dump_loadN)
rC   rD   rE   r   r   r   r   r-   r4   rB   r   r   r   r   rS      s   rS   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )PriorityQueuec                 C   s   t d tjdd| _d S )NZqrpriorityqueuer   )r   r   r   rZ   r   r   r   r   r   r      s    
zPriorityQueue.setUpc                 C   sH   | j dd | t| j d | | j  d | t| j d d S r   r   r   r   r   r   r      s    zPriorityQueue.test_roundtripc                 C   sD   | j dd | j dd | | j  d | | j  d d S )Nr   r   r   r   r   r   r   r   r   r      s    zPriorityQueue.test_orderc                 C   s   d}dd t |D }| jt|| t |D ]}| | j| ||  q0t |d D ]*}| | j||d  |||d   qX| | jdd |dd  | j  d S )Nr   c                 S   s   g | ]}|qS r   r   r$   r   r   r   r&      r'   z/PriorityQueue.test_get_item.<locals>.<listcomp>r   rW   r   r(   )r   r   r)   zipr	   r   r+   r   r   r   r-      s    (zPriorityQueue.test_get_itemc                 C   sH   d}dd t |D }| jt|| | | j | | j  dS )r.   r   c                 S   s   g | ]}|qS r   r   r$   r   r   r   r&     r'   z-PriorityQueue.test_extend.<locals>.<listcomp>N)r   r   r)   r[   r	   r3   r   )r   r!   r,   r   r   r   r4      s
    zPriorityQueue.test_extendc                 C   s   d}dd t |D }| jt|| | j }|rR| t|t | j }q2dd t |D }| jt|| | jjdd\}}|r| t|t | t|t | jjdd\}}qdS )z3Test whether or not we can get real values with popr   c                 S   s   g | ]}|qS r   r   r$   r   r   r   r&   
  r'   z*PriorityQueue.test_pop.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r$   r   r   r   r&     r'   TZ
withscoresN)	r   r   r)   r[   r   r5   r6   intfloat)r   r!   r,   r8   valuescorer   r   r   test_pop  s    
zPriorityQueue.test_popc                 C   sb   d}t |D ]}| j|||  q| jjdd\}}|r^| || | | jjdd\}}q6dS )zTest whether we can push wellr   Tr\   N)r   r   r   r   assertEqual)r   r!   r"   r_   r`   r   r   r   	test_push  s    zPriorityQueue.test_pushc                 C   s@   d}t |D ]}| jd| q| t| jd | j  d S )Nr   r   )r   r   r   r	   r
   r   r    r   r   r   test_uniqueness#  s
    zPriorityQueue.test_uniquenessc                 C   s   d}dd t |D }| jt|| | | j | t z}| j| | t	| jd |
d | j| | t	| j| | | j | |  | j  W d    n1 s0    Y  d S )Nr   c                 S   s   g | ]}|qS r   r   r$   r   r   r   r&   .  r'   z0PriorityQueue.test_dump_load.<locals>.<listcomp>r   )r   r   r)   r[   r	   r3   r:   r;   r<   r
   r=   r>   r?   r   )r   r!   r,   rA   r   r   r   rB   +  s    

zPriorityQueue.test_dump_loadN)rC   rD   rE   r   r   r   r-   r4   ra   rc   rd   rB   r   r   r   r   rZ      s   
rZ   __main__)r:   r   ZredisunittestZRedisr   TestCaser   rF   rS   rZ   rC   mainr   r   r   r   <module>   s   _0I^