o
    /h&_                     @   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 )%TestProfiles	testvaluexz({num}{w}){1,2}z{ident}|{percentage}z{testvalue}c                 C   s   t | dkS )Nr   )int)v r   P/var/www/html/myenv/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M1
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   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_validate2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   r4   )r   z0.1%)r   r   )r   r3   )r   y)r   r3   )r   z-1)r   r   z+invalid literal for int() with base 10: 'x')matchr   r   )pytestraisesr   r   NoSuchProfileExceptionr   r-   propertiesByProfiler   r   r   r   sortlograiseExceptionsitemsr&   validateWithProfilereescape	Exception)r   propstestsr   r   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)marksr#   )r!   1pxNrP   )r!   	aliceblueN)opacityr3   NrR   r3   )rR   rP   N)-xr3   NrS   )	r   r   r   rJ   r.   r7   parammarkxfail)rJ   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&   r?   )r   rX   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.propertiesByProfilerR   N)r   r   r-   r:   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   CSS2r?   )r   namedcolorsr!   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%rP   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 leftrm   zcenter rightz0 centerzcenter 0z0 topz
10% bottomzleft 0z	right 10%z	1% centerz	center 1%T)rd   )z0 leftztop 0F)border-top-right-radius)rP   rg   z1% -1pxz1% 0)ro   )z1px 2px 2px/ 1pxblack)border-radius)	rP   rg   rf   rh   z1px/ 1pxz1px /1pxz1px  /  1px1px 1px 1px 1pxz!1px 1px 1px 1px / 1px 1px 1px 1px)rr   )z1px /rp   z1px / 1px / 1px1px 1px 1px 1px 1pxz1px / 1px 1px 1px 1px 1pxrq   )border)	rP   solidr"   z1px solid redz1px red solidzred 1px solidzred solid 1pxzsolid 1px redzsolid red 1px)ru   )rh   zred red 1px)
box-shadownonerh   z1px 1px 1pxrs   z1px 1px 1px 1px redzinset 1px 1pxzinset 1px 1px 1px 1px black)rw   rP   rt   z	x 1px 1pxinsetz	1px blackrq   )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!   )	re   rq   #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!   )currentcolorrQ   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)ry   normalz""z'x')cursor)zurl(1), autozurl(1) 2 3, helpwaitre   ry   )r   )zurl(1), auto, waitzurl(1) 2, helpr3   )font-family)zserif, x)r   )re   a, bza,b,cz	a, "b", cz"a", b, "c"z"a", "b", "c"z"x y"serifz"serif"za  bza, b   b, d)font-weight)r   boldbolderlighterre   100200300400500600700800900)font-stretch)r   widernarrowerzultra-condensedzextra-condensed	condensedzsemi-condensedzsemi-expandedexpandedzextra-expandedzultra-expandedre   )
font-style)r   italicobliquere   )zfont-variant)r   z
small-capsre   )	font-size)z-1em)r   )zxx-smallzx-smallsmallmediumlargezx-largezxx-largelargersmaller1emrg   re   )zfont-size-adjust)1.0ry   re   )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iconmenuzmessage-boxzsmall-captionz
status-barre   )	nav-index)r3   autore   )r   )r   z1 2rP   )rR   )
re   rf   z0.0z0.42342r3   r   z-0z-0.1z-102)rR   )r4   r}   z+1)outline)
zred dotted 1pxzdotted 1px redz1px red dottedr"   rP   dottedzred 1pxz
1px dottedz
red dottedre   )r   )zred #fffzsolid dottedzUrl(x)rh   )outline-color)r"   z#fffre   )r   )rf   r   ))outline-offsetrf   r   re   )r   )rg   r"   )outline-style)r   r   re   )r   )rf   r   r"   )outline-widthr   )r   )r   r"   r   )resize)ry   both
horizontalverticalre   )r   )r3   r   rP   2%)size)1cmz1mm 20cmr   zlandscape letterza4 portrait	landscape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-shadowrx   )r   rz   )zunicode-range)zu+1zU+111111-ffffffzu+123456  ,  U+1-fN)r`   C3BBCSS2_CM3CM3C3BUIFM3C3PMFM3FFC3Tr   r>   r   r-   r&   )r   rD   namevaluesvalid	_matching_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 )Nr   )r5   z"y"T)z"y", "a"r   za aFr   )r   r   r   re   r   )re   r   )r   r   re   )r   r`   r   r   r   r   r   rW     s*   	
rL   rM   c                 C   s0   |\}}}||t |f}tjj| |ksJ dS )zProfiles.validateWithProfile()N)r   r   r-   r?   )r   rX   r'   r   mr   expectedr   r   r   test_validateWithProfile_fonts  s   
z+TestProfiles.test_validateWithProfile_fontsN)__name__
__module____qualname__r   r   r   r   r0   r7   rU   usefixturesrF   rK   rW   parametrizerZ   r[   rc   r   rV   r   r   r   r   r   r      s4    		

'	b
   1 r   )__doc__r@   r7   r   r-   rJ   r`   CSS3_BASIC_USER_INTERFACEr   CSS3_BACKGROUNDS_AND_BORDERSr   r.   r   
CSS3_FONTSr   CSS3_PAGED_MEDIAr   	CSS3_TEXTr   CSS3_FONT_FACEr   r   CSS2_FM3r   r   r   r   r   <module>   s    







