o
    /h                     @   sh   d Z ddlZddlZddlZddlmZ ejjddZ	G dd dej
ZG d	d
 d
ZG dd dZdS )z:Testcases for cssutils.css.CSSValue and CSSPrimitiveValue.    N   )basetest
incomplete)reasonc                   @   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 )TestCSSValuec                 C   s   t j | _d S )N)cssutilscssCSSValuer)self r   P/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_cssvalue.pysetup_method   s   zTestCSSValue.setup_methodc                 C   s8   t j }d|jksJ d|ju sJ d|ju sJ dS )zCSSValue.__init__() N)r   r   r	   cssTextcssValueTypecssValueTypeStringr   vr   r   r   	test_init   s   
zTestCSSValue.test_initc                 C   s   t j }d|_|j|jksJ |j|jksJ d|jksJ d|_|j|jks*J |j|jks2J d|jks9J d|_|j|jksDJ |j|jksLJ d|jksSJ dS )zCSSValue Escapes1px1PXz1p\xN)r   r   r	   r   CSS_PRIMITIVE_VALUEr   CSS_PXprimitiveTyper   r   r   r   test_escapes   s   
zTestCSSValue.test_escapesc                 C   s   t j }d|_|j|jksJ |j|jksJ d|jksJ t j }d|_|j|jks/J |j|jks7J d|jks>J t j }d|_|j|jksNJ |j|jksVJ d|jks]J d|_|j	|jkshJ d|jksoJ d|_|j	|jkszJ d|jksJ |D ]W}|j|jksJ |dkr|j
|jksJ d	|jksJ n|d
kr|j|jksJ d|jksJ |dkr|j|jksJ d|jksJ |dkr|j
|jksJ d|jksJ qt j }d|_|j	|jksJ d|jksJ d|_|j|jksJ |j|jksJ d|jksJ dS )zCSSValue.cssTextr   za  ,b,  c  ,"d or d", "e, " za, b, c, "d or d", "e, "z  1   px    z1 pxz  normal 1px a, b, "c" end   znormal 1px a, b, "c" endr   normalr      z	a, b, "c"   endz?expression(document.body.clientWidth > 972 ? "1014px": "100%" )z<expression(document.body.clientWidth > 972?"1014px": "100%")N)r   r   r	   r   r   r   r   r   
CSS_STRINGCSS_VALUE_LIST	CSS_IDENTCSS_UNKNOWN)r   r   xr   r   r   test_cssText+   sX   



