o
    lqi&_                     @   s   d Z ddlZddlZddlZejjfZejjfZejj	fZ
ejjfZejjfZejjfZejjfZejjfZed ed fZed ed fZG dd dZdS )z:Testcases for cssutils.css.CSSValue and CSSPrimitiveValue.    Nc                   @   s   e Zd ZddiZddddd dZd	d
 Zdd Zdd Zej	
ddd Zdd Zdd Zej	de dd Zdd Zdd Zdd Zdd Zej	de ej	jd d!d"d# Zd$S )%TestProfilesZ	testvaluexz({num}{w}){1,2}z{ident}|{percentage}z{testvalue}c                 C   s   t | dkS )Nr   )int)v r   c/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/cssutils/tests/test_profiles.py<lambda>   s    zTestProfiles.<lambda>)-test-tokenmacro-test-macro-test-custommacro-test-funcvalc                 C   s^   t j }|jdd |d| j| j |jt| j	 ks J |jdd |jg ks-J dS )zProfiles.knownNamesTalltestN)
cssutilsprofilesProfilesremoveProfile
addProfileP1M1Z
knownNameslistkeysselfpr   r   r   test_knownNames   s   
zTestProfiles.test_knownNamesc                 C   sV   t j }|jdd |d| j| j |jdgksJ |jdd |jg ks)J dS )zProfiles.profilesTr   r   N)r   r   r   r   r   r   r   r   r   r   r   test_profiles(   s   
zTestProfiles.test_profilesc                    s   t j}t j   t _g d fdd}|ddd   j |ddd t jdi ddi |ddd  jdd	 |ddd |t _d
S )Profiles.validate()))colorred)r   rgba(0,0,0,0))r   XXXc                     s,   t D ]\}} j| | | ksJ qd S )N)	enumeratevalidate)resultsipvr   Zpvsr   r   check<   s   z*TestProfiles.test_validate2.<locals>.checkTFr   r   r"   r   N)r   profiler   r   r   
CSS3_COLORr   )r   savedr)   r   r(   r   test_validate21   s   

zTestProfiles.test_validate2Zsaved_profilesc                 C   s@  t tjj ttjd W d   n1 sw   Y  tjd| j	| j
 t| j	 }|  |ttjdks@J dtj_ddddddddddddd}t| D ]\}}|tjj| ksgJ ||dgftjj| ksuJ qYdtj_td}t jt|d tjd	d
 W d   dS 1 sw   Y  dS )z3Profiles.addProfile with custom validation functionNOTSETNr   FT))r	   1)r	   z1 -2)r	   z1 2 3)r	   a)r
   r0   )r
   z0.1%)r   r   )r   r/   )r   y)r   r/   )r   z-1)r   r   z+invalid literal for int() with base 10: 'x')matchr   r   )pytestZraisesr   r   ZNoSuchProfileExceptionr   r*   propertiesByProfiler   r   r   r   sortlograiseExceptionsitemsr$   validateWithProfilereescape	Exception)r   propstestsr   r   Zexpmsgr   r   r   test_addProfileP   s:   
"zTestProfiles.test_addProfilec                 C   s\   t j }dt|jksJ ||j dt|jksJ |jdd dt|jks,J dS )zProfiles.removeProfile()	      Tr   r   N)r   r   r   lenr   CSS_LEVEL_2r   r   r   r   test_removeProfilex   s   
zTestProfiles.test_removeProfilec                  c   s$   t jjj} t jjj}ddd| gffV  dd| fdd| gffV  dd|fdd| gffV  tjddd|gftjjddd	V  tjdd
| fdd|gftjjddd	V  tjdd
|fdd|gftjjddd	V  tjddd|| gftjjddd	V  tjdd| fdd|| gftjjddd	V  tjdd|fdd|| gftjjddd	V  ddd| gffV  ddd|gffV  dd| fdd|gffV  dd|fdd|gffV  ddd|gffV  dd| fdd|gffV  dd|fdd|gffV  dddg ffV  dd| fddg ffV  dd|fddg ffV  d S )N)r   r    NTr   r    F)r   r!   N#37reason)Zmarksr!   )r   1pxNrH   )r   	aliceblueN)opacityr/   NrJ   r/   )rJ   rH   N)-xr/   NrK   )	r   r   r   rC   r+   r3   parammarkxfail)rC   r+   r   r   r   _gen_validation_inputs   s   







		








