§
    2@Äjâ  ã                   ó    — d Z ddlZddlmZ ddlmZ dZdZdZdZ	dZ
d	Zd
Zd„ Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )z,
Testing C implementation of the numba sets
é    N)ÚTestCase)Ú
_helperlibé   éÿÿÿÿéþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿc                 ó²   — t          | t          ¦  «        r+|t          | ¦  «        z
  dz  |                      ¦   «         z   }n|                      |d¦  «        }|S )Nó    Úbig)Ú
isinstanceÚstrÚlenÚencodeÚto_bytes)ÚkeyÚkey_sizeÚ	key_bytess      úIC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_setimpl.pyr   r      sQ   € Ý�#•sÑÔð 2Ø¥ C¡¤Ñ(¨EÑ1°C·J²J±L´LÑ@ˆ	ˆ	à—L’L ¨5Ñ1Ô1ˆ	ØÐó    c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚSetIterzAn iterator for the `Set`.
    c                 ó  — || _         | j         j                             ¦   «         }t          j        |z  d¦  «        | _        t          j        | j        t          j        ¦  «        | _        | j          	                    | j        ¦  «         d S )Nr   )
ÚparentÚtcÚnumba_set_iter_sizeofÚctypesÚc_char_pÚit_state_bufÚcastÚc_void_pÚitÚset_iter)Úselfr   Úitsizes      r   Ú__init__zSetIter.__init__   sk   € ØˆŒØ””×5Ò5Ñ7Ô7ˆÝ#œ_¨vÑ5°qÑ9Ô9ˆÔÝ”+˜dÔ/µ´ÑAÔAˆŒØŒ×Ò˜TœWÑ%Ô%Ð%Ð%Ð%r   c                 ó   — | S ©N© ©r%   s    r   Ú__iter__zSetIter.__iter__&   s   € Øˆr   c                 ó@   — | j                              | j        ¦  «        S r)   )r   Úset_iter_nextr#   r+   s    r   Ú__next__zSetIter.__next__)   s   € ØŒ{×(Ò(¨¬Ñ1Ô1Ð1r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   r,   r/   r*   r   r   r   r      sK   € € € € € ðð ð&ð &ð &ðð ð ð2ð 2ð 2ð 2ð 2r   r   c                   óf   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚSetzPA wrapper around the C-API to provide a minimal set object for
    testing.
    c                 óX   — || _         || _        |                      ||¦  «        | _        dS )zÍ
        Parameters
        ----------
        tc : TestCase instance
        key_size : int
            byte size for the items
        allocated : int
            number of items to allocate for
        N)r   r   Úset_newÚsetp)r%   r   r   Ú	allocateds       r   r'   zSet.__init__1   s+   € ð ˆŒØ ˆŒØ—L’L ¨9Ñ5Ô5ˆŒ	ˆ	ˆ	r   c                 ó*   — |                       ¦   «         S r)   )Ú
set_lengthr+   s    r   Ú__len__zSet.__len__A   s   € Ø�ŠÑ Ô Ð r   c                 óX   — t          || j        ¦  «        }|                      |¬¦  «        S )N)r   )r   r   Úset_contains©r%   r   r   s      r   Ú__contains__zSet.__contains__D   s*   € Ý˜S $¤-Ñ0Ô0ˆ	Ø× Ò ¨9Ð Ñ5Ô5Ð5r   c                 ó    — t          | ¦  «        S r)   )r   r+   s    r   r,   zSet.__iter__H   s   € Ý�t‰}Œ}Ðr   c                 óD   — | j                              | j        ¦  «         d S r)   )r   Únumba_set_freer8   r+   s    r   Ú__del__zSet.__del__K   s    € ØŒ×Ò˜tœyÑ)Ô)Ð)Ð)Ð)r   c                 óZ   — t          || j        ¦  «        }|                      |¦  «         d S r)   )r   r   Úset_addr?   s      r   ÚaddzSet.addN   s+   € Ý˜S $¤-Ñ0Ô0ˆ	Ø�Š�YÑÔÐÐÐr   c                 óZ   — t          || j        ¦  «        }|                      |¦  «         d S r)   )r   r   Úset_discardr?   s      r   ÚdiscardzSet.discardR   s-   € Ý˜S $¤-Ñ0Ô0ˆ	Ø×Ò˜Ñ#Ô#Ð#Ð#Ð#r   c                 óÈ   — t          j        ¦   «         }| j                             t          j        |¦  «        ||¦  «        }| j                             |t          ¦  «         |S r)   )r   r"   r   Únumba_set_newÚbyrefÚassertEqualÚOK)r%   r   r9   r8   Ústatuss        r   r7   zSet.set_newX   sV   € ÝŒÑ Ô ˆØ”×&Ò&ÝŒL˜ÑÔ ¨)ñ
ô 
ˆð 	Œ×Ò˜F¥BÑ'Ô'Ð'Øˆr   c                 ó@   — | j                              | j        ¦  «        S r)   )r   Únumba_set_lengthr8   r+   s    r   r;   zSet.set_length`   s   € ØŒw×'Ò'¨¬	Ñ2Ô2Ð2r   c                 ó¢   — | j                              | j        |t          |¦  «        ¦  «        }| j                              |t
          ¦  «         d S r)   )r   Únumba_set_addr8   ÚhashrN   rO   )r%   r   rP   s      r   rF   zSet.set_addc   sA   € Ø”×&Ò& t¤y°#µt¸C±y´yÑAÔAˆØŒ×Ò˜F¥BÑ'Ô'Ð'Ð'Ð'r   c                 óf   — t          |¦  «        }| j                             | j        ||¦  «        }|S r)   )rU   r   Únumba_set_containsr8   ©r%   r   Úhash_keyÚixs       r   r>   zSet.set_containsg   s4   € Ý˜	‘?”?ˆØŒW×'Ò'ØŒI�y (ñ
