o
    /hF                     @   s   d Z ddlZddlZddlZddlZddlmZ ejdd Z	ej
dG dd dejZG d	d
 d
ZG dd dejZG dd dejZG dd dZG dd dZG dd dZej
jddG dd dZdS )z:Testcases for cssutils.css.CSSValue and CSSPrimitiveValue.    N   )basetestc                 C   s   t j | j_d S )N)cssutilscssPropertyValueinstancer)request r
   M/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_value.pyset_r_property_value   s   r   c                   @   sD   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S )TestPropertyValuec                 C   s   t j }d|jksJ d|jksJ d|jksJ d}g d}t j|}||jks-J dt|ks5J d|jks<J t|D ]\}}|j|| ksMJ q@t|D ]\}}||| jks_J |||jksiJ qRdS )z(PropertyValue.__init__() .item() .length r   z0, 0/0 1px var(x) url(x))0r   r   1pxvar(x)url(x)   N)	r   r   r   cssTextlengthvaluelen	enumerateitem)selfpvr   itemsixr   r
   r
   r   	test_init   s    
zTestPropertyValue.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i ddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d/d3d1d4d/d5d1d6d/d7d1d8d9d9dddd:d;d<d=d>d?	}t | D ].\}\}}}|d@u r|}|d@u r|}tj|}||jksJ ||jksJ ||jksJ q|i dAdBdCdDdEdDdFdGdHdIdJdIdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdc}t | D ]"\}\}}|d@u r|}tj|}||jksJ ||jksJ qi dddddedfdgdhdidhdjdkdldkdmdndodpdqdrdsdrdtdudvdudwdxdydzd{d{d|d|d}d~i ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddddi}| | g dâ}| 	|t
jj d@S )zPropertyValue.cssTextr   )Nr   Nz0 0)N   N0, 0z0,0)r!   r    Nz0  ,   0z0/0z/**/ 0 /**/)Nr   r   z0 /**/ 0 /**/ 0)N   z0 0 0z0, /**/ 0, /**/ 0)Nr"   z0, 0, 0z0//**/ 0//**/ 0)Nr"   z0/0/0/**/ red)Nr   redz/**/red)r#   r   r$   red /**/zred/**/)r%   r   r$   z/a()1,-1,+1,1%,-1%,1px,-1px,"a",a,url(a),#aabb44)7a() 1, -1, +1, 1%, -1%, 1px, -1px, "a", a, url(a), #ab4   r&   calc(1))Nr   r(   zcalc( 1))r(   r   r(   zcalc(1 )	calc(1px))Nr   r)   calc(1p-x-))Nr   r*   calc(1%))Nr   r+   calc(-1))Nr   r,   calc(+1))Nr   r-   zcalc(1  +   1px))calc(1 + 1px)r   r.   calc(1 - 1px))Nr   r/   zcalc(1*1px))calc(1 * 1px)r   r0   zcalc(1  /  1px))calc(1 / 1px)r   r1   zcalc( 1*1px)zcalc( 1  /  1px)zcalc(1*1px )zcalc(1  /  1px )zcalc( 1*1px )zcalc( 1  /  1px )calc(calc(1px + 5px) * 4))r2   r   r2   )Nr   rgb(0, 10, 255))Nr   hsl(10, 10%, 25%))Nr   rgba(0, 10, 255, 0.5))Nr   hsla(10, 10%, 25%, 0.5))1matrix(0.000092, 0.250001, -0.25, 0.000092, 0, 0)r   r7   )	zcalc( calc(1px + 5px)*4 )zcalc(var(X))zcalc(2 * var(X))zcalc(2px + var(X))r3   r4   r5   r6   z6matrix(0.000092, 0.2500010, -0.250000, 0.000092, 0, 0)Nz0 0px -0px +0px)z0 0 0 0   z1 2 3 4)Nr8   z-1 -2 -3 -4z-1 2)Nr    z-1px red "x")Nr"   za, b c	1px1 2% 3)r9   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-repeatz#112234#112233#123
rgb(1,2,3)rgb(1, 2, 3)zrgb(  1  ,  2  ,  3  )rgba(1,2,3,4)zrgba(1, 2, 3, 4)zrgba(  1  ,  2  ,  3  ,  4 )zrgb(-1,+2,0)zrgb(-1, +2, 0)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)z4expression(eval(document.documentElement.scrollTop))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("\"")1z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a b1, b2 b2, b3, b4z a b1  ,   b2   b2  ,  b3  ,   b4zu+1  ,   u+2-5z
u+1, u+2-5z)local( x ),  url(y)  format( "x" ,  "y" )z!local(x), url(y) format("x", "y")zattr( href )z
attr(href)ztarget-counter(attr(href),page)z target-counter(attr(href), page))=za+-+z-%z+az--1pxz++1px#z#00z#12xz#xyzz#0000z#00000z#0000000z-#0,z1,,2z1,/**/,2z1  ,  /**/  ,  2z1,z1, z1 ,z1 , z1  ,  z1//2zurl(x))"'zf(-)zf(x))zcalc(zcalc(1z
calc(1 + 1z	calc(1+1)z	calc(1-1)z
calc(1 +1)z
calc(1+ 1)z
calc(1 -1)z
calc(1- 1)zcalc(+)z	calc(+ 1)zcalc(-)z	calc(- 1)zcalc(*)zcalc(*1)z	calc(* 2)zcalc(/)zcalc(/1)z	calc(/ 2)zcalc(1+)z	calc(1 +)z
calc(1 + )zcalc(2px -)z
calc(3px*)zcalc(3px *)zcalc(3px * )z
calc(4em/)zcalc(4em /)zcalc(4em / )zcalc(1 + + 1)zcalc(1 ++ 1))listr   r   r   r   r   r   r   
do_equal_rdo_raise_r_listxmldom	SyntaxErr)r   testsr   cr   vr   r
   r
   r   test_cssText+   s$  	
 !"#$%&',@	
	 !#$%&'()*+,./012345678:;<=>@ABCEFGHJKLNOPQSU
