
     h&_                        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      Zy)z:Testcases for cssutils.css.CSSValue and CSSPrimitiveValue.    Nc                   v   e Zd ZddiZdddd dZd Zd	 Zd
 Zej                  j                  d      d        Zd Zd Zej                  j                  d e             d        Zd Zd Zd Zd Zej                  j                  d e             ej                  j'                  d      d               Zy)TestProfiles	testvaluexz({num}{w}){1,2}z{ident}|{percentage}z{testvalue}c                     t        |       dkD  S )Nr   )int)vs    \/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/tests/test_profiles.py<lambda>zTestProfiles.<lambda>   s    3q6A:    )-test-tokenmacro-test-macro-test-custommacro-test-funcvalc                 \   t         j                  j                         }|j                  d       |j	                  d| j
                  | j                         |j                  t        | j
                  j                               k(  sJ |j                  d       |j                  g k(  sJ y)zProfiles.knownNamesTalltestN)
cssutilsprofilesProfilesremoveProfile
addProfileP1M1
knownNameslistkeysselfps     r
   test_knownNameszTestProfiles.test_knownNames   s}    &&(	D!	VTWWdgg.||tDGGLLN3333	D!||r!!!r   c                    t         j                  j                         }|j                  d       |j	                  d| j
                  | j                         |j                  dgk(  sJ |j                  d       |j                  g k(  sJ y)zProfiles.profilesTr   r   N)r   r   r   r   r   r   r   r   s     r
   test_profileszTestProfiles.test_profiles(   sp    &&(	D!	VTWWdgg.zzfX%%%	D!zzRr   c                    t         j                  }t         j                  j                         t         _        g dfd} |ddd       j	                  j
                          |ddd       t         j                  j                  di ddi        |ddd       j	                  d        |ddd       |t         _        y	)
Profiles.validate()))colorred)r'   rgba(0,0,0,0))r'   XXXc                  Z    t              D ]  \  }} j                  | | |   k(  rJ  y )N)	enumeratevalidate)resultsipvr!   pvss      r
   checkz*TestProfiles.test_validate2.<locals>.check<   s1    "32!qzz2'!*444 (r   TFr   r'   r*   r   N)r   profiler   r   r   
CSS3_COLORr   )r    savedr2   r!   r1   s      @@r
   test_validate2zTestProfiles.test_validate21   s        &&(N	5 	dD% 	%dE5!##FB%0@AeUD!	D!eUE"
 !r   saved_profilesc                    t        j                  t        j                  j                        5  t        t        j                  j                  d             ddd       t        j                  j                  d| j                  | j                         t        | j                  j                               }|j                          |t        t        j                  j                  d            k(  sJ dt        j                  _        ddddddddddddd}t        |j                               D ]K  \  }}|t        j                  j                   | k(  sJ ||dgft        j                  j"                  | k(  rKJ  dt        j                  _        t%        j&                  d      }t        j                  t(        |      5  t        j                  j!                  d	d
       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)z3Profiles.addProfile with custom validation functionNOTSETNr   FT))r   1)r   z1 -2)r   z1 2 3)r   a)r   r;   )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   )pytestraisesr   r   NoSuchProfileExceptionr   r3   propertiesByProfiler   r   r   r   sortlograiseExceptionsitemsr-   validateWithProfilereescape	Exception)r    propstestsr   r	   expmsgs         r
   test_addProfilezTestProfiles.test_addProfileP   s    ]]8,,CCD!!55h?@ E 	##FDGGTWW=TWW\\^$