ô 
ˆð ˆ	r   c                 óf   — t          |¦  «        }| j                             | j        ||¦  «        }|S r)   )rU   r   Únumba_set_discardr8   rX   s       r   rI   zSet.set_discardn   s4   € Ý˜	‘?”?ˆØŒW×&Ò&ØŒI�y (ñ
ô 
ˆð ˆ	r   c                 óF   — | j                              || j        ¦  «         d S r)   )r   Únumba_set_iterr8   )r%   Úitptrs     r   r$   zSet.set_iteru   s"   € ØŒ×Ò˜u d¤iÑ0Ô0Ð0Ð0Ð0r   c                 óx  — t          j        d¦  «        }| j                             |t          j        |¦  «        ¦  «        }|t
          k    rt          d¦  «        ‚|t          k    rt          ‚| j         	                    |d¦  «         t           j
        | j        z                       |j        ¦  «        }|j        S )Nr   zset mutated)r   r"   r   Únumba_set_iter_nextrM   ÚERR_SET_MUTATEDÚ
ValueErrorÚERR_ITER_EXHAUSTEDÚStopIterationÚassertGreaterEqualÚc_charr   Úfrom_addressÚvalue)r%   r_   ÚbirP   Úitems        r   r.   zSet.set_iter_nextx   s¢   € ÝŒ_˜QÑÔˆØ”×,Ò,Ø•6”< Ñ#Ô#ñ
ô 
ˆð •_Ò$Ð$Ý˜]Ñ+Ô+Ð+ØÕ)Ò)Ð)ÝÐàŒG×&Ò& v¨qÑ1Ô1Ð1Ý”M D¤MÑ1×?Ò?ÀÄÑIÔIˆDØ”:Ðr   N)r0   r1   r2   r3   r'   r<   r@   r,   rD   rG   rJ   r7   r;   rF   r>   rI   r$   r.   r*   r   r   r5   r5   -   sð   € € € € € ðð ð6ð 6ð 6ð !ð !ð !ð6ð 6ð 6ðð ð ð*ð *ð *ð ð  ð  ð$ð $ð $ðð ð ð3ð 3ð 3ð(ð (ð (ðð ð ðð ð ð1ð 1ð 1ðð ð ð ð r   r5   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestSetImplc                 ó>  — t           j        }t           j        }t           j        }dd„} |dt           j        t          j        |¦  «        t           j        t           j        g¦  «        | _         |dt           j        ¦  «        | _         |dt           j        |g¦  «        | _         |dt           j        |t           j        |g¦  «        | _	         |dt           j        |t           j        |g¦  «        | _
         |dt           j        |t           j        |g¦  «        | _         |d	t           j        ¦  «        | _         |d
d||g¦  «        | _         |dt           j        |t          j        t           j        ¦  «        g¦  «        | _         |dd|g¦  «        | _        dS )zEBind to the c_helper library and provide the ctypes wrapper.
        r*   c                 ó\   — t          j        |g|¢R Ž } |t          j        |          ¦  «        S r)   )r   Ú	CFUNCTYPEr   Ú	c_helpers)ÚnameÚrestypeÚargtypesÚprotos       r   ÚwrapzTestSetImpl.setUp.<locals>.wrap�   s2   € ÝÔ$ WÐ8¨xÐ8Ð8Ð8ˆEØ�5�Ô-¨dÔ3Ñ4Ô4Ð4r   r7   Útest_setr;   rF   r>   rI   Úset_iter_sizeofr$   Nr.   Úset_free)r*   )r   r"   Ú	c_ssize_tÚc_intÚPOINTERrL   Únumba_test_setrR   r   rT   rW   r\   Úc_size_tr   r^   ra   rC   )r%   Úset_tyÚhash_tyÚ
setiter_tyrv   s        r   ÚsetUpzTestSetImpl.setUpˆ   sÆ  € õ ”ˆÝÔ"ˆÝ”_ˆ
ð	5ð 	5ð 	5ð 	5ð
 "˜TØÝŒLÝŒ^˜FÑ#Ô#¥VÔ%5µvÔ7GÐHñ
ô 
ˆÔð #˜dØÝŒLñ
ô 
ˆÔð
 !% ØÝŒLØˆHñ!
