
    GJjW                     X    d Z ddlmZ ddlmZ ddlmZmZ ddlmZm	Z	  G d de	e      Z
y)	z
Testing numba implementation of the numba set.

The tests here only check that the numba typing and codegen are working
correctly.  Detailed testing of the underlying set operations is done
in test_setimpl.py.
    )njit)int32)Set	setobject)TestCaseMemoryLeakMixinc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestSetObjectc                    t         d        }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       t         d        }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       y)	z6
        Test set creation, insertion and len
        c                     t        j                  t              }t        |       D ]  }|j	                  |dz           t        |      S N   )r   new_setr   rangeaddlennsis      d/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/numba/tests/test_setobject.pyfooz*TestSetObject.test_set_create.<locals>.foo   s8    !!%(A1Xa!e q6M    r   )r   r      d   c                     t        j                  t              }t        |       D ]  }|j	                  |dz           t        |      S r   )r   emptyr   r   r   r   r   s      r   r   z*TestSetObject.test_set_create.<locals>.foo$   s6    		% A1Xa!e q6Mr   N)r   assertEqual)selfr   s     r   test_set_createzTestSetObject.test_set_create   s     
	 
	 	q1%q1%q1%sS)		 
	 	q1%q1%q1%sS)r   c                     t        j                  t              }| j                  t	        |      d       t
        d        } ||      }| j                  t	        |      d       y)z.
        Test set boxing and unboxing
        r   c                     | S N r   s    r   r   z)TestSetObject.test_box_unbox.<locals>.foo<   s    Hr   N)r   r   r   r   r   r   )r   r   r   s      r   test_box_unboxzTestSetObject.test_box_unbox4   sW     IIeQ#		 
	 FQ#r   c                    t        j                  t              }t        d      D ]  }|j	                  |dz           | j                  t        |      d       t        d        } ||      }| j                  t        |      d       y)%
        Test set add method
           r   c                 J    t        d      D ]  }| j                  |         | S )Nr)   r   r   r   r   s     r   r   z'TestSetObject.test_set_add.<locals>.fooO   s$     1Xqb	 Hr      Nr   r   r   r   r   r   r   r   r   r   r   r   s       r   test_set_addzTestSetObject.test_set_addC   sv     IIeqAEE!a%L  	Q#		 
	 FQ#r   c                    t        j                  t              }t        d      D ]  }|j	                  |dz           | j                  t        |      d       t        d        } ||      }| j                  t        |      d       y)r(   r)   r   c                 N    t        d      D ]  }| j                  |dz           | S )Nr-   r   r+   r,   s     r   r   z2TestSetObject.test_set_add_duplicates.<locals>.foof   s&     1Xa!e Hr   r-   Nr.   r/   s       r   test_set_add_duplicatesz%TestSetObject.test_set_add_duplicatesZ   sx     IIeqAEE!a%L  	Q#		 
	 F 	Q#r   c                 V   t        j                  t              }d}t        |      D ]  }|j	                  |        | j                  t        |      |       t        d        }t        |      D ]8  }| j                  t        ||v       d       | j                   |||      d       : y)z*
        Test set contains method
        
   c                     t        || v       S r#   )bool)setkeys     r   r   z(TestSetObject.test_contains.<locals>.foo~   s    s
##r   TN)	r   r   r   r   r   r   r   r   r7   )r   r   num_keysr9   r   s        r   test_containszTestSetObject.test_containsr   s     IIe?CEE#J # 	Q*		$ 
	$ ?CT#(^T2SC[$/ #r   c                     t        j                  t              }t        d      D ]  }|j	                  |dz           | j                  t        |      d       |j                  d       |j                  d       | j                  t        |      d       t        d        } ||      }| j                  t        |      d       | j                  t        d|v       d       | j                  t        d|v       d       y)	z)
        Test set discard method
        r)   r         c                 J    | j                  d       | j                  d       | S )Nr   r   )discardr%   s    r   r   z'TestSetObject.test_discard.<locals>.foo   s     IIaLIIaLHr   r   FN)
r   r   r   r   r   r   r   r@   r   r7   r/   s       r   test_discardzTestSetObject.test_discard   s     IIeqAEE!a%L Q# 	
		!			!Q#		 
	 FQ#a1fu-a1fu-r   c                    t        j                  t              }d}t        |      D ]  }|j	                  |        t
        d        }|j                  |      }| j                  t        |      t        |             t        |      D ]  }| j                  ||         ||      }| j                  t        |      t        |             t        |      D ]  }| j                  ||        y )Ni  c                 :    g }| D ]  }|j                  |        |S r#   )append)r8   keysr9   s      r   r   z$TestSetObject.test_iter.<locals>.foo   s"    DC  Kr   )
r   r   r   r   r   r   py_funcr   r   assertIn)r   r   nmaxr   r   rE   s         r   	test_iterzTestSetObject.test_iter   s    IIe tAEE!H  
	 
	 {{1~QT+tAMM!T"  1vQT+tAMM!T" r   c                 :   t        j                  t              }t        j                  t              }t        d      D ]$  }|j	                  |       |j	                  |       & | j                  ||       t        d        }| j                   |||      d       y )Nr5   c                     | |k(  S r#   r$   )s1s2s     r   r   z(TestSetObject.test_equality.<locals>.foo   s    8Or   T)r   r   r   r   r   r   r   )r   rL   rM   r   r   s        r   test_equalityzTestSetObject.test_equality   s~    YYuYYurAFF1IFF1I  	R 		 
	 	Rd+r   N)__name__
__module____qualname__r    r&   r0   r3   r;   rA   rI   rN   r$   r   r   r
   r
      s+    "*H$$.$00(.<#:,r   r
   N)__doc__numbar   r   numba.typedr   r   numba.tests.supportr   r   r
   r$   r   r   <module>rV      s(      & 9@,OX @,r   