
    i\$                         d dl Z d dlZdZdZd Z G d de j                        Z G d de j                        Z G d	 d
e j                        Z	e
dk(  r e j                          yy)    N)kUNKNOWN	BACKSPACETABCLEARRETURNPAUSEESCAPESPACECOMMAMINUSPERIODSLASH0123456789	SEMICOLONEQUALSLEFTBRACKET	BACKSLASHRIGHTBRACKETDELETEKP0KP1KP2KP3KP4KP5KP6KP7KP8KP9	KP_PERIOD	KP_DIVIDEKP_MULTIPLYKP_MINUSKP_PLUSKP_ENTER	KP_EQUALSUPDOWNRIGHTLEFTINSERTHOMEENDPAGEUPPAGEDOWNF1F2F3F4F5F6F7F8F9F10F11F12F13F14F15NUMLOCKCAPSLOCK	SCROLLOCKRSHIFTLSHIFTRCTRLLCTRLRALTLALTRMETALMETALSUPERRSUPERMODEHELPPRINTSYSREQBREAKMENUPOWEREUROKP_0KP_1KP_2KP_3KP_4KP_5KP_6KP_7KP_8KP_9NUMLOCKCLEAR
SCROLLLOCKRGUILGUIPRINTSCREENCURRENCYUNITCURRENCYSUBUNIT))r   r]   )r    r^   )r!   r_   )r"   r`   )r#   ra   )r$   rb   )r%   rc   )r&   rd   )r'   re   )r(   rf   )rH   rg   )rJ   rh   )rS   rR   rj   )rT   rQ   ri   )rW   rk   )rY   r   )r\   rl   c                 .   i }| D ]E  }t        t        j                  |      }|j                  |t	                     j                  |       G t	               }|j                         D ]+  }t        |      dkD  s|j                  t        |             - |S )zHelper function to find overlapping constant values/names.

    Returns a set of fronzensets:
        set(frozenset(names of overlapping constants), ...)
       )	getattrpygame	constants
setdefaultsetaddvalueslen	frozenset)constant_namesoverlap_dictnamevalueoverlapsoverlap_namess         e/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/constants_test.pycreate_overlap_setr      s     L 8(($/su-11$78
 uH%,,. 3}!LL=123 O    c                   J    e Zd ZdZdZ ed eez   D              Zd Zd Z	d Z
y)KConstantsTestszTest K_* (key) constants.)-abcdefghijklmnopqrstuvwxyzQUOTE	BACKQUOTEEXCLAIMQUOTEDBLHASHDOLLAR	AMPERSAND	LEFTPAREN
RIGHTPARENASTERISKPLUSCOLONLESSGREATERQUESTIONATCARET
UNDERSCOREPERCENTc              #   &   K   | ]	  }d |z     ywK_N .0r   s     r   	<genexpr>zKConstantsTests.<genexpr>   s     RD1HR   c                     | j                   D ]/  }| j                  t        t        j                  |      d|        1 y)zEnsures K constants exist.missing constant N)K_NAMES
assertTruehasattrrq   rr   selfr{   s     r   test_k__existencez!KConstantsTests.test_k__existence   s<    LL 	YDOOGF$4$4d;?PQUPV=WX	Yr   c                     | j                   D ];  }t        t        j                  |      }| j	                  t        |      t               = y)z)Ensures K constants are the correct type.N)r   rp   rq   rr   assertIstypeintr   r{   r|   s      r   test_k__typezKConstantsTests.test_k__type   s9    LL 	,DF,,d3EMM$u+s+	,r   c                     t         D ch c]  }t        d |D               }}t        | j                        }| j	                  ||       yc c}w )z0Ensures no unexpected K constant values overlap.c              3   &   K   | ]	  }d |z     ywr   r   r   s     r   r   z8KConstantsTests.test_k__value_overlap.<locals>.<genexpr>   s     -1dQh-r   N)K_AND_KSCAN_COMMON_OVERLAPSrx   r   r   assertSetEqualr   itemEXPECTED_OVERLAPSr}   s       r   test_k__value_overlapz%KConstantsTests.test_k__value_overlap   sQ     ;V
26I---
 
 &dll3H&78
   AN)__name__