ô !
ˆÔð "˜TØÝŒLØ•V”_ gÐ.ñ
ô 
ˆÔð #' $ØÝŒLØ•V”_ gÐ.ñ#
ô #
ˆÔð "& ØÝŒLØ•V”_ gÐ.ñ"
ô "
ˆÔð &* TØÝŒOñ&
ô &
ˆÔ"ð
 #˜dØØàØðñ
ô 
ˆÔð $( 4ØÝŒLàÝ”�vœÑ/Ô/ðñ$
ô $
ˆÔ ð #˜dØØØˆHñ
ô 
ˆÔÐÐr   c                 ód   — |                       ¦   «         }|                      |t          ¦  «         d S r)   )r}   rN   rO   )r%   Úrets     r   Útest_simple_c_testzTestSetImpl.test_simple_c_testÕ   s/   € à×!Ò!Ñ#Ô#ˆØ×Ò˜�bÑ!Ô!Ð!Ð!Ð!r   c                 ón   — t          | dd¦  «        }|                      t          |¦  «        d¦  «         d S )Né   r   )r5   rN   r   )r%   Úss     r   Útest_init_lenzTestSetImpl.test_init_lenÚ   s5   € å��a˜‰OŒOˆð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ð#Ð#r   c                 óø   — dD ]v}t          | dd¦  «        }|                     |¦  «         |                      t          |¦  «        d¦  «         |                     |¦  «        }|                      |d¦  «         Œwd S )N©é   ÚaÚabcr‡   r   T)r5   rG   rN   r   r@   ©r%   r   rˆ   Ú	has_entrys       r   Útest_add_checkzTestSetImpl.test_add_checká   s�   € ð #ð 	.ð 	.ˆCÝ�D˜!˜Q‘”ˆAà�EŠE�#‰JŒJˆJà×Ò�S ™VœV QÑ'Ô'Ð'àŸš sÑ+Ô+ˆIØ×Ò˜Y¨Ñ-Ô-Ð-Ð-ð	.ð 	.r   c                 ó2  — dD ]“}t          | dd¦  «        }|                     |¦  «         |                     |¦  «        }|                      |d¦  «         |                     |¦  «         |                     |¦  «        }|                      |d¦  «         Œ”d S )Nr‹   r‡   TF)r5   rG   r@   rN   rJ   r�   s       r   Útest_remove_checkzTestSetImpl.test_remove_checkî   s›   € ð #ð 	/ð 	/ˆCÝ�D˜!˜Q‘”ˆAà�EŠE�#‰JŒJˆJàŸš sÑ+Ô+ˆIØ×Ò˜Y¨Ñ-Ô-Ð-à�IŠI�c‰NŒNˆNàŸš sÑ+Ô+ˆIØ×Ò˜Y¨Ñ.Ô.Ð.Ð.ð	/ð 	/r   c                 ó†  — t          | dd¦  «        }d}t          d|¦  «        D ]}|                     |› ¦  «         Œg }|D ]}|                     |¦  «         Œ|                      t          |¦  «        t          |¦  «        ¦  «         t          d|¦  «        D ]'}|                      t          |› d¦  «        |¦  «         Œ(d S )NrŒ   r‡   iè  éd   )r5   ÚrangerG   ÚappendrN   r   ÚassertInr   )r%   rˆ   ÚnmaxÚiÚkeysr   s         r   Útest_set_iterzTestSetImpl.test_set_iterþ   s×   € å��a˜‰OŒOˆØˆõ �s˜DÑ!Ô!ð 	ð 	ˆAØ�EŠE�Q�&‰MŒMˆMˆMàˆàð 	ð 	ˆCØ�KŠK˜ÑÔÐÐð 	×Ò�˜Q™œ¥ T¡¤Ñ+Ô+Ð+Ý�s˜DÑ!Ô!ð 	5ð 	5ˆAØ�MŠM�( a 6¨1Ñ-Ô-¨tÑ4Ô4Ð4Ð4ð	5ð 	5r   N)	r0   r1   r2   r‚   r…   r‰   r‘   r“   rœ   r*   r   r   rm   rm   ‡   sr   € € € € € ðK
ð K
ð K
ðZ"ð "ð "ð
$ð $ð $ð.ð .ð .ð/ð /ð /ð 5ð 5ð 5ð 5ð 5r   rm   )r3   r   Únumba.tests.supportr   Únumbar   ÚENTRY_PRESENTrO   ÚERR_KEY_NOT_FOUNDrb   rd   ÚERR_SET_EMPTYÚERR_CMP_FAILEDr   Úobjectr   r5   rm   r*   r   r   ú<module>r¤      s  ððð ð €€€à (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð ð €Ø€ØÐ Ø€ØÐ Ø€Ø€ðð ð ð2ð 2ð 2ð 2ð 2ˆfñ 2ô 2ð 2ð"Wð Wð Wð Wð Wˆ&ñ Wô Wð WðtH5ð H5ð H5ð H5ð H5�(ñ H5ô H5ð H5ð H5ð H5r   