WDzTestPropertyValue.test_cssTextc                 C   s   d}t |}|jd jdj}|jdksJ |d jdks!J t d}|jd jdj}d|jks7J |d jdks@J |d	 jd
ksIJ |d jdksRJ dS )zPropertyValue[index]z#div.one {color: rgb(255, 0, 0);}   r   colorzrgb(255, 0, 0)z#body { font-family: "A", b, serif }zfont-familyr"   Ar   br    serifN)r   parseStringcssRulesstylegetPropertypropertyValuer   r   )r   r   sheetr   r
   r
   r   	test_list3  s   

zTestPropertyValue.test_listc                 C   sp   dD ]}t d| }|jd j d }|jsJ qdD ]}t d| }|jd j d }|jr5J qdS )zPropertyValue with comment)greenzgreen /* comment */z/* comment */greenz/* comment */green/* comment */z#/* comment */  green  /* comment */z+/* comment *//**/  green  /* comment *//**/zbody {color: %s; }r   )greezgree /* comment */z/* comment */greez/* comment */gree/* comment */z"/* comment */  gree  /* comment */z*/* comment *//**/  gree  /* comment *//**/N)r   rU   rV   rW   getPropertiesvalid)r   trZ   pr
   r
   r   test_commentsD  s   zTestPropertyValue.test_commentsc                 C   sL   ddd}t | D ]\}}td| }|jd jj}||ks#J qdS )zPropertyValue (incomplete)r?   )zurl("azurl(aza { background: %sr   N)rG   r   r   rU   rV   rW   
background)r   rM   rO   expsr
   r
   r   test_incomplete^  s   
z!TestPropertyValue.test_incompletec                 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PropertyValue._readonlyinheritr   FT)r   readonlyr   N)r   r   r   	_readonlyr   pytestraisesrJ   rK   NoModificationAllowedErr_setCssTextr   rO   r
   r
   r   test_readonlyf  s   