X--AA&IJJJJ',$'+*.+0',"&%)(,(-(-$(%*$)
 EKKM*GD!((1148888q6(#x'7'7'K'KT'RRRR +
 (,$HI]]9F3%%os; 43C EDB 43s   )G.!G;.G8;Hc                 6   t         j                  j                         }dt        |j                        k(  sJ |j	                  |j
                         dt        |j                        k(  sJ |j	                  d       dt        |j                        k(  sJ y)zProfiles.removeProfile()	      Tr   r   N)r   r   r   lenr   CSS_LEVEL_2r   s     r
   test_removeProfilezTestProfiles.test_removeProfilex   sv    &&(C

O###	&C

O###	D!C

O###r   c               #     K   t         j                  j                  j                  } t         j                  j                  j                  }ddd| gff dd| fdd| gff dd|fdd| gff t        j                  ddd|gft
        j                  j                  d      	       t        j                  dd
| fdd|gft
        j                  j                  d      	       t        j                  dd
|fdd|gft
        j                  j                  d      	       t        j                  ddd|| gft
        j                  j                  d      	       t        j                  dd| fdd|| gft
        j                  j                  d      	       t        j                  dd|fdd|| gft
        j                  j                  d      	       ddd| gff ddd|gff dd| fdd|gff dd|fdd|gff ddd|gff dd| fdd|gff dd|fdd|gff dddg ff dd| fddg ff dd|fddg ff y w)N)r'   r(   NTr'   r(   F)r'   r)   N#37reason)marksr)   )r'   1pxNrY   )r'   	aliceblueN)opacityr:   Nr[   r:   )r[   rY   N)-xr:   Nr\   )	r   r   r   rR   r4   r>   parammarkxfail)rR   r4   s     r
   _gen_validation_inputsz#TestProfiles._gen_validation_inputs   sD    ''00<<&&//::
"4+'
 	

 e[)4+'
 	

 eZ(5;-(
 	
 ll,4*&++##5#1
 	

 llo{35:,'++##5#1
 	

 lloz24*&++##5#1
 	

 ll"[)
 ++##5#1
 	
 lle[)[)
 ++##5#1
 	
 lleZ([)
 ++##5#1
 	
 )4+'
 	

 #4*&
 	

 [)5:,'
 	

 Z(4*&
 	

 %EJ<(
 	

 {+EJ<(
 	

 z*EJ<(
 	

 E2
 	

 3$E2
 	

 3
#E2
 	
s   II)paramsr.   c                     t         j                  j                         } |j                  |dd  |d   k(  sJ  |j                  | |k(  sJ y)z3Profiles.validate(), Profiles.validateWithProfile()N   r   )r   r   r   r-   rF   )r    ra   r.   r!   s       r
   test_validateWithProfilez%TestProfiles.test_validateWithProfile   sV     &&(qzz6"1:&'!*444$q$$f-888r   c                     dgt        t        j                  j                  t        j                  j                              k(  sJ y)zProfiles.propertiesByProfiler[   N)r   r   r3   rA   r4   )r    s    r
   test_propertiesByProfilez%TestProfiles.test_propertiesByProfile   s=    {d001A1A1L1LM
 
 	
 
r   c                 v   d}|j                  d      D ]i  }|j                         }t        j                  j	                  d|      sJ ddt        t              ft        j                  j                  d|      k(  riJ  d}|j                  d      D ]$  }t        j                  j	                  d|      s$J  y)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   r3   r-   r   CSS2rF   )r    namedcolorsr'   uicolors       r
   test_csscolorlevel3z TestProfiles.test_csscolorlevel3   s    R !&&s+EKKME##,,We<<<$T
