
    DhC(                       d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
mZmZmZmZmZmZ d dlmZ  G d d	      Z G d
 de      Z G d d      Z G d d      Z G d d      Z G d d      Z G d deee      Z G d deee      Z G d deeee      Z G d de      Z G d de      Z G d de      Z G d  d!e      Z G d" d#eeee      Z  G d$ d%eeee      Z! G d& d'eeee      Z"y)(    )annotations)abstractmethod)Any)mockN)	BaseQueueFifoDiskQueueFifoMemoryQueueFifoSQLiteQueueLifoDiskQueueLifoMemoryQueueLifoSQLiteQueue)QueuelibTestCasec                  :    e Zd ZddZd	dZd
dZd
dZddZd Zy)
DummyQueuec                    g | _         y Nqselfs    {/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/queuelib/tests/test_queue.py__init__zDummyQueue.__init__   s	        c                :    | j                   j                  |       y r   )r   append)r   objs     r   pushzDummyQueue.push   s    cr   c                R    | j                   r| j                   j                         S d S r   )r   popr   s    r   r   zDummyQueue.pop   s    #vvtvvzz|/4/r   c                <    | j                   r| j                   d   S d S )Nr   r   s    r   peekzDummyQueue.peek   s    !VVtvvbz--r   c                     y r    r   s    r   closezDummyQueue.close"   s    r   c                ,    t        | j                        S r   )lenr   r   s    r   __len__zDummyQueue.__len__%   s    466{r   N)returnNone)r   r   r)   r*   )r)   z
Any | None)	__name__
__module____qualname__r   r   r   r"   r%   r(   r$   r   r   r   r      s     0.r   r   c                      e Zd Zd Zd Zd Zy)InterfaceTestc                    t               }| j                  t              5  |j                  d       d d d        | j                  t              5  |j	                          d d d        | j                  t              5  |j                          d d d        | j                  t              5  t        |       d d d        |j                          y # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   [xY w# 1 sw Y   >xY w)Nr   )r   assertRaisesNotImplementedErrorr   r"   r   r'   r%   )r   queues     r   
test_queuezInterfaceTest.test_queue*   s    23 	JJsO	23 	JJL	23 	IIK	23 	J		 		 		 		 	s/   CC=C(+C4CC%(C14C=c                   t        t        t              rJ t        t        t              rJ t        t        t              rJ t        t
        t              sJ t        t        t              sJ t        t        t              sJ t        t        t              sJ t        t        t              sJ t        t        t              sJ t        t        t              sJ y r   )
issubclasslistr   intr   r   r	   r   r   r   r
   r   r   s    r   test_issubclasszInterfaceTest.test_issubclass6   s    dI...c9---.	:::*i000/9555/9555-333-333/9555/9555r   c                   t        dt              rJ t        g t              rJ t        t               t              sJ t        t               t              sJ t        t	               t              sJ t
        t        t        t        fD ]:  } || j                               }t        |t              sJ |j                          < y )N   )
isinstancer   r   r	   r   r   r   r
   r   tempfilenamer%   )r   clsr3   s      r   test_isinstancezInterfaceTest.test_isinstanceB   s    a+++b),,,*,	222/+Y777/+Y777!=/?S 	C))+,EeY///KKM	r   N)r+   r,   r-   r4   r9   r?   r$   r   r   r/   r/   )   s    