zTestPropertyValue.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$PropertyValue.__repr__(), .__str__()rg   rh   N)	r   r   r   strevalrepr
isinstance	__class__r   )r   r   re   s2r
   r
   r   test_reprANDstrr  s   z!TestPropertyValue.test_reprANDstrN)
__name__
__module____qualname__r   rP   r[   rb   rf   rp   rw   r
   r
   r
   r   r      s      
r   c                   @      e Zd Zdd Zdd ZdS )	TestValuec                 C   s8   t j }d|jksJ d|jksJ d|ju sJ dS )zValue.__init__()r   N)r   r   Valuer   r   typero   r
   r
   r   r        
zTestValue.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}t | D ]"\}\}}}tj|}||jksLJ ||jksSJ ||jksZJ q8dS )zValue.cssTextr;   )r;   r;   HASH#123456)r   r   r   r:   )r;   r:   r   z  #112233  r$   )r$   r$   IDENTz  red  zred  z  redred-)r   r   r   -red)r   r   r   "red")r   r$   STRING'red'z	  "red"  "red\"")r   zred"r   z'x\"')z"x\\""zx\"r   "xy")r   xyr   N)rG   r   r   r   r}   r   r~   r   r   rM   ra   r   nr`   rO   r
   r
   r   rP     sP   	
zTestValue.test_cssTextNrx   ry   rz   r   rP   r
   r
   r
   r   r|         r|   c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestColorValuec                 C   sV   t j }|j|jksJ d|jksJ d|jksJ d|jks"J |jdu s)J dS )zColorValue.__init__()r   transparentN)	r   r   
ColorValueCOLOR_VALUEr~   r   r   name	colorTypero   r
   r
   r   r     s   
zTestColorValue.test_initc                 C   s  dddddddddd		}t | D ]?\}\}tj|}|j|jks%J ||jks,J ||jks3J tj }||_|j|jksCJ ||jksJJ ||jksQJ qi d
t	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jdt	j
jd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
}tj | _| | dS )zColorValue.cssText)r;   )r=   )zrgb(1%, 2%, 3%))zrgb(-1, -1, -1))zrgb(-1%, -2%, -3%))zrgba(1, 2, 3, 0))zhsl(1, 2%, 3%))zhsla(1, 2%, 3%, 1))	r;   r:   r<   zrgb(1%,2%,3%)zrgb(-1,-1,-1)zrgb(-1%,-2%,-3%)zrgba(1,2,3, 0)zhsl(1,2%,3%)zhsla(1,2%,3%, 1.0)r@   az#12z#1234z#1234567z	#12345678zrgb(1,1%,1%)zrgb(1%,1,1)zrgb(-1,-1%,-1%)zrgb(-1%,-1,-1)zrgb(1,1,1, 0)zrgb(1%,1%,1%, 0)zrgba(1,1,1)zrgba(1%,1%,1%)zrgba(1,1,1, 0%)zrgba(1%,1%,1%, 0%)zhsl(1,2%,3%, 1))
zhsla(1,2%,3%)z
hsl(1,2,3)zhsl(1%,2,3)zhsl(1%,2,3%)zhsl(1%,2%,3)zhsla(1,2%,3%, 0%)zhsla(1,2,3, 0.0)zhsla(1%,2,3, 0.0)zhsla(1%,2,3%, 0.0)zhsla(1%,2%,3, 0.0)N)rG   r   r   r   r   r   r~   r   r   rJ   rK   rL   r   
do_raise_r)r   rM   ra   r   rO   r
   r
   r   rP     s   
	
