
    =hh,>                     b    d Z ddlZddlZddlmZ ddlZddlmZ  G d dej                        Z
y)zTestcases for cssutils.css.selector.Selector.

what should happen here?
    - star 7 hack::
        x*
        does not validate but works in IE>5 and FF, does it???

    N)property_error   )basetestc                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestSelectorc                 L    t         j                  j                  d      | _        y N*)cssutilscssSelectorr)selfs    \/var/www/api/v1/venv_fitandmore/lib/python3.12/site-packages/cssutils/tests/test_selector.pysetup_methodzTestSelector.setup_method   s    &&s+    c                    t         j                  j                  d      }d|j                  k(  sJ i |j                  j
                  k(  sJ |j                  J d|j                  k(  sJ d|j                  k(  sJ |j                  sJ t         j                  j                  dddif      }d|j                  k(  sJ ddi|j                  j
                  k(  sJ |j                  J d|j                  k(  sJ d	|j                  k(  sJ |j                  sJ t        j                  t        j                  j                        5  t         j                  j                  d       ddd       y# 1 sw Y   yxY w)
zSelector.__init__()r
   r	   Nr   r   r   r   zp|bpURI)r   br   r   r   r   )r   r   r   element_namespaces
namespacesparentselectorTextspecificity
wellformedpytestraisesxmldomNamespaceErr)r   ss     r   	test_initzTestSelector.test_init   s?   LL!!#&aii'''Q]]-----xxann$$$q}},,,|||LL!!53,"78qyy(((U|q}}77777xx&&&q}},,,|||]]377//0LL!!%( 100s    E//E8c                 F   i ddddddddd	t         j                  dfd
dddddddddddddddddddddddddddd}t        |j                               D ]9  \  }}t         j                  j                  |ddif      }||j                  k(  r9J  y)z Selector.element (TODO: RESOLVE)r
   r	   x)Nr(   \x)Nr)   |x) r(   *|xzex|x)exampler(   za xza+xza>xza~xza+b~c xzx[href]zx[href="123"]zx:hoverzx:first-letterzx::first-linezx:not(href)N)z#idz.czx#idzx.cexr-   )r   _ANYNSlistitemsr   r   r   )r   teststesteler%   s        r   test_elementzTestSelector.test_element-   s9   


 =
 )	

 HOOS)
 $
 ;
 ;
 ;
 ;
 {
 {
 [
 {
 k
  [!
" ;#
$ +
. ekkm,ID#%%tdI->&?@A!))### -r   c           
         ddiddddddg}ddddd	d
dddd	}t        |j                               D ]M  \  }}t        |      D ]:  \  }}t        j                  j                  |||   f      }||j                  k(  r:J  O t        j                  j                         }d|_        |j                  d   }	|	j                  dk(  sJ d|j                  d<   |	j                  dk(  sJ |j                  d= |	j                  dk(  sJ y)zSelector.namespacesr   otherdefault)r+   r   )r
   r
   r
   )r(   r(   r(   )|*r9   r9   )r*   r*   r*   )*|*r:   r:   )r,   r,   r,   )p|*r;   r
   )p|xr<   r(   )x[a][a][*|a][p|a]r=   zx[a][a][*|a][a])	r
   r(   r9   r*   r:   r,   r;   r<   zx[a][|a][*|a][p|a]z$@namespace p "u"; a { color: green }r   ar+   z|aN)r0   r1   	enumerater   r   r   r   CSSStyleSheetcssTextcssRulesr   )
r   r   r2   selexpiresultr%   sheetr   s
             r   test_namespaceszTestSelector.test_namespacesJ   s#    'N)+

 ! $$((&&#
  U[[]+HC&s^	6LL))3
1*>?/// , , **,>NN1~~$$$  #~~%%%R ~~$$$r   c                     d}t         j                  j                         }||_        |j                  dk(  sJ d|j                  d<   |j                  dk(  sJ y)zSelector.namespaces defaultzF@namespace "default";
                a[att] { color:green; }
        s5   @namespace "default";
a[att] {
    color: green
    }r8   r   s9   @namespace p "default";
p|a[att] {
    color: green
    }N)r   r   r@   rA   r   )r   r   rG   s      r   test_default_namespacez#TestSelector.test_default_namespacez   sf     **,MMXX	
