o
    e                     @   s   d Z ddlZddlZddlZddlZG dd dZG dd dZG dd dZG d	d
 d
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.    Nc                   @   sL   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S )PropertyValueTestCasec                 C   s   t j | _d S )N)cssutilscssPropertyValuer)self r   ID:\Projects\ConvertPro\env\Lib\site-packages\cssutils/tests/test_value.pysetup
   s   zPropertyValueTestCase.setupc                 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)r   pvr   itemsixr   r   r   r	   	test_init   s    
zPropertyValueTestCase.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   )N   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   r-   zcalc(1  /  1px))calc(1 / 1px)r   r.   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))r/   r   r/   )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   r4   )	zcalc( calc(1px + 5px)*4 )zcalc(var(X))zcalc(2 * var(X))zcalc(2px + var(X))r0   r1   r2   r3   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)Nr5   z-1 -2 -3 -4z-1 2)Nr   z-1px red "x")Nr   za, b c	1px1 2% 3)r6   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   Z
do_equal_rZ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"PropertyValueTestCase.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   ZserifN)r   parseStringcssRulesstylegetPropertypropertyValuer   r   )r   r   sheetr   r   r   r	   	test_list,  s   

zPropertyValueTestCase.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   )Zgreezgree /* comment */z/* comment */greez/* comment */gree/* comment */z"/* comment */  gree  /* comment */z*/* comment *//**/  gree  /* comment *//**/N)r   rO   rP   rQ   ZgetPropertiesZvalid)r   trT   pr   r   r	   test_comments=  s   z#PropertyValueTestCase.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)rD   r   r   rO   rP   rQ   
background)r   rH   rJ   expsr   r   r	   test_incompleteW  s   
z%PropertyValueTestCase.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   Z	_readonlyr   pytestraisesrE   rF   ZNoModificationAllowedErrZ_setCssTextr   rJ   r   r   r	   test_readonly_  s   
z#PropertyValueTestCase.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__()r^   r_   N)	r   r   r   strevalrepr
isinstance	__class__r   )r   r   r\   s2r   r   r	   test_reprANDstrk  s   z%PropertyValueTestCase.test_reprANDstrN)__name__
__module____qualname__r
   r   rK   rU   rY   r]   rd   rk   r   r   r   r	   r   	   s      
r   c                   @      e Zd Zdd Zdd ZdS )ValueTestCasec                 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   typerc   r   r   r	   r   y     
zValueTestCase.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.cssTextr8   )r8   r8   HASH#123456)ru   ru   rt   r7   )r8   r7   rt   z  #112233  r!   )r!   r!   IDENTz  red  zred  z  redred-)rw   rw   rv   -red)rx   rx   rv   "red")ry   r!   STRING'red'z	  "red"  "red\"")r|   zred"rz   z'x\"')z"x\\""zx\"rz   "xy")r}   Zxyrz   N)rD   r   r   r   rq   r   rr   r   r   rH   rX   r   nrW   rJ   r   r   r	   rK     sP   	
zValueTestCase.test_cssTextNrl   rm   rn   r   rK   r   r   r   r	   rp   x      rp   c                   @   $   e Zd Zdd Zdd Zdd ZdS )ColorValueTestCasec                 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_VALUErr   r   r   nameZ	colorTyperc   r   r   r	   r     s   
zColorValueTestCase.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)r8   )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))	r8   r7   r9   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)rD   r   r   r   r   r   rr   r   r   rE   rF   rG   r   
do_raise_r)r   rH   rX   r   rJ   r   r   r	   rK     s   
	
zColorValueTestCase.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))Z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))Zaquar   r   r   r   N)	rD   r   r   r   r   r!   rV   bluealpha)r   rH   colorsZrgbarL   rI   r   r   r	   test_rgb  s$   zColorValueTestCase.test_rgbN)rl   rm   rn   r   rK   r   r   r   r   r	   r     s    	=r   c                   @   r   )URIValueTestCasec                 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URIrr   rc   r   r   r	   r   
  s   
zURIValueTestCase.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   rO   rP   rQ   rR   rS   r   ZabsoluteUrir   r   )r   r\   rJ   r   r   r	   test_absoluteUri  s   z!URIValueTestCase.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)rD   r   r   r   r   r   rr   r   r   rE   rF   rG   r   r   r~   r   r   r	   rK   )  s:   
zURIValueTestCase.test_cssTextN)rl   rm   rn   r   r   rK   r   r   r   r	   r   	  s    r   c                   @   ro   )DimensionValueTestCasec                 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   rr   	dimensionrc   r   r   r	   r   P  
   
z DimensionValueTestCase.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NUMBERZ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   Z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   Z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)	rD   r   r   r   r   r   rr   r   r   )r   rH   rX   r   r   drW   rJ   r   r   r	   rK   X  s   	
 !"#%z#DimensionValueTestCase.test_cssTextNr   r   r   r   r	   r   O  s    r   c                   @   ro   )CSSFunctionTestCasec                 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   rr   r   rc   r   r   r	   r     rs   zCSSFunctionTestCase.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   )rD   r   r   r   r   r   rr   r   )r   rH   fr   r   rJ   r   r   r	   rK     s    	z CSSFunctionTestCase.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 )