zTestColorValue.test_cssTextc              	   C   s   ddddddddd	}t | D ]3\}}|D ],}tj|}|j|d
 ks(J |j|d ks1J |j|d ks:J |j|d ksCJ qqdS )zColorValue.red .green .blue)
   r            ?)r   r      r   )      r   r   )r   r   r   r   )r   r   r   r   )r      r   皙?)r   r   r   r   )r   r   r   r   ))z#0A0AD2zrgb(10, 10, 210))zhsl(240, 91%, 43%))z#ff8800z#f80zrgb(255, 136, 0)zrgba(255, 136, 0, 1.0))r$   z#ff0000z#f00zhsl(0, 100%, 50%)zhsla(0, 100%, 50%, 1.0))limez#00ff00z#0f0zhsl(120, 100%, 50%))zrgba(255, 127, 0, .1)zrgba(100%, 50%, 0%, .1))r   rgba(0, 0, 0, 0))aquar   r   r    r"   N)	rG   r   r   r   r   r$   r\   bluealpha)r   rM   colorsrgbarQ   rN   r
   r
   r   test_rgb  s$   zTestColorValue.test_rgbN)rx   ry   rz   r   rP   r   r
   r
   r
   r   r     s    	=r   c                   @   r   )TestURIValuec                 C   s   t j }d|jksJ d|jksJ d|jksJ |j|ju s"J d|_d|jks,J d|jks3J d|jks:J d|_d|jksDJ d|jksKJ d|jksRJ dS )zURIValue.__init__()url()r   r@   zurl(1)2zurl(2)N)r   r   URIValuer   r   uriURIr~   ro   r
   r
   r   r     s   
zTestURIValue.test_initc                 C   sn   t jddd}|jd jdjd }d|jksJ d|jks!J t j	d}d|jks.J d|jks5J d	S )
zURIValue.absoluteUriz!a { background-image: url(x.gif)}z/path/to/x.css)hrefr   zbackground-imagezx.gifz/path/to/x.gifz
url(x.gif)N)
r   rU   rV   rW   rX   rY   r   absoluteUrir   r   )r   re   rO   r
   r
   r   test_absoluteUri#  s   zTestURIValue.test_absoluteUric              	   C   s   ddddddddd}t | D ]M\}\}}}tj|}||jks%J ||jks,J ||jks3J ||jks:J tj }||_||jksIJ ||jksPJ ||jksWJ ||jks^J qt	j
jt	j
jt	j
jt	j
jt	j
jd}tj | _| | d	S )
zURIValue.cssText)r   r   r   )	url(/**/)z/**/r   )
url(/**/1)z/**/1r   )
url(1/**/)z1/**/r   )url(/**/1/**/)z	/**/1/**/r   )url(some.gif)zsome.gifr   )r   r   r   r   r   r   z  url(some.gif)  zurl(   some.gif  ))za()r@   zurl(zurl("zurl('N)rG   r   r   r   r   r   r~   r   r   rJ   rK   rL   r   r   r   r
   r
   r   rP   0  s:   
zTestURIValue.test_cssTextN)rx   ry   rz   r   r   rP   r
   r
   r
   r   r     s    r   c                   @   r{   )TestDimensionValuec                 C   sF   t j }d|jksJ d|jksJ d|ju sJ d|ju s!J dS )zDimensionValue.__init__()r   N)r   r   DimensionValuer   r   r~   	dimensionro   r
   r
   r   r   W  
   