X !*MMNO	
Or   c                 v   t         j                  j                  d      }|D ]  }||j                  k(  rJ  t         j                  j	                  d      }|j                  |       ||j                  k(  sJ t         j                  j	                  d      }|j                  |       ||j                  k(  sJ y)zSelector.parentza, br(   yN)r   r   SelectorListr   r   appendappendSelector)r   slrC   newsels       r   test_parentzTestSelector.test_parent   s    \\&&v.C###  &&s+
		&V]]"""&&s+
&!V]]"""r   c                 R   i dddddddddddd	d
ddd
dd
dd
ddddddddddddddi dddddddd	dd	d	d	ddddddddd dd!dd"dd#d$d%dd&dd'di d(dd)dd*dd+dd,dd-dd.dd/dd0dd1dd2dd3dd4dd5dd6dd7dd8di ddd9dd:dd;dd<dd=d=d>dd?dd@ddAddBddCddDdCdEdCdFdFdGddHdi dIdHdJdHdKdHdLdHdMdHdNdHdOdPdQddRdQdSdQdTdQdUdQdVdQdWdQdXdYdZd[d\di d]d\d^d\d_d\d`d\dad\dbdcddddeddfddgddhddiddjddkddlddmddndi doddpdqdrdqdsdtdudtdvddwddxddyddzdzd{dyd|d|d}d~ddddddddi dddddddddddddddddddddddddddddddddddddddddddddddd}| j                  |d       i dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  i dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  dt        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j
                  t        j                  j
                  t        j                  j
                  t        j                  j                  d}| j                  |d¬       y)zSelector.selectorTextz	a+b>c~e fza + b > c ~ e fza  +  b  >  c  ~  e   fa+ba + bza  +  bz	a
  +	  bza~bza ~ ba bNza   bza
bza	bza   #bza #bza   .bza .ba * ba>bza > bza> bza >bza+ bza +bza~ bza ~br>   z
h1-a_x__--za-aa_az-a_z-_z-\72z-rz.a aa1za1-1z.a1-1r
   z*/*x*/z* /*x*/z*:hoverz* :hoverz