__module____qualname____doc__K_SPECIFIC_NAMEStupleK_AND_KSCAN_COMMON_NAMESr   r   r   r   r   r   r   r   r      s7    #.b R&>AQ&QRRGY
,9r   r   c                   J    e Zd ZdZdZ ed eez   D              Zd Zd Z	d Z
y)KscanConstantsTestsz"Test KSCAN_* (scancode) constants.)0ABCDEFGHIJKLMNOPQRSTUVWXYZ
APOSTROPHEGRAVEINTERNATIONAL1INTERNATIONAL2INTERNATIONAL3INTERNATIONAL4INTERNATIONAL5INTERNATIONAL6INTERNATIONAL7INTERNATIONAL8INTERNATIONAL9LANG1LANG2LANG3LANG4LANG5LANG6LANG7LANG8LANG9NONUSBACKSLASH	NONUSHASHc              #   &   K   | ]	  }d |z     ywKSCAN_Nr   r   s     r   r   zKscanConstantsTests.<genexpr>'  s      1r   c                     | j                   D ]/  }| j                  t        t        j                  |      d|        1 y)zEnsures KSCAN constants exist.r   N)KSCAN_NAMESr   r   rq   rr   r   s     r   test_kscan__existencez)KscanConstantsTests.test_kscan__existence+  s>    $$ 	YDOOGF$4$4d;?PQUPV=WX	Yr   c                     | j                   D ];  }t        t        j                  |      }| j	                  t        |      t               = y)z-Ensures KSCAN constants are the correct type.N)r  rp   rq   rr   r   r   r   r   s      r   test_kscan__typez$KscanConstantsTests.test_kscan__type0  s;    $$ 	,DF,,d3EMM$u+s+	,r   c                     t         D ch c]  }t        d |D               }}t        | j                        }| j	                  ||       yc c}w )z4Ensures no unexpected KSCAN constant values overlap.c              3   &   K   | ]	  }d |z     ywr
  r   r   s     r   r   z@KscanConstantsTests.test_kscan__value_overlap.<locals>.<genexpr>:  s     1qhl1r   N)r   rx   r   r  r   r   s       r   test_kscan__value_overlapz-KscanConstantsTests.test_kscan__value_overlap7  sU     4
 1D11
 

 &d&6&67H&78
r   N)r   r   r   r   KSCAN_SPECIFIC_NAMESr   r   r  r  r  r  r   r   r   r   r      s=    ,1h  69MM KY
,	9r   r   c                   2    e Zd ZdZdZd Zd Zd Zd Zd Z	y)	KmodConstantsTestsz%Test KMOD_* (key modifier) constants.)	KMOD_NONEKMOD_LSHIFTKMOD_RSHIFT
KMOD_SHIFT
KMOD_LCTRL
KMOD_RCTRL	KMOD_CTRL	KMOD_LALT	KMOD_RALTKMOD_ALT
KMOD_LMETA
KMOD_RMETA	KMOD_METAKMOD_NUM	KMOD_CAPS	KMOD_MODE	KMOD_LGUI	KMOD_RGUIKMOD_GUIc                     | j                   D ]/  }| j                  t        t        j                  |      d|        1 y)zEnsures KMOD constants exist.r   N)KMOD_CONSTANTSr   r   rq   rr   r   s     r   test_kmod__existencez'KmodConstantsTests.test_kmod__existence]  s>    '' 	YDOOGF$4$4d;?PQUPV=WX	Yr   c                     | j                   D ];  }t        t        j                  |      }| j	                  t        |      t               = y)z,Ensures KMOD constants are the correct type.N)r+  rp   rq   rr   r   r   r   r   s      r   test_kmod__typez"KmodConstantsTests.test_kmod__typeb  s;    '' 	,DF,,d3EMM$u+s+	,r   c                     t        ddg      t        ddg      t        ddg      h}t        | j                        }| j                  ||       y)z3Ensures no unexpected KMOD constant values overlap.r'  r!  r(  r"  r)  r#  N)rx   r   r+  r   )r   r   r}   s      r   test_kmod__value_overlapz+KmodConstantsTests.test_kmod__value_overlapi  sV     {L12{L12z;/0
 &d&9&9:H&78r   c                     d}d}|D ]5  }t        t        j                  |      }| j                  ||z         ||z  }7 y)z8Ensures certain KMOD constants have no overlapping bits.)r  r  r  r  r  r  r  r!  r"  r$  r%  r&  r   N)rp   rq   rr   assertFalse)r   NO_BITWISE_OVERLAPkmodsr{   r|   s        r   test_kmod__no_bitwise_overlapz0KmodConstantsTests.test_kmod__no_bitwise_overlapv  sM    
 & 	DF,,d3EUU]+UNE	r   c                     dddddd}|j                         D ]W  \  }}d}|D ]  }|t        t        j                  |      z  }! t        t        j                  |      }| j	                  ||       Y y)	z5Ensures certain KMOD constants have overlapping bits.)r  r  )r  r  )r  r  )r!  r"  )r'  r(  )r  r  r   r#  r)  r   N)itemsrp   rq   rr   assertEqual)r   KMOD_COMPRISED_DICT	base_name	seq_namesexpected_valuer{   r|   s          r   test_kmod__bitwise_overlapz-KmodConstantsTests.test_kmod__bitwise_overlap  s     95252
 %8$=$=$? 	4 IyN! B'&*:*:D"AAB F,,i8EUN3	4r   N)
r   r   r   r   r+  r,  r.  r0  r5  r=  r   r   r   r  r  C  s&    /N,Y
,944r   r  __main__)unittestpygame.constantsrq   r   r   r   TestCaser   r   r  r   mainr   r   r   <module>rC     s{     l ^ *.K9h'' K9\Q9(++ Q9h`4** `4L zHMMO r   