zTestDimensionValue.test_initc                 C   sB  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/d0d1d2d3d4d5d6d7d8d9d:i}t | D ]*\}\}}}}tj|}||jksJ ||jksJ ||jksJ ||jksJ qtd;S )<zDimensionValue.cssTextr   )r   r   NNUMBER00z.0z0.0z+0z+00z+.0z+0.0z-0z-00z-.0z-0.0r@   )r@   r   Nr   z1.0)r@   r   Nr   1.1)r   皙?Nr   +1)r   r   Nr   z+1.0)r   r   Nr   +1.1)r   r   Nr   -1)r   Nr   z-1.0-1.1)r   皙Nr   0px)r   r   px	DIMENSIONr   )r   r   r   r   z1.0px)r   r   r   r   1.1px)r   r   r   r   -1px)r   r   r   r   -1.1px)r   r   r   r   +1px)r   r   r   r   1px1)r   r   px1r   0%)r   r   %
PERCENTAGE1%)r   r   r   r   1.1%)r   r   r   r   -1%)r   r   r   r   -1.1%)r   r   r   r   +1%)r   r   r   r   N)	rG   r   r   r   r   r   r~   r   r   )r   rM   ra   r   r   dr`   rO   r
   r
   r   rP   _  s   	
 !"#%zTestDimensionValue.test_cssTextNr   r
   r
   r
   r   r   V  s    r   c                   @   r{   )TestCSSFunctionc                 C   s8   t j }d|jksJ d|jksJ |jdksJ dS )zCSSFunction.__init__()r   FUNCTIONN)r   r   CSSFunctionr   r~   r   ro   r
   r
   r   r     r   zTestCSSFunction.test_initc                 C   st   dddddddd}t | D ]'\}\}}|d	u r|}tj|}||jks)J d
|jks0J ||jks7J qd	S )zCSSFunction.cssText)x(x)N)zx(X)N)zx(1, 2)N)z	x(1 /**/)x(1))z	x(/**/ 1)r   )zx(/**/ 1 /**/)r   )zx(/**/ 1, x /**/)zx(1, x))r   zX(  X  )zx(1,2)zx(1/**/)zx(/**/1)zx(/**/1/**/)zx(/**/1,x/**/)Nr   )rG   r   r   r   r   r   r~   r   )r   rM   fr   r   rO   r
   r
   r   rP     s    	zTestCSSFunction.test_cssTextNr   r
   r
   r
   r   r     r   r   c                   @   s2   e Zd Zdd Zdd Zejjdddd Zd	S )
TestCSSVariablec                 C   sF   t j }d|jksJ d|jksJ d|ju sJ d|ju s!J dS )zCSSVariable.__init__()r   VARIABLEN)r   r   CSSVariabler   r~   r   r   ro   r
   r
   r   r     r   zTestCSSVariable.test_initc              	   C   sz   ddddddddd	}t | D ])\}\}}}tj|}||jks%J d
|jks,J ||jks3J |jdu s:J qdS )zCSSVariable.cssText)r   r   N)zvar(X)XN)zvar(c1, rgb(14, 14, 14))c1zrgb(14, 14, 14))zvar(L, 1px)Lr   )z	var(L, 1)r   r@   )zvar(T, calc(2 * 1px))Tzcalc(2 * 1px))zvar(U, url(example.png))Uzurl(example.png))zvar(C, #f00)Cz#fff)r   z
VAR(  X  )zvar(c1,rgb(14,14,14))zvar( L, 1px )zvar(L,1)zvar(T, calc( 2 * 1px ))zvar(U, url( example.png ) )zvar(C, #f00 )r   N)	rG   r   r   r   r   r   r~   r   r   )r   rM   varr   r   	_fallbackrO   r
   r
   r   rP     s    zTestCSSVariable.test_cssTextnot implementedreasonc                 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 .cssValueTypeStringrg   zINhe\ritCSS_INHERIT)r@   r   1em1exr   1cm1mm1in1pt1pc1deg1rad1grad1ms1s1hz1khz1other"string"'string'r   r$   attr(a)z
counter(x)zrect(1px, 2px, 3px, 4px)zrgb(0, 0, 0)z#000r   r   zhsl(0, 0, 0)zhsla(0, 0, 0, 0)CSS_PRIMITIVE_VALUEz1px 1pxzred blue green xCSS_VALUE_LISTrh   r   r   N)
r   r   CSSValueCSSPrimitiveValueCSSValueListr   cssValueTypeStringgetattrcssValueTyper~   )r   rM   valuesr   clsr   rO   r
   r
   r   test_cssValueType  s*   !&/z!TestCSSVariable.test_cssValueTypeN)	rx   ry   rz   r   rP   rk   markxfailr  r
   r
   r
   r   r     s
    r   r   r   c                   @   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 )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  r  primitiveTypeprimitiveTypeStringrk   rl   rJ   rK   InvalidAccessErrgetCounterValuegetRGBColorValuegetRectValuegetStringValuero   r
   r
   r   r     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)CSS_UNKNOWNN)r   r   r   r  r  r  ro   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   r  )r   CSS_PERCENTAGE)emCSS_EMS)exCSS_EXS)r   CSS_PX)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)re   CSS_S)hzCSS_HZ)khzCSS_KHZ)other_dimensionCSS_DIMENSION)r   r   r   r   r   r   z%i%sN)r   r   r   r  r  r  )r   defsdimr   r   rO   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"
CSS_STRING))r?   z
url("a b")zurl(' ')CSS_URI))somez
or_anth-er	CSS_IDENT))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))r>   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  r  )r   r4  examplesr   r   rO   r
   r
   r   test_CSS_STRING_AND_OTHERI  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   r   r   r   r   r   r   r   z-1.1emr   r   254cmd   r   10mm254mmr   r   100in   10inr   )r   r   r   r   r   1000msr   r   1000hzr   
1DIMENSIONN)r   r   r   r  r  r  r  r  r  r   r  r"  r$  r&  r(  r*  r,  r-  r/  r1  r3  r   getFloatValueround)r   rO   rM   r   unitTyperd   valr
   r
   r   test_getFloatn  sp   








	







!
z#TestCSSPrimitiveValue.test_getFloatc                 C   sP  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 ]v}|\}}t j|}|| D ]d\}}}	}
t|	t j!r|
r| "|	|
|j#|| qt$%|	 |#|| W d   n	1 sw   Y  q|#|| |j&d |
ks	J |
d!krd}
|j'|
ksJ |(||	ks"J qqdS )6z!CSSPrimitiveValue.setFloatValue()r   r   r   r   z0.1r    r   g       @g @z2.1g z-2.1r@   r   r   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'r   2mm0mmz0.1mmg      @r"   3mmg@z3.1mmgz-3.1mmr   rF  rI  rG  g33333@z1828.8mmr   2ptr'   r   i  2khz))r   r   r   r  r  rJ   rK   r  r&  r(  r*  r-  r,  r1  r/  r3  r  r8  r9  r<  r;  r?  r@  r>  r=  r  r  r  r   r"  r$  rt   typesTypeTypeassertRaisesMsgsetFloatValuerk   rl   _valuer   rN  )r   VrM   testinitialTypeinitialValuer   setTypesetValuerd   r   r
   r
   r   test_setFloat  sB  
	$*06<BHNTZ`~
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)r   r$   )r   r$   )zurl(http://example.com)N)zurl('http://example.com')http://example.com)zurl("http://example.com")re  )zurl("http://example.com?)")zhttp://example.com?))r$   N)zattr(att-name)zatt-name)r   r   r   r  r  rk   rl   rJ   rK   r  r  r8  r9  r;  r<  )r   rO   r   rM   r`   rQ  rd   r
   r
   r   test_getString3  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"rS   )rS   r   zHCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_STRING' to 'CSS_URI')matchr   NzJCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_STRING' to 'CSS_IDENT'zICSSPrimitiveValue: Cannot coerce primitiveType 'CSS_STRING' to 'CSS_ATTR'newident)ri  r   zGCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_IDENT' to 'CSS_URI'zJCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_IDENT' to 'CSS_STRING'z"x"zHCSSPrimitiveValue: Cannot coerce primitiveType 'CSS_IDENT' to 'CSS_ATTR'zurl(old)()rj  r   ))rk  r   rE   )rE   r   r7  )r7  r   rD   )rD   r    )rl  r   a))rm  r   r   )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   r8  r  setStringValuer]  r  rk   rl   rJ   rK   r  r9  r;  r<  r  ro   r
   r
   r   test_setStringN  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   ro   r
   r
   r   test_typeRGBColor  s   z'TestCSSPrimitiveValue.test_typeRGBColorN)rx   ry   rz   r   r  r6  rC  rR  rd  rf  rq  rs  r
   r
   r
   r   r
    s    %/  
r
  )__doc__rY  xml.domrJ   rk   r   r   r   fixturer   r  usefixturesBaseTestCaser   r|   r   r   r   r   r   r	  r
  r
   r
   r
   r   <module>   s(    

  n)hF9c