*:lang(fr)z* :lang(fr)z*::first-linez* ::first-linez
*[lang=fr]z	[lang=fr]#az#a1z#1az#1za#bza#b.cza.c#bza #b.cza .c#babza.bza.b.cz.a1._1z[x]*[x]za[x]za[ x]za[x ]za [x]z* [x]za[x="1"]z	a[x ="1"]z	a[x= "1"]z
a[x = "1"]za[ x = "1"]za[x = "1" ]za[ x = "1" ]za [ x = "1" ]z	a [x="1"]za[x~=a1]z	a[x ~=a1]z	a[x~= a1]z
a[x ~= a1]za[ x ~= a1]za[x ~= a1 ]za[ x ~= a1 ]za [ x ~= a1 ]z	a [x~=a1]za *[ x ~= a1 ]z
a *[x~=a1]za[x|=en]z	a[x|= en]z	a[x |=en]z
a[x |= en]za[ x |= en]za[x |= en ]za [ x |= en]z	a [x|=en]za[x^=en]za[x$=en]za[x*=en]za[/*1*/x/*2*/]za[/*1*/x/*2*/=/*3*/a/*4*/]za[/*1*/x/*2*/~=/*3*/a/*4*/]za[/*1*/x/*2*/|=/*3*/a/*4*/]za x:first-lineza x:first-letterz
a x:beforez	a x:afterza x::selectionz'a:hover+b:hover>c:hover~e:hover f:hoverz-a:hover + b:hover > c:hover ~ e:hover f:hoverz5a:hover  +  b:hover  >  c:hover  ~  e:hover   f:hoverz@a::selection+b::selection>c::selection~e::selection f::selectionzFa::selection + b::selection > c::selection ~ e::selection f::selectionzNa::selection  +  b::selection  >  c::selection  ~  e::selection   f::selectionzx:lang(de) yzx:nth-child(odd) yzx:func(a + b-2px22.3"s"i)zx:func(1 + 1)zx:func(1+1)zx:func(1   +   1)zx:func(1-1)zx:func(1  -  1)zx:func(1 -1)zx:func(a-1)zx:func(a -1px)zx:func(1px)zx:func(23.4)zx:func("s")z	x:func(i)z:not(y)z:not(   y  	
)z*:not(y)zx:not(y)z	.x:not(y)z:not(*)z:not(#a)z:not(.a)z	:not([a])z:not(:first-letter)z:not(::first-letter)z	\74\72 tdtrtdz
\74\72  tdztr tdz\74\000072 tdz\74\000072  tda /**/ br;   p|e-a_x12|e*|b[p|a]z0elemenT.clasS#iD[atT="valuE"]:not(x)::first-line)za/**/ bza /**/br`   z	a  /**/ bz	a /**/  bz|ez*|er:   )r;   )r   uri)ra   rd   )rb   ))z-a_x12re   )rc   rd   z0elemenT.clasS#iD[atT="valuE"]:noT(x)::firsT-linEr   )attzx|a)r;   ))r(   re   r+   1z-1za*bza *bza* bza/**/b#|:z::z: az:: az:a()z::a()z:::az:1z#.x.z.1z.a.1z[aza]z[a b]z[=b]z[a=]z[a|=]z[a~=]z[a=1]za +za >za ++ b)za + > bz*:lang(z*:lang()znot(x)z:not()z:not(xz:not(-z:not(+,z,aza,zp @here_setSelectorText)
do_equal_rr"   r#   r$   	SyntaxErrInvalidModificationErr
do_raise_r)r   r2   s     r   test_selectorTextzTestSelector.test_selectorText   s   g
*g
 &'8g
 7	g

 wg
 7g
 7g
 4g
 Ug
 Eg
 Eg
 fg
 fg
 Tg
  7!g
" G#g
$ G%g
& W'g
( G)g
* G+g
, W-g
. G/g
0 G1g
2 W3g
6 7g
8 $9g
: 4;g
< 4=g
> $?g
@ Ag
B $Cg
D TEg
H DIg
J $Kg
L DMg
N TOg
R Sg
T dUg
V tWg
X tYg
Z [g
\ $]g
^ 4_g
` Tag
b dcg
d $eg
f gg
j dkg
l tmg
n tog
p dqg
r tsg
t ug
v wg
x yg
z ${g
| $}g
@ $Ag
B 4Cg
D TEg
F dGg
J tKg
L Mg
N Og
P Qg
R Sg
T Ug
V Wg
X DYg
Z Z[g
\ Z]g
^ j_g
` zag
b zcg
d 
eg
f  gg
h Dig
j Zkg
l Zmg
n jog
p zqg
r zsg
t 
ug
v  wg
x !,yg
z D{g
| Z}g
~ Zg
@ jAg
B zCg
D zEg
F Gg
J DKg
L DMg
N DOg
P !$Qg
R -dSg
T .tUg
V .tWg
Z d[g
\ ]g
^ $_g
` ag
b dcg
d 67feg
f DEtgg
h O  QYig
jdmg
n Dog
p !$qg
t (ug
v Twg
x =yg
z  {g
| =}g
~ ~g
@ =Ag
B .Cg
D 4Eg
F DGg
H 4Ig
J Kg
N tOg
P 	Qg
R Sg
T Ug
V Wg
X tYg
Z [g
\ ]g
^ _g
` "4ag
b #Dcg
f &gg
h 7ig
j fkg
l wmg
p ##&+&+0:+5@rMg
R 	>23
377''3
$cgg&:&:3
 !!3
 ""	3

 #''##3
 377$$3
 CGG%%3
 CGG%%3
 cgg''3
 ""3
 ""3
 ""3
 #''##3
 377$$3
 CGG%%3
  CGG%%!3