+x/?/?/S/S0   	 ,% 	 ]]3'E''00%@@@ (r   c                 B   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        |j                               D ]8  \  \  }}\  }}}|D ]'  }|t        j                  j                  ||      k(  r'J  : y&)'r&   )background-position)inherit01%rY   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 leftrz   zcenter rightz0 centerzcenter 0z0 topz
10% bottomzleft 0z	right 10%z	1% centerz	center 1%T)rq   )z0 leftztop 0F)border-top-right-radius)rY   rt   z1% -1pxz1% 0)r|   )z1px 2px 2px/ 1pxblack)border-radius)	rY   rt   rs   ru   z1px/ 1pxz1px /1pxz1px  /  1px1px 1px 1px 1pxz!1px 1px 1px 1px / 1px 1px 1px 1px)r   )z1px /r}   z1px / 1px / 1px1px 1px 1px 1px 1pxz1px / 1px 1px 1px 1px 1pxr~   )border)	rY   solidr(   z1px solid redz1px red solidzred 1px solidzred solid 1pxzsolid 1px redzsolid red 1px)r   )ru   zred red 1px)
box-shadownoneru   z1px 1px 1pxr   z1px 1px 1px 1px redzinset 1px 1pxzinset 1px 1px 1px 1px black)r   rY   r   z	x 1px 1pxinsetz	1px blackr~   )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'   )	rr   r~   #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'   )currentcolorrZ   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)r   normalz""z'x')cursor)zurl(1), autozurl(1) 2 3, helpwaitrr   r   )r   )zurl(1), auto, waitzurl(1) 2, helpr:   )font-family)zserif, x)r   )rr   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lighterrr   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-expandedrr   )
font-style)r   italicobliquerr   )zfont-variant)r   z
small-capsrr   )	font-size)z-1em)r   )zxx-smallzx-smallsmallmediumlargezx-largezxx-largelargersmaller1emrt   rr   )zfont-size-adjust)1.0r   rr   )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-barrr   )	nav-index)r:   autorr   )r   )r   z1 2rY   )r[   )
rr   rs   z0.0z0.42342r:   r   z-0z-0.1z-102)r[   )r;   r   z+1)outline)
zred dotted 1pxzdotted 1px redz1px red dottedr(   rY   dottedzred 1pxz
1px dottedz
red dottedrr   )r   )zred #fffzsolid dottedzUrl(x)ru   )outline-color)r(   z#fffrr   )r   )rs   r   ))outline-offsetrs   r   rr   )r   )rt   r(   )outline-style)r   r   rr   )r   )rs   r   r(   )outline-widthr   )r   )r   r(   r   )resize)r   both
horizontalverticalrr   )r   )r:   r   rY   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-shadowr   )r   r   )zunicode-range)zu+1zU+111111-ffffffzu+123456  ,  U+1-fN)rl   C3BBCSS2_CM3CM3C3BUIFM3C3PMFM3FFC3Tr   rE   r   r3   r-   )r    rK   namevaluesvalid	_matching_profilevalues           r
   test_validatezTestProfiles.test_validate  sP   `
#F dD!M`
N 95%:NO`
P dD!a`
b KMc`
l dD!G`
H
 ud#]`
^ dD!y`
z ud#G`
H dD!_`
`
 ud#u`
x> uh'w`
x dD!S`
T dC s`
t dD!E`
F dE"M`
N FHO`
Z +T4,>[`
\  dD!}`
~$ dD!c`
d  dC E`
F GIG`
P BD$PTCUQ`
R %ueT&:S`
T  dD!u`
v =tT3>Ow`
x$ dD!]	`
^	 4dD%5H_	`
`	 /u0Ea	`
b	 dC A
`
B
 -ueS.AC
`
D
 dE"a
`
b
 KMc
`
l
 :D$;Nm
`
n
 ,eUE-Bo
`
p
 ;?e9L05ue/D?CT5>Q5:E54I9=tU8K;@%:OP
 6;E54I dD!BGPTAU$ dE" dC  uc"Rw`
D =A<O8NT68UIx 0 0 9 9$ FFFF   =Pr   c               #      K   t         ddfddt         ff t         ddfddt        ff t         ddfddt        ff t         dd	fddt        ff t         d
dfddt        ff y w)Nr   )r<   z"y"T)z"y", "a"r   za aFr   )r   r   r   rr   r   )rr   r   )r   r   rr   )r   rl   r    r   r
   r`   z#TestProfiles._gen_validation_inputs  s     M<0
 	
 }&ABT5RVDWXXN$NO
 	
 |\2T5$4GHH  5$
 	
s   A&A(rU   rV   c                 n    |\  }}}||t        |      f}t        j                  j                  | |k(  sJ y)zProfiles.validateWithProfile()N)r   r   r3   rF   )r    ra   r.   r	   mr!   expecteds          r
   test_validateWithProfile_fontsz+TestProfiles.test_validateWithProfile_fonts  s=    
 1aaa=33V<HHHr   N)__name__
__module____qualname__r   r   r"   r$   r6   r>   r^   usefixturesrM   rS   r`   parametrizerd   rf   ro   r   r_   r   r   r   r
   r   r      s    
s	B--*-
B" !> [[-.%< /%<N$`
D [[24J4LM9 N9
A>fG\
@ [[24J4LM[[e$I % NIr   r   )__doc__rG   r>   r   r3   rR   rl   CSS3_BASIC_USER_INTERFACEr   CSS3_BACKGROUNDS_AND_BORDERSr   r4   r   
CSS3_FONTSr   CSS3_PAGED_MEDIAr   	CSS3_TEXTr   CSS3_FONT_FACEr   r   CSS2_FM3r   r   r   r
   <module>r      s    @ 	  $$&				3	35557""$""$))+!!#				(	(*FDGFDGOI OIr   