z#TestProfiles._gen_validation_inputs)paramsr%   c                 C   s>   t j }|j|dd  |d ksJ |j| |ksJ dS )z3Profiles.validate(), Profiles.validateWithProfile()N   r   )r   r   r   r$   r9   )r   rP   r%   r   r   r   r   test_validateWithProfile   s   
z%TestProfiles.test_validateWithProfilec                 C   s"   dgt tjtjjksJ dS )zProfiles.propertiesByProfilerJ   N)r   r   r*   r4   r+   )r   r   r   r   test_propertiesByProfile   s   z%TestProfiles.test_propertiesByProfilec                 C   sx   d}| dD ]}| }tjd|sJ ddttftjd|ks&J qd}| dD ]}tjd|r9J q.dS )zCSS Color Module Level 3ztransparent, orange,
                         aqua, black, blue, fuchsia, gray, green, lime, maroon,
                         navy, olive, purple, red, silver, teal, white, yellow,r   Ta^  ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText|N)splitstripr   r*   r$   r   CSS2r9   )r   Znamedcolorsr   Zuicolorr   r   r   test_csscolorlevel3   s   z TestProfiles.test_csscolorlevel3c                 C   s`  i dddt fdddt fdddtfdddtfdddtfdddtfd	ddtfd
ddtfdddtfdddtfdddtfdddt fdddtfdddt fdddtfdddtfdddt fi dddt fdddt fdddtfdddt fdddt fdddt fdddt fdddtfdddt fdddtfdddtfdddtfd ddtfd!ddtfd"ddtfd#ddtfd$ddtfddtfddtfddtfddtfddtfddtfddtfddtfddtfddtfddtfddtfddtfddtfd%}t	|
 D ]\\}}\}}}|D ]}|tj||ks*J qqd&S )'r   )background-position)inherit01%rH   z0 0z1% 1%1px 1pxz1px 1%topbottomleftrightcenter centercenterztop leftz
top centerz	top rightzbottom leftzbottom centerzbottom rightzcenter leftrc   zcenter rightz0 centerzcenter 0z0 topz
10% bottomzleft 0z	right 10%z	1% centerz	center 1%T)rZ   )z0 leftztop 0F)border-top-right-radius)rH   r]   z1% -1pxz1% 0)re   )z1px 2px 2px/ 1pxblack)border-radius)	rH   r]   r\   r^   z1px/ 1pxz1px /1pxz1px  /  1px1px 1px 1px 1pxz!1px 1px 1px 1px / 1px 1px 1px 1px)rh   )z1px /rf   z1px / 1px / 1px1px 1px 1px 1px 1pxz1px / 1px 1px 1px 1px 1pxrg   )border)	rH   Zsolidr    z1px solid redz1px red solidzred 1px solidzred solid 1pxzsolid 1px redzsolid red 1px)rk   )r^   zred red 1px)
box-shadownoner^   z1px 1px 1pxri   z1px 1px 1px 1px redzinset 1px 1pxzinset 1px 1px 1px 1px black)rl   rH   rj   z	x 1px 1pxZinsetz	1px blackrg   )r   )r   #z#0z#00z#0000z#00000z#0000000z#00jz#j00000zrgb(0.0,1,1)zrgb(0)z	rgb(0, 1)zrgb(0, 1, 1, 1)zrgb(0, 1, 0%)zrgba(0)zrgba(0, 1, 1.0, 1)z
rgba(0, 1)zrgba(0, 1, 1, 1, 1)zrgba(100%, 0%, 0%, 1%)zrgba(100%, 0%, 0, 1)zhsl(1.5,1%,1%)zhsl(1,1,1%)zhsl(1,1%,1)zhsla(1.5,1%,1%, 1)zhsla(1,1,1%, 1)zhsla(1,1%,1, 1)zhsla(1,1%,1%, 1%))r   )	r[   rg   #000z#000000z
rgb(0,1,1)zrgb( 0 , 1 , 1 )zrgb(-10,555,1)zrgb(100%, 1.5%, 0%)zrgb(150%, -20%, 0%))r   )ZcurrentcolorrI   zrgba(1,1,1,1)zrgba( 1 , 1 , 1 , 1 )zrgba(100%, 0%, 0%, 1)zhsl(1,1%,1%)zhsl( 1 , 1% , 1% )zhsl(-1000,555.5%,-61.5%)zhsla(1,1%,1%,1)zhsla( 1, 1% , 1% , 1 )zhsla(-1000,555.5%,-61.5%, 0.5))content)rn   normalz""z'x')cursor)zurl(1), autozurl(1) 2 3, helpwaitr[   rn   )rt   )zurl(1), auto, waitzurl(1) 2, helpr/   )font-family)zserif, x)rv   )r[   a, bza,b,cz	a, "b", cz"a", b, "c"z"a", "b", "c"z"x y"Zserifz"serif"za  bza, b   b, d)font-weight)rs   boldbolderlighterr[   100Z200Z300Z400500Z600Z700Z800Z900)font-stretch)rs   widernarrowerzultra-condensedzextra-condensedZ	condensedzsemi-condensedzsemi-expandedexpandedzextra-expandedzultra-expandedr[   )
font-style)rs   italicZobliquer[   )zfont-variant)rs   z
small-capsr[   )	font-size)z-1em)r   )zxx-smallzx-smallZsmallZmediumZlargezx-largezxx-largeZlargerZsmaller1emr]   r[   )zfont-size-adjust)1.0rn   r[   )Zfont)z*italic small-caps bold 1px/3 a, "b", serifz12pt/14pt sans-serifz80% sans-serifz,x-large/110% "new century schoolbook", serifz!bold italic large Palatino, serifz#normal small-caps 120%/120% fantasyz#oblique 12pt "Helvetica Nue", serifcaptioniconZmenuzmessage-boxzsmall-captionz
status-barr[   )	nav-index)r/   autor[   )r   )r   z1 2rH   )rJ   )
r[   r\   z0.0z0.42342r/   r   z-0z-0.1z-102)rJ   )r0   rq   z+1)outline)
zred dotted 1pxzdotted 1px redz1px red dottedr    rH   dottedzred 1pxz
1px dottedz
red dottedr[   )r   )zred #fffzsolid dottedzUrl(x)r^   )outline-color)r    z#fffr[   )r   )r\   r   ))outline-offsetr\   r   r[   )r   )r]   r    )outline-style)r   r   r[   )r   )r\   r   r    )outline-widthr   )r   )r   r    r   )resize)rn   Zboth
horizontalverticalr[   )r   )r/   r   rH   2%)size)Z1cmz1mm 20cmr   zlandscape letterza4 portraitZ	landscapeZa5)r   )zportrait landscapez	a5 letterr   )src)z
url(  a  )zlocal(  x  )z
local("x")zlocal(  "x"  )z9url(../fonts/LateefRegAAT.ttf) format(  "truetype-aat"  )z!url(a) format(  "123x"  , "a"   )zBurl(a) format( "123x"  , "a"   ), url(a) format( "123x"  , "a"   )z7local(HiraKakuPro-W3), local(Meiryo), local(IPAPGothic)z'local(Gentium), url(/fonts/Gentium.ttf)z+local("Gentium"), url("/fonts/Gentium.ttf")zDlocal(Futura-Medium), url(fonts.svg#MyGeometricModern) format("svg"))text-shadowrm   )r   ro   )zunicode-range)zu+1zU+111111-ffffffzu+123456  ,  U+1-fN)rX   C3BBCSS2_CM3CM3C3BUIFM3C3PMFM3FFC3Tr   r8   r   r*   r$   )r   r>   namevaluesZvalidZ	_matchingZ_profilevaluer   r   r   test_validate  s  #
'(16D
O]dp
|    +  ;  D  H  
N  O  `  s        

    
        
        
1    
2    3    
C    D    S    
X    
Y    Z      %zTestProfiles.test_validatec                   c   st    t ddfddt ffV  t ddfddtffV  t ddfddtffV  t dd	fddtffV  t d
dfddtffV  d S )Nrv   )r1   z"y"T)z"y", "a"rw   za aFr~   )rs   r   r   r[   r   )r[   rx   )rz   r{   r[   )r   rX   r   r   r   r   r   rO     s*   	
rE   rF   c                 C   s0   |\}}}||t |f}tjj| |ksJ dS )zProfiles.validateWithProfile()N)r   r   r*   r9   )r   rP   r%   r   mr   expectedr   r   r   test_validateWithProfile_fonts  s   
z+TestProfiles.test_validateWithProfile_fontsN)__name__
__module____qualname__r   r   r   r   r-   r3   rM   Zusefixturesr?   rD   rO   ZparametrizerR   rS   rY   r   rN   r   r   r   r   r   r      s4    		

'	b
   1 r   )__doc__r:   r3   r   r*   rC   rX   ZCSS3_BASIC_USER_INTERFACEr   ZCSS3_BACKGROUNDS_AND_BORDERSr   r+   r   Z
CSS3_FONTSr   ZCSS3_PAGED_MEDIAr   Z	CSS3_TEXTr   ZCSS3_FONT_FACEr   r   ZCSS2_FM3r   r   r   r   r   <module>   s    