" SWW&&#3
$ CGG%%%3
& #''##'3
( 377$$)3
* ""+3
, #''##-3
. CGG%%/3
0 #''##13
2 #''##33
4 SWW&&53
6 CGG%%73
8 CGG%%93
: SWW&&;3
< SWW&&=3
> SWW&&?3
@ 377$$A3
B 377$$C3
D cgg''E3
F ww((ww(())gg''gg''gg''gg''gg''//''00''00ww((e3
j 	#56r   c                    t         j                  j                         }t        j                  t
        t        d             5  d|_        ddd       i dddddd	d
d	dddddddddddddddddddddd	dd	dd	i ddddd d	d!dd"d	d#d	d$d	d%d	d&d'd(d'd)dd*d+d,dd-d+d.dd/d+d0d'd'd'd'd'd'd'd+dddd1d2d3d3d3d4}|D ]  }||_        ||   |j                  k(  rJ  y# 1 sw Y   xY w)5zSelector.specificity)matchr   Nr
   r   lir   zli:first-line)r   r   r      zul lizul ol+li)r   r   r      zh1 + *[rel=up])r   r   r   r   zul ol li.red)r   r   r   rw   zli.red.level)r   r   rv   r   z#x34y)r   r   r   r   zUL OL LI.redzLI.red.levelz#s12:not(FOO))r   r   r   r   zbutton:not([DISABLED])z
*:not(FOO)rT   rX   rV   z* aza *rW   za:hoverza:first-lineza:first-letterza:beforeza:afterz.a)r   r   r   r   z*.aza.az.a.a)r   r   rv   r   za.a.az.a.bza.a.bz.a .ar^   )r   r   r   r   )r   r   r   r   )r   rv   r   r   )z*[x=a]z*[x~=a]z*[x|=a]z*[x^=a]z*[x*=a]z*[x$=a]z*[x][y]r\   z*#azx#az.x#aza.x#az#a#az#a#bz#a #b)	r   r   r   r    r!   AttributeErrorr   r   r   )r   selectorr2   texts       r   test_specificityzTestSelector.test_specificity}  sP   <<((* ]].1G"H
 $%H 

5
5
,5
 \5
 \	5

 5
 l5
 L5
 L5
 \5
 L5
 L5
 \5
 %l5
 ,5
  <!5
" <#5
$ <%5
& <'5
( <)5
* \+5
, |-5
. L/5
0 l15
2 35
4 |55
8 ,95
: <;5
< <=5
> L?5
@ \A5
B LC5
D \E5
F \G5
H LI5
J ####### !  !i5
l D$(H!;("6"6666 w
 
s   C22C;c                     d}t         j                  j                  |      }|t        |      v sJ t	        t        |            }t        ||j                        sJ ||j                  k(  sJ y)zSelector.__repr__(), .__str__()rU   )r   N)	r   r   r   strevalrepr
isinstance	__class__r   )r   rC   r%   s2s       r   test_reprANDstrzTestSelector.test_reprANDstr  sa    LL!!s!3c!f}}$q']"akk***boo%%%r   N)__name__
__module____qualname__r   r&   r5   rH   rJ   rR   rr   r{   r    r   r   r   r      s4    ,)*$:)%`
"#b7HB7H
&r   r   )__doc__xml.domr"   r    jaraco.testr   r   r+   r   BaseTestCaser   r   r   r   <module>r      s/      &  w&8(( w&r   