o
    /h,>                     @   sJ   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 dej	Z
dS )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                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestSelectorc                 C   s   t jd| _d S N*)cssutilscssSelectorr)self r   P/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_selector.pysetup_method   s   zTestSelector.setup_methodc                 C   s  t jd}d|jksJ i |jjksJ |jdu sJ d|jks#J d|jks*J |j	s/J t jdddif}d|jks@J ddi|jjksJJ |jdu sQJ d|jksXJ d	|jks_J |j	sdJ t
tjj t jd W d   dS 1 s}w   Y  dS )
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   sr   r   r   	test_init   s"   

"zTestSelector.test_initc                 C   s   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| D ]\}}t j|ddif}||jksZJ qEdS )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!   r   r   r   test_element-   sX   
	
zTestSelector.test_elementc           
   
   C   s   ddiddddddg}ddddd	d
dddd	}t | D ]\}}t|D ]\}}tj||| f}||jks<J q'qtj }d|_|j	d }	|	jdksRJ d|j
d< |	jdks^J |j
d= |	jdksiJ dS )zSelector.namespacesr   otherdefault)r&   r   )r   r   r   )r#   r#   r#   )|*r3   r3   )r%   r%   r%   )*|*r4   r4   )r'   r'   r'   )p|*r5   r   )p|xr6   r#   )x[a][a][*|a][p|a]r7   zx[a][a][*|a][a])	r   r#   r3   r%   r4   r'   r5   r6   zx[a][|a][*|a][p|a]z$@namespace p "u"; a { color: green }r   ar&   z|aN)r+   r,   	enumerater   r	   r
   r   CSSStyleSheetcssTextcssRulesr   )
r   r   r-   selexpiresultr!   sheetr   r   r   r   test_namespacesJ   s6   


zTestSelector.test_namespacesc                 C   s>   d}t j }||_|jdksJ d|jd< |jdksJ dS )zSelector.namespaces defaultzF@namespace "default";
                a[att] { color:green; }
        s5   @namespace "default";
a[att] {
    color: green
    }r2   r   s9   @namespace p "default";
p|a[att] {
    color: green
    }N)r   r	   r:   r;   r   )r   r	   rA   r   r   r   test_default_namespacez   s   

z#TestSelector.test_default_namespacec                 C   sp   t jd}|D ]	}||jksJ qt jd}|| ||jks$J t jd}|| ||jks6J dS )zSelector.parentza, br#   yN)r   r	   SelectorListr   r
   appendappendSelector)r   slr=   newselr   r   r   test_parent   s   

zTestSelector.test_parentc                 C   s:  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 |dd 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|dd dS )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 ~br8   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 /**/ br5   p|e-a_x12|e*|b[p|a]z0elemenT.clasS#iD[atT="valuE"]:not(x)::first-line)za/**/ bza /**/brW   z	a  /**/ bz	a /**/  bz|ez*|er4   )r5   )r   uri)rX   r[   )rY   ))z-a_x12r\   )rZ   r[   z0elemenT.clasS#iD[atT="valuE"]:noT(x)::firsT-linEr   )attzx|a)r5   ))r#   r\   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   r-   r   r   r   test_selectorText   sB  	
 !"$%&')*+,-./012356789:;<=>@ABCEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefghijkmnopqrstuwxz{|}~               	  
                            *	
 !"#5zTestSelector.test_selectorTextc                 C   s`  t j }tjttd d d|_W d   n1 sw   Y  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sJ qdS )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   rm   zli.red.level)r   r   rl   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)rK   rO   rM   z* aza *rN   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   rl   r   za.a.az.a.bza.a.bz.a .arU   )r   r   r   r   )r   r   r   r   )r   rl   r   r   )z*[x=a]z*[x~=a]z*[x|=a]z*[x^=a]z*[x*=a]z*[x$=a]z*[x][y]rS   z*#azx#az.x#aza.x#az#a#az#a#bz#a #b)	r   r	   r
   r   r   AttributeErrorr   r   r   )r   selectorr-   textr   r   r   test_specificity}  s   
	
 !"#$%6zTestSelector.test_specificityc                 C   sP   d}t jj|d}|t|v sJ tt|}t||jsJ ||jks&J dS )zSelector.__repr__(), .__str__()rL   )r   N)	r   r	   r
   strevalrepr
isinstance	__class__r   )r   r=   r!   s2r   r   r   test_reprANDstr  s   zTestSelector.test_reprANDstrN)__name__
__module____qualname__r   r"   r0   rB   rC   rJ   ri   rq   rx   r   r   r   r   r      s    0 eDr   )__doc__xml.domr   r   jaraco.testr   r   r&   r   BaseTestCaser   r   r   r   r   <module>   s    	