6	r   r/   c                  <    e Zd Zedd       Zd Zd Zd Zd Zd Z	y)	QueueTestMixinc                    t         r   )r2   r   s    r   r3   zQueueTestMixin.queueO   s    !!r   c                h    | j                         }|j                         J |j                          y)zEmpty queue testN)r3   r   r%   r   r   s     r   
test_emptyzQueueTestMixin.test_emptyS   s&    JJLuuw		r   c                    | j                         }|j                  d       |j                         dk(  sJ |j                          y N   ar3   r   r   r%   rD   s     r   test_single_pushpopz"QueueTestMixin.test_single_pushpopY   s3    JJL	tuuw$		r   c                    d}| j                         }|j                  |       |j                         |k(  sJ |j                          y )Ns   }q(UbodyqU U	_encodingqUutf-8qUcookiesq}qUmetaq}qUheadersq	}Uurlq
X   file:///tmp/tmphDJYsgUdont_filterqUpriorityqK UcallbackqNUmethodqUGETqUerrbackqNu.rI   )r   elemr   s      r   test_binary_elementz"QueueTestMixin.test_binary_element_   s@    @ 	 JJL	tuuw$		r   c                   | j                         }| j                  t        |      d       |j                  d       | j                  t        |      d       |j                  d       |j                  d       | j                  t        |      d       |j	                          |j	                          |j	                          | j                  t        |      d       |j                          y )Nr   rH   r;      b   c   )r3   assertEqualr'   r   r   r%   rD   s     r   test_lenzQueueTestMixin.test_lenl   s    JJLQ#	tQ#	t	tQ#			Q#		r   c                b   | j                         }| j                  |j                                |j                  d       | j	                  |j                         d       | j	                  |j                         d       | j                  |j                                |j                          y rG   r3   assertIsNoner"   r   rR   r   r%   rD   s     r   test_peek_one_elementz$QueueTestMixin.test_peek_one_elementz   su    JJL!&&(#	t4($'!&&(#		r   N)r)   r   )
r+   r,   r-   r   r3   rE   rJ   rM   rS   rW   r$   r   r   rA   rA   N   s-    " "r   rA   c                      e Zd Zd Zd Zd Zy)FifoTestMixinc                   | j                         }|j                  d       |j                  d       |j                  d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       |j	                          yzBasic push/pop testrH   rO   rP   Nr3   r   rR   r   r%   rD   s     r   test_push_pop1zFifoTestMixin.test_push_pop1       JJL	t	t	t$'$'$'$'		r   c                .   | j                         }|j                  d       |j                  d       |j                  d       |j                  d       | j                  |j                         d       | j                  |j                         d       |j                  d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       |j	                          yzTest interleaved push and popsrH   rO   rP      d   eNr\   rD   s     r   test_push_pop2zFifoTestMixin.test_push_pop2       JJL	t	t	t	t$'$'	t$'$'$'		r   c                f   | j                         }| j                  |j                                |j                  d       |j                  d       |j                  d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j                  |j                                |j                          y NrH   rO   rP   rU   rD   s     r   test_peek_fifozFifoTestMixin.test_peek_fifo   %   JJL!&&(#	t	t	t4(4($'4(4($'4(4($'!&&(#		r   N)r+   r,   r-   r]   rc   rg   r$   r   r   rY   rY          
r   rY   c                      e Zd Zd Zd Zd Zy)LifoTestMixinc                   | j                         }|j                  d       |j                  d       |j                  d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       |j	                          yr[   r\   rD   s     r   r]   zLifoTestMixin.test_push_pop1   r^   r   c                .   | j                         }|j                  d       |j                  d       |j                  d       |j                  d       | j                  |j                         d       | j                  |j                         d       |j                  d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       |j	                          yr`   r\   rD   s     r   rc   zLifoTestMixin.test_push_pop2   rd   r   c                f   | j                         }| j                  |j                                |j                  d       |j                  d       |j                  d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       | j                  |j                                |j                          y rf   rU   rD   s     r   test_peek_lifozLifoTestMixin.test_peek_lifo   rh   r   N)r+   r,   r-   r]   rc   ro   r$   r   r   rk   rk      ri   r   rk   c                  f    e Zd ZdZej
                  j                  d      d        Zd Zd Z	d Z
y)	PersistentTestMixini z@Reenable once Scrapy.squeues stops extending from this testsuite)reasonc                N   | j                         }| j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d        | j                  t        |j                  d        |j	                          y )Nr    c                    | S r   r$   )xs    r   <lambda>zEPersistentTestMixin.test_non_bytes_raises_typeerror.<locals>.<lambda>   s    q r   )r3   r1   	TypeErrorr   r%   rD   s     r   test_non_bytes_raises_typeerrorz3PersistentTestMixin.test_non_bytes_raises_typeerror   sp     JJL)QVVQ/)QVVR0)QVVT2)QVV[9		r   c                    d}| j                         }|j                  |       |j                          | j                         }|j                         }| j	                  ||       |j                          y )Ns   
)r3   r   r%   r   rR   )r   e1r   e2s       r   test_text_in_windowsz(PersistentTestMixin.test_text_in_windows   sU    JJL	r
		JJLUUWR 		r   c                   | j                         }|j                  d       |j                  d       |j                  d       |j                  d       |j                          |j                          |j                          ~| j                         }| j	                  t        |      d       |j                  d       |j                          |j                          |j                          ~| j                         }|j                         J | j	                  t        |      d       |j                          y)	z'Test closing and re-opening keeps staterH   rO   rP   ra      rb   Nr   )r3   r   r   r%   rR   r'   rD   s     r   test_close_openz#PersistentTestMixin.test_close_open   s    JJL	t	t	t	t				JJLQ#	t				JJLuuw"""Q#		r   c                   | j                         }g d}| j                  j                         sJ |D ]  }|j                  |        |D ]  }|j	                           |j                          | j                  j                         rJ y)z+Test queue dir is removed if queue is empty   0   1   2   3   4N)r3   qpathexistsr   r   r%   )r   r   valuesrv   _s        r   test_cleanupz PersistentTestMixin.test_cleanup  s~    JJL/zz  """ 	AFF1I	  	AEEG			::$$&&&&r   N)r+   r,   r-   	chunksizepytestmarkxfailry   r}   r   r   r$   r   r   rq   rq      s?    I[[Q  2'r   rq   c                      e Zd Zd Zy)FifoMemoryQueueTestc                    t               S r   )r	   r   s    r   r3   zFifoMemoryQueueTest.queue"        r   Nr+   r,   r-   r3   r$   r   r   r   r   !      !r   r   c                      e Zd Zd Zy)LifoMemoryQueueTestc                    t               S r   )r   r   s    r   r3   zLifoMemoryQueueTest.queue'  r   r   Nr   r$   r   r   r   r   &  r   r   r   c                      e Zd Zd Zd Zd Zy)FifoDiskQueueTestc                D    t        | j                  | j                        S )N)r   )r   r   r   r   s    r   r3   zFifoDiskQueueTest.queue.  s    TZZ4>>BBr   c                   | j                         }|j                  d       | j                         j                  d      5 }t        j
                  j                  |d|      5  |j                         J |j                         J 	 d d d        d d d        |j                          y # 1 sw Y   "xY w# 1 sw Y   &xY w)Ns	   somethingzw+tailf)
r3   r   r=   openr   patchobjectr"   r   r%   )r   r   
empty_files      r   test_not_szhdrz FifoDiskQueueTest.test_not_szhdr1  s    JJL	|$$T*	#.8JJa*5	# 668###557?"?	# 	# 	
		# 	# 	# 	#s$   "B6#%B*	B6*B3	/B66B?c                   g d}| j                         }|D ]  }|j                  |        t        | j                  j	                  d            }| j                  t        |      d| j                  z  dz          |D ]  }|j                           t        | j                  j	                  d            }| j                  t        |      d       |j                          y)z#Test chunks are created and removedr   zq*   r;   N)
r3   r   r7   r   globrR   r'   r   r   r%   )r   r   r   rv   chunksr   s         r   test_chunkszFifoDiskQueueTest.test_chunks<  s    /JJL 	AFF1I	 djjood+,Va4>>&9A&=> 	AEEG	 djjood+,Va(		r   N)r+   r,   r-   r3   r   r   r$   r   r   r   r   +  s    C	r   r   c                      e Zd ZdZy)ChunkSize1FifoDiskQueueTestr;   Nr+   r,   r-   r   r$   r   r   r   r   M      Ir   r   c                      e Zd ZdZy)ChunkSize2FifoDiskQueueTestr   Nr   r$   r   r   r   r   Q  r   r   r   c                      e Zd ZdZy)ChunkSize3FifoDiskQueueTestrQ   Nr   r$   r   r   r   r   U  r   r   r   c                      e Zd ZdZy)ChunkSize4FifoDiskQueueTest   Nr   r$   r   r   r   r   Y  r   r   r   c                      e Zd Zd Zd Zy)LifoDiskQueueTestc                ,    t        | j                        S r   )r   r   r   s    r   r3   zLifoDiskQueueTest.queue`  s    TZZ((r   c                   | j                         }|j                  d       |j                  d       |j                          | j                  j	                         j
                  }| j                         }|j                          |j                          | j                  j	                         j
                  sJ |       y)z2Test size of queue file shrinks when popping itemsrH   rO   N)r3   r   r%   r   statst_sizer   )r   r   sizes      r   test_file_size_shrinksz(LifoDiskQueueTest.test_file_size_shrinksc  s~    JJL	t	t		zz ((JJL			zz ((.$.(r   N)r+   r,   r-   r3   r   r$   r   r   r   r   ]  s    )
/r   r   c                      e Zd Zd Zy)FifoSQLiteQueueTestc                ,    t        | j                        S r   )r
   r   r   s    r   r3   zFifoSQLiteQueueTest.queues      tzz**r   Nr   r$   r   r   r   r   p      +r   r   c                      e Zd Zd Zy)LifoSQLiteQueueTestc                ,    t        | j                        S r   )r   r   r   s    r   r3   zLifoSQLiteQueueTest.queuez  r   r   Nr   r$   r   r   r   r   w  r   r   r   )#
__future__r   abcr   typingr   unittestr   r   queuelib.queuer   r   r	   r
   r   r   r   queuelib.testsr   r   r/   rA   rY   rk   rq   r   r   r   r   r   r   r   r   r   r   r$   r   r   <module>r      s   "       , ("$ "J3 3l, ,^, ,^<' <'~!-9I !
!-9I !
&8HD"3 "3 "3 "3 /&8H/&+&8H++&8H+r   