CSSVariableTestCasec                 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   rr   r   r   rc   r   r   r	   r     r   zCSSVariableTestCase.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)	rD   r   r   r   r   r   rr   r   r   )r   rH   varr   r   fallbackrJ   r   r   r	   rK     s    z CSSVariableTestCase.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 .cssValueTypeStringr^   zINhe\ritZCSS_INHERIT)r=   r   1em1exr   1cm1mm1in1pt1pc1deg1rad1grad1ms1s1hz1khzZ1other"string"'string'r   r!   attr(a)z
counter(x)zrect(1px, 2px, 3px, 4px)zrgb(0, 0, 0)z#000ru   r   zhsl(0, 0, 0)zhsla(0, 0, 0, 0)CSS_PRIMITIVE_VALUEz1px 1pxzred blue green xZCSS_VALUE_LISTr_   r   r   N)
r   r   ZCSSValueCSSPrimitiveValueZCSSValueListr   cssValueTypeStringgetattrcssValueTyperr   )r   rH   valuesr   clsr   rJ   r   r   r	   test_cssValueType  s*   !&/z%CSSVariableTestCase.test_cssValueTypeN)	rl   rm   rn   r   rK   ra   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 )CSSPrimitiveValueTestCasec                 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primitiveTypeStringra   rb   rE   rF   InvalidAccessErrZgetCounterValueZgetRGBColorValueZgetRectValuegetStringValuerc   r   r   r	   r   	  s$   



"z#CSSPrimitiveValueTestCase.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   rc   r   r   r	   test_CSS_UNKNOWN   s   z*CSSPrimitiveValueTestCase.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)ZemCSS_EMS)exCSS_EXS)r   CSS_PX)cmCSS_CM)mmCSS_MM)inCSS_IN)ptCSS_PT)ZpcCSS_PC)degCSS_DEG)ZradCSS_RAD)ZgradCSS_GRAD)msCSS_MS)r\   CSS_S)hzCSS_HZ)khzCSS_KHZ)Zother_dimensionCSS_DIMENSION)r   r   r   r   r   r   z%i%sN)r   r   r   r   r   r   )r   defsdimr   r   rJ   r   r   r	   $test_CSS_NUMBER_AND_OTHER_DIMENSIONS&  s   z>CSSPrimitiveValueTestCase.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))Z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))r9   zrgb(10%, 20%, 30%)r8   ru   CSS_RGBCOLOR))r;   zrgba(10%, 20%, 30%, 40%)CSS_RGBACOLOR))zU+0zu+ffffffz
u+000000-fzu+0-f, U+ee-ffZCSS_UNICODE_RANGEN)r   r   r   r   r   r   )r   r  Zexamplesr   r   rJ   r   r   r	   test_CSS_STRING_AND_OTHERB  s   z3CSSPrimitiveValueTestCase.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   Z254cmd   r   10mm254mmr   r   Z100in   Z10inr   )r   r   r   r   r   Z1000msr   r   Z1000hzr   Z
1DIMENSIONN)r   r   r   r   r   r   r   r   r   r  r   r  r  r  r  r	  r  r  r  r  r  r   getFloatValueround)r   rJ   rH   r   ZunitTyper[   valr   r   r	   test_getFloatg  sp   








	







!
z'CSSPrimitiveValueTestCase.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 floatZ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   Z2mmZ0mmz0.1mmg      @r   Z3mmg@z3.1mmgz-3.1mmr   r   r"  r!  g33333@z1828.8mmr   Z2ptr$   r   i  Z2khz))r   r   r   r   r   rE   rF   r   r  r  r	  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r   r   r   r  r  r  rh   typesZTypeTypeZassertRaisesMsgZsetFloatValuera   rb   _valuer   r#  )r   VrH   testZinitialTypeZinitialValuer   ZsetTypeZsetValuer[   r   r   r   r	   test_setFloat  sB  
	$*06<BHNTZ`~
z'CSSPrimitiveValueTestCase.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!   )ry   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   ra   rb   rE   rF   r   r   r  r  r  r  )r   rJ   r   rH   rW   r%  r[   r   r   r	   test_getString,  s.   

z(CSSPrimitiveValueTestCase.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"rN   )rN   rz   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)r0  rv   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)()r1  r   ))r2  r   rB   )rB   r   r  )r  r   rA   )rA   r    )r3  r   a))r4  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 typeZbrownzECSSPrimitiveValue: stringType 111 (UNKNOWN TYPE) is not a string typeo   z9CSSPrimitiveValue: stringType CSS_PX is not a string type)r   r   r   r  r   ZsetStringValuer(  r   ra   rb   rE   rF   r   r  r  r  r   rc   r   r   r	   test_setStringG  s  $z(CSSPrimitiveValueTestCase.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 )Z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   rc   r   r   r	   test_typeRGBColor  s   z+CSSPrimitiveValueTestCase.test_typeRGBColorN)rl   rm   rn   r   r   r  r  r&  r+  r-  r6  r7  r   r   r   r	   r     s    %/  
r   )__doc__Zxml.domrE   r   r'  ra   r   rp   r   r   r   r   r   r   r   r   r   r   r   r	   <module>   s       q)hF9c