o
    e*>                     @   sJ   d Z ddlZddlZddlmZ ddlmZ ddl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   LD:\Projects\ConvertPro\env\Lib\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
   elementZ_namespaces
namespacesparentselectorTextspecificityZ
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   Z_ANYNSlistitemsr	   r
   r   )r   teststestZ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!   )|*r/   r/   )r#   r#   r#   )*|*r0   r0   )r%   r%   r%   )p|*r1   r   )p|xr2   r!   )x[a][a][*|a][p|a]r3   zx[a][a][*|a][a])	r   r!   r/   r#   r0   r%   r1   r2   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cssTextZcssRulesr   )
r   r   r*   selexpiresultr   sheetr   r   r   r   test_namespacesH   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
    }r.   r   s9   @namespace p "default";
p|a[att] {
    color: green
    }N)r   r	   r6   r7   r   )r   r	   r<   r   r   r   test_default_namespacex   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	   ZSelectorListr   r
   appendZappendSelector)r   slr8   Z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 ~br4   z
h1-a_x__--za-aZa_az-a_z-_z-\72z-rz.a aZ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 tdZtrtdz
\74\72  tdztr tdz\74\000072 tdz\74\000072  tda /**/ br1   p|e-a_x12|e*|b[p|a]z0elemenT.clasS#iD[atT="valuE"]:not(x)::first-line)za/**/ bza /**/brL   z	a  /**/ bz	a /**/  bz|ez*|er0   )r1   )r   uri)rM   rP   )rN   ))z-a_x12rQ   )rO   rP   z0elemenT.clasS#iD[atT="valuE"]:noT(x)::firsT-linEr   )Zattzx|a)r1   ))r!   rQ   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 @hereZ_setSelectorText)Z
do_equal_rr   r   r   Z	SyntaxErrZInvalidModificationErrZ
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   Z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   r[   zli.red.level)r   r   rZ   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)rC   rG   rE   z* aza *rF   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   rZ   r   za.a.az.a.bza.a.bz.a .arK   )r   r   r   r   )r   r   r   r   )r   rZ   r   r   )z*[x=a]z*[x~=a]z*[x|=a]z*[x^=a]z*[x*=a]z*[x$=a]z*[x][y]rI   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__()rD   )r   N)	r   r	   r
   strevalrepr
isinstance	__class__r   )r   r8   r   s2r   r   r   test_reprANDstr  s   zTestSelector.test_reprANDstrN)__name__
__module____qualname__r   r    r,   r=   r>   rB   rX   r_   rf   r   r   r   r   r      s    0 eDr   )__doc__Zxml.domr   r   Zjaraco.testr   r$   r   r   ZBaseTestCaser   r   r   r   r   <module>   s    