o
    lqi,>                     @   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   c/home/app/PaddleOCR-VL/.venv_paddleocr/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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"   )|*r0   r0   )r$   r$   r$   )*|*r1   r1   )r&   r&   r&   )p|*r2   r   )p|xr3   r"   )x[a][a][*|a][p|a]r4   zx[a][a][*|a][a])	r   r"   r0   r$   r1   r&   r2   r3   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_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
    }r/   r   s9   @namespace p "default";
p|a[att] {
    color: green
    }N)r   r	   r7   r8   r   )r   r	   r=   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	   ZSelectorListr   r
   appendZappendSelector)r   slr9   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 ~br5   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 /**/ br2   p|e-a_x12|e*|b[p|a]z0elemenT.clasS#iD[atT="valuE"]:not(x)::first-line)za/**/ bza /**/brM   z	a  /**/ bz	a /**/  bz|ez*|er1   )r2   )r   uri)rN   rQ   )rO   ))z-a_x12rR   )rP   rQ   z0elemenT.clasS#iD[atT="valuE"]:noT(x)::firsT-linEr   )Zattzx|a)r2   ))r"   rR   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   r[   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)rD   rH   rF   z* aza *rG   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   r[   r   za.a.az.a.bza.a.bz.a .arL   )r   r   r   r   )r   r   r   r   )r   r[   r   r   )z*[x=a]z*[x~=a]z*[x|=a]z*[x^=a]z*[x*=a]z*[x$=a]z*[x][y]rJ   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__()rE   )r   N)	r   r	   r
   strevalrepr
isinstance	__class__r   )r   r9   r    s2r   r   r   test_reprANDstr  s   zTestSelector.test_reprANDstrN)__name__
__module____qualname__r   r!   r-   r>   r?   rC   rY   r`   rg   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    	