zTestCSSValue.test_cssTextc                 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,d-d.d/d0d1d0d2d3d4d5d6d5d7d8d9d:d;d:i d<d=d>d=d?d@dAdBdCdCdDdDdEdFdGdHdIdIdJdKdLdMdNdNdOdPdQdQdRdSdTdTdUdTi dVdTdWdTdXdTdYdYdZdZd[d[d\d\d]d^d_d_d`d_dadbdcdbdddbdedbdfdfdgdfdhdfi didfdjdkdldkdmdkdkdkdndodpdqdrdqdsdqdtdqdudvdwdvdxdvdydvdzd{d|d{d}d{d~d~ddddd}|  | 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d}| | dS )zCSSValue.cssText 2z/a()1,-1,+1,1%,-1%,1px,-1px,"a",a,url(a),#aabb44z6a() 1, -1, 1, 1%, -1%, 1px, -1px, "a", a, url(a), #ab4redzred z red z/**/redz/**/ redzred/**/zred /**/z/**/red/**/z/**/ red /**/zred-z.00z0.000z0%0pxz-.0z-0z-0.0z-00z-0%z-0pxz+.0z+0z+0.0z+00z+0%z+0px1z1.0r   1%1px1z+1z-1z+1.0z-1.0"x"z'x'z"x\
y"z"xy"z#112234z#112233#123
rgb(1,2,3)zrgb(1, 2, 3)zrgb(  1  ,  2  ,  3  )zrgb(-1,+2,0)zrgb(-1, 2, 0)rgba(1,2,3,4)zrgba(1, 2, 3, 4)zrgba(  1  ,  2  ,  3  ,  4 )zrgba(-1,+2,0, 0)zrgba(-1, 2, 0, 0)zf(1,2)zf(1, 2)zf(  1  ,  2  )zf(-1,+2)zf(-1, 2)zf(  -1  ,  +2  )zfun(  -1  ,  +2  )z
fun(-1, 2)z
local( x )zlocal(x)z+test(1px, #111, y, 1, 1%, "1", y(), var(x))z'test(-1px, #111, y, -1, -1%, "1", -y())zurl(y)  format( "x" ,  "y" )zurl(y) format("x", "y")z
f(1 2,3 4)zf(1 2, 3 4)zExpression()zexpression(-1 < +2)zexpression(-1< + 2)z!expression(document.width == "1")zexpression(document.width=="1")zalpha(opacity=80)zalpha( opacity = 80 , x=2  )zalpha(opacity=80, x=2)zu+fzU+ABCdefzu+abcdefurl(a)zuRl(a)zu\rl(a)zurl("a")zurl(  "a"  )zurl(";")zurl(",")zurl(")")zurl("'")zurl('"')z	url("\"")z1 2z1   2z1,2z1, 2z1,  2z1  ,2z1  ,  2z1/2z1/  2z1  /2z1  /  2z1/**/2z1 /**/ 2z1 /**/2z1/**/ 2z1  /*a*/  /*b*/  2z1 /*a*/ /*b*/ 2z1,/**/2z	1, /**/ 2z1 ,/**/2z1, /**/2z	1 , /**/2z1/**/,2z	1 /**/, 2z1/**/ ,2z1/**/, 2z	1/**/ , 2z1/*a*/  ,/*b*/  2z1 /*a*/, /*b*/ 2z1  /*a*/,  /*b*/2z1  /*a*/  ,  /*b*/  2za b1, b2 b2, b3, b4z
u+1, u+2-5z!local(x), url(y) format("x", "y")z
attr(href)z target-counter(attr(href), page))za b1,b2 b2,b3,b4z a b1  ,   b2   b2  ,  b3  ,   b4zu+1  ,   u+2-5z)local( x ),  url(y)  format( "x" ,  "y" )zattr( href )ztarget-counter(attr(href),page)za+-+z-%z+az--1pxz++1px#z#00z#0000z#00000z#0000000z-#0,z1,,2z1,/**/,2z1  ,  /**/  ,  2)z1,z1, z1 ,z1 , z1  ,  z1//2zurl(x))"'zf(-)zf(x))N)
do_equal_rxmldom	SyntaxErr
do_raise_r)r   testsr   r   r   test_cssText2b   s  	
 !"#$%&'()+,/23456789;<=>?@ABCDFGHIJLMOPQRSTUVWXYZ[\]^_`abdefghjklmopqrtuvx 
	
"zTestCSSValue.test_cssText2c                 C   sL   ddd}t | D ]\}}td| }|jd jj}||ks#J qdS )zCSSValue (incomplete)r1   )zurl("azurl(aza { background: %sr   N)listitemsr   parseStringcssRulesstyle
background)r   r=   r   expsr   r   r   test_incomplete  s   
zTestCSSValue.test_incompletec                 C   s   ddgdt jjfg ddt jjfddgdt jjfg}|D ]7\}}}|D ]/}t jj|d	}|d
kr2d}||jks9J ||jks@J t|||jksJJ |t	|ksRJ q#qdS )z)CSSValue.cssValueType .cssValueTypeStringinheritzINhe\ritCSS_INHERIT)r*   r+   1em1exr   1cm1mm1in1pt1pc1deg1rad1grad1ms1s1hz1khz1other"string"'string'zurl(x)r&   attr(a)z
counter(x)zrect(1px, 2px, 3px, 4px)zrgb(0, 0, 0)z#000#123456zrgba(0, 0, 0, 0)zhsl(0, 0, 0)zhsla(0, 0, 0, 0)r   z1px 1pxzred blue green xr!   r   rZ   rY   N)
r   r   r	   CSSPrimitiveValueCSSValueListr   r   getattrr   type)r   r=   valuesnameclsvaluer   r   r   r   test_cssValueType  s*   !&/zTestCSSValue.test_cssValueTypec                 C   sz   t jjdd}d|ju sJ t jjddd}d|ju sJ 	 ttjj	 |
d W d   dS 1 s6w   Y  dS )z(CSSValue._readonly)rH   r]   FT)r   readonlyr$   N)r   r   r	   	_readonlyr   pytestraisesr9   r:   NoModificationAllowedErr_setCssTextr   r   r   r   test_readonlyP  s   
zTestCSSValue.test_readonlyc                 C   sP   d}t jj|d}|t|v sJ tt|}t||jsJ ||jks&J dS )zCSSValue.__repr__(), .__str__()rH   r]   N)	r   r   r	   strevalrepr
isinstance	__class__r   )r   r   rF   s2r   r   r   test_reprANDstr\  s   zTestCSSValue.test_reprANDstrN)__name__
__module____qualname__r   r   r   r%   r>   rG   rf   rm   rt   r   r   r   r   r      s    7 +<r   c                   @   s\   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d ZdS )TestCSSPrimitiveValuec                 C   s4  t jd}d|jksJ |j|jksJ d|jksJ |j|jks$J d|j	ks+J t
tjj |  W d   n1 sAw   Y  t
tjj |  W d   n1 s\w   Y  t
tjj |  W d   n1 sww   Y  t
tjj |  W d   dS 1 sw   Y  dS )zCSSPrimitiveValue.__init__()r*   r   
CSS_NUMBERN)r   r   r^   r   r   r   r   ry   r   primitiveTypeStringri   rj   r9   r:   InvalidAccessErrgetCounterValuegetRGBColorValuegetRectValuegetStringValuer   r   r   r   r   j  s$   



"zTestCSSPrimitiveValue.test_initc                 C   s.   t jd}|j|jksJ d|jksJ dS )zCSSPrimitiveValue.CSS_UNKNOWNzexpression(false)r#   N)r   r   r^   r#   r   rz   r   r   r   r   test_CSS_UNKNOWN  s   z&TestCSSPrimitiveValue.test_CSS_UNKNOWNc                 C   sZ   g d}|D ]$\}}dD ]}t jd||f }||jksJ t|||jks)J qqdS )z-CSSPrimitiveValue.CSS_NUMBER .. CSS_DIMENSION))r   ry   )%CSS_PERCENTAGE)emCSS_EMS)exCSS_EXS)pxr   )cmCSS_CM)mmCSS_MM)inCSS_IN)ptCSS_PT)pcCSS_PC)degCSS_DEG)radCSS_RAD)gradCSS_GRAD)msCSS_MS)rF   CSS_S)hzCSS_HZ)khzCSS_KHZ)other_dimensionCSS_DIMENSION)r   r   皙?皙r   z%i%sN)r   r   r^   rz   r`   r   )r   defsdimrc   nr   r   r   r   $test_CSS_NUMBER_AND_OTHER_DIMENSIONS  s   z:TestCSSPrimitiveValue.test_CSS_NUMBER_AND_OTHER_DIMENSIONSc                 C   sR   g d}|D ] \}}|D ]}t j|}t|||jksJ ||jks%J qqdS )z,CSSPrimitiveValue.CSS_STRING .. CSS_RGBCOLOR)	))z""''z"some thing"z' A\ND 'za, bz"a", "b"r    ))r1   z
url("a b")zurl(' ')CSS_URI))somez
or_anth-err"   ))r[   zattr(b)CSS_ATTR))z
counter(1)z
counter(2)CSS_COUNTER))zrect(1,2,3,4)CSS_RECT))r/   zrgb(10%, 20%, 30%)r.   r\   CSS_RGBCOLOR))r0   zrgba(10%, 20%, 30%, 40%)CSS_RGBACOLOR))zU+0zu+ffffffz
u+000000-fzu+0-f, U+ee-ffCSS_UNICODE_RANGEN)r   r   r^   r`   r   rz   )r   r   examplesrc   r$   r   r   r   r   test_CSS_STRING_AND_OTHER  s   z/TestCSSPrimitiveValue.test_CSS_STRING_AND_OTHERc                 C   s  t jd}i d|jdfd|jdfd|jdfd|jd	fd
|jdfd|jdfd|jdfd|jdfd|jdfd|j	dfd|j
dfd|jdfd|j	dfd|j	dfd|jdfd|j
dfd|jdf|jdf|jdf|jdf|jdf|jdf|jdf|jdf|jdf|jdf|jdf|jdfd}|D ]"}||_|| \}}||}||j	|jfv rt|}||ksJ qdS )z!CSSPrimitiveValue.getFloatValue()r   r'   r   z-1.1r   r+   r   z-1%r   rJ   z-1.1emrK   rL   254cmd   rM   10mm254mm
   rN   100in   10inrO   )rP   rQ   rR   rS   rT   1000msrU   rV   1000hzrW   
1DIMENSIONN)r   r   r^   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   getFloatValueround)r   r   r=   r   unitTyperE   valr   r   r   test_getFloat  sp   








	







!
z#TestCSSPrimitiveValue.test_getFloatc                 C   s  t jj}|jdfg |jdddf|jdddf|jdddf|jdddf|jdddf|jd	d	d
f|jdddf|jdddf|jdddf|jdtjjdf|jdtjjdf|j	dtjjdf|j
dtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdtjjdf|jdf|jddd f|jddd!f|jddd"f|jddd!f|jd#d$d%f|jd&d&d'f|jd(d(d)f|jdd*d+f|jd*d,d-f|jdd.d/f|jdtjjdf|jdtjjdfg|jd0f|jddd1f|jd2dd0f|jdtjjdf|jdtjjdf|jdtjjdfg|jd3f|jd4dd5f|jdtjjdf|jdtjjdf|jdtjjdfgi}|D ]}|\}}t j|}|| D ]\}}}	}
t|	tkst|	tkr|
rt j!|	|
d6 |"|| W d   n	1 sw   Y  qt !|	 |"|| W d   n	1 sw   Y  q|"|| |j#d |
ks$J |
d!kr+d}
|j$|
ks3J |%||	ks=J qqdS )7z!CSSPrimitiveValue.setFloatValue()r   r   r'   g?z0.1r   2g       @g @z2.1g z-2.1r*   z1.1r   Nr$   z0CSSPrimitiveValue: floatValue 'x' is not a float1xz1CSSPrimitiveValue: floatValue '1x' is not a floatz<CSSPrimitiveValue: unitType 'CSS_STRING' is not a float typez9CSSPrimitiveValue: unitType 'CSS_URI' is not a float typez:CSSPrimitiveValue: unitType 'CSS_ATTR' is not a float typez;CSSPrimitiveValue: unitType 'CSS_IDENT' is not a float typez>CSSPrimitiveValue: unitType 'CSS_RGBCOLOR' is not a float typez?CSSPrimitiveValue: unitType 'CSS_RGBACOLOR' is not a float typez:CSSPrimitiveValue: unitType 'CSS_RECT' is not a float typez=CSSPrimitiveValue: unitType 'CSS_COUNTER' is not a float typezHCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_NUMBER' to 'CSS_EMS'zHCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_NUMBER' to 'CSS_EXS'rM   2mm0mmz0.1mmg      @r   3mmg@z3.1mmgz-3.1mmr   r   r   r   g33333@z1828.8mmrO   2pt   rW   i  2khzmatch)&r   r   r^   ry   r   r9   r:   r{   r   r   r   r   r   r   r   r   r   r    r   r   r"   r   r   r   r   r   r   r   r   r   r   ra   ri   rj   setFloatValue_valuer   r   )r   Vr=   testinitialTypeinitialValuepvsetTypesetValuerE   r   r   r   r   test_setFloat  sF  
	$*06<BHNT[b 
z#TestCSSPrimitiveValue.test_setFloatc                 C   s   t jd}|j|jksJ ttjj	 |
  W d   n1 s$w   Y  t jj}|jd|jd|jd|jd|jd|jd|jd	|jd
i}|D ]!}|| \}}|sU|}t j|}|j|ksbJ |
 |ksjJ qIdS )z"CSSPrimitiveValue.getStringValue()r   N)z'red'r&   )z"red"r&   )zurl(http://example.com)N)zurl('http://example.com')http://example.com)zurl("http://example.com")r   )zurl("http://example.com?)")zhttp://example.com?))r&   N)zattr(att-name)zatt-name)r   r   r^   r   r   ri   rj   r9   r:   r{   r   r    r   r"   r   )r   r   r   r=   tr   rE   r   r   r   test_getString  s.   

z$TestCSSPrimitiveValue.test_getStringc                 C   sB  t jd}|j|jksJ ||jd d|jksJ d| ks$J tj	t
jjdd ||jd W d   n1 s?w   Y  tj	t
jjdd ||jd W d   n1 s_w   Y  tj	t
jjd	d ||jd W d   n1 sw   Y  t jd
}||jd |j|jksJ d|jksJ d| ksJ tj	t
jjdd ||jd W d   n1 sw   Y  tj	t
jjdd ||jd W d   n1 sw   Y  tj	t
jjdd ||jd W d   n	1 sw   Y  t jd}||jd d|jksJ d| ks'J ||jd d|jks6J d| ks?J ||jd d| ksOJ d|jksWJ ||jd d| ksgJ d|jksoJ ||jd d| ksJ d|jksJ ||jd d|jksJ d| ksJ ||jd d|jksJ d| ksJ ||jd  |j|jksJ d!|jksJ d | ksJ tj	t
jjd"d ||jd W d   n	1 sw   Y  tj	t
jjd#d ||jd W d   n	1 sw   Y  tj	t
jjd$d ||jd W d   n	1 s6w   Y  t jd%}||jd  |j|jksQJ d | ksZJ tj	t
jjd&d ||jd W d   n	1 svw   Y  tj	t
jjd'd ||jd W d   n	1 sw   Y  tj	t
jjd(d ||jd W d   n	1 sw   Y  tj	t
jjd)d |dd* W d   n	1 sw   Y  tj	t
jjd+d |d,d* W d   n	1 sw   Y  tj	t
jjd-d ||jd* W d   dS 1 sw   Y  dS ).z"CSSPrimitiveValue.setStringValue()z"a"b)r   STRINGzHCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_STRING' to 'CSS_URI'r   r$   NzJCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_STRING' to 'CSS_IDENT'zICSSPrimitiveValue: Cannot coerce primitiveType 'CSS_STRING' to 'CSS_ATTR'newident)r   IDENTzGCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_IDENT' to 'CSS_URI'zJCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_IDENT' to 'CSS_STRING'r-   zHCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_IDENT' to 'CSS_ATTR'zurl(old)()r   URI))r   r   r6   )r6   r   r   )r   r   r5   )r5   r    )r   r   a))r   r   a)r   r   zGCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_URI' to 'CSS_IDENT'zHCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_URI' to 'CSS_STRING'zFCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_URI' to 'CSS_ATTR'z	attr(old)zHCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_ATTR' to 'CSS_IDENT'zICSSPrimitiveValue: Cannot coerce primitiveType 'CSS_ATTR' to 'CSS_STRING'zFCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_ATTR' to 'CSS_URI'zECSSPrimitiveValue: stringType 'x' (UNKNOWN TYPE) is not a string typebrownzECSSPrimitiveValue: stringType 111 (UNKNOWN TYPE) is not a string typeo   z9CSSPrimitiveValue: stringType CSS_PX is not a string type)r   r   r^   r    r   setStringValuer   r   ri   rj   r9   r:   r{   r   r"   r   r   r   r   r   r   test_setString  s  $z$TestCSSPrimitiveValue.test_setStringc                 C   s   t jd}|j|jksJ d|jksJ t jd}|j|jks#J d|jks*J t jd}|j|jks8J d|jks?J t jd}|j|jksMJ t jd}|j|jks[J t jd}|j|jksiJ dS )RGBColorzRGB(1, 5, 10)zrgb(1, 5, 10)zrgb(1%, 5%, 10%)z  rgb(  1 ,5,  10  )zrgb(1,5,10)zrgb(1%, .5%, 10.1%)N)r   r   r^   r   r   r   r   r   r   r   test_typeRGBColor2  s   z'TestCSSPrimitiveValue.test_typeRGBColorc                 C   s^   d}t j|}|t|v sJ dt|v sJ tt|}t||js&J ||jks-J dS )z(CSSPrimitiveValue.__repr__(), .__str__()111ry   N)	r   r   r^   rn   ro   rp   rq   rr   r   )r   r   rF   rs   r   r   r   rt   G  s   z%TestCSSPrimitiveValue.test_reprANDstrN)ru   rv   rw   r   r   r   r   r   r   r   r   r   rt   r   r   r   r   rx   i  s    %/  
rx   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestCSSValueListc                 C   sd   t jjdd}|j|jksJ d|jksJ d|jksJ |d}||j	d d|jks0J dS )zCSSValueList.__init__()zred bluer]   r   r   greenz
green blueN)
r   r   r	   r!   r   r   lengthitemr   r"   )r   r   r   r   r   r   r   V  s   
zTestCSSValueList.test_initc                 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 d!d"d#}|D ])}|| \}}|sH|}t jj|d$}|j|jksWJ ||jks^J ||jkseJ q<d%S )&zCSSValueList.cssTextz0 0px -0px +0px)z0 0 0 0   z1 2 3 4)Nr   z-1 -2 -3 -4z-1 2)Nr   z-1px red "x")Nr   za, b c	1px1 2% 3)r   r   zf(+1pX, -2, 5%) 1)zf(1px, -2, 5%) 1r   z0 f()0)z0 f() 0r   zf()0)zf() 0r   zf()1%)zf() 1%r   zf()1px)zf() 1pxr   zf()"str")z	f() "str"r   zf()ident)z	f() identr   zf()#123)zf() #123r   zf()url())z	f() url()r   zf()f())zf() f()r   )zurl(x.gif) 0 0r   )zurl(x.gif) no-repeatr   )zurl(x.gif)0 0zurl(x.gif)no-repeatr]   N)r   r   r	   r!   r   r   r   )r   r=   r   rE   numr   r   r   r   test_numbersb  s^   	
zTestCSSValueList.test_numbersc                 C   sF   d}t j|}t|t jjsJ dt|v sJ |t|v s!J dS )z#CSSValueList.__repr__(), .__str__()z1px 2pxzlength=2N)r   r   r	   rq   r_   rn   )r   r   rF   r   r   r   rt     s
   z TestCSSValueList.test_reprANDstrN)ru   rv   rw   r   r   rt   r   r   r   r   r   U  s     r   )__doc__xml.domr9   ri   r   r   r   markxfail
pytestmarkBaseTestCaser   rx   r   r   r   r   r   <module>   s      ]   o