
     hF                        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        Z	ej                  j                  d       G d dej                               Z G d	 d
      Z G d dej                        Z G d dej                        Z G d d      Z G d d      Z G d d      Zej                  j)                  d       G d d             Zy)z:Testcases for cssutils.css.CSSValue and CSSPrimitiveValue.    N   )basetestc                 ^    t         j                  j                         | j                  _        y )N)cssutilscssPropertyValueinstancer)requests    Y/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/tests/test_value.pyset_r_property_valuer      s    !335G    r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestPropertyValuec                 0   t         j                  j                         }d|j                  k(  sJ d|j                  k(  sJ d|j
                  k(  sJ d}g d}t         j                  j                  |      }||j                  k(  sJ dt        |      k(  sJ d|j                  k(  sJ t        |      D ]  \  }}|j                  ||   k(  rJ  t        |      D ]9  \  }}|||   j                  k(  sJ ||j                  |      j                  k(  r9J  y)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   s          r   	test_initzTestPropertyValue.test_init   s   \\'')RZZBII~~RXX~~,:\\''0"**$$$CG||BII~~ bMDAq99a((( " !'GAt2a5==(((2771:----- (r   c                 b   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        |j                               D ]c  \  }\  }}}||}||}t        j                  j	                  |      }||j
                  k(  sJ ||j                  k(  sJ ||j                  k(  rcJ  i dAdBdCdDdEdDdFdGdHdIdJdIdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdc}t        |j                               D ]M  \  }\  }}||}t        j                  j	                  |      }||j
                  k(  sJ ||j                  k(  rMJ  i 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}| j                  |       g dâ}| j                  |t        j                  j                         y@)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   r0   calc(-1))Nr   r1   calc(+1))Nr   r2   zcalc(1  +   1px))calc(1 + 1px)r   r3   calc(1 - 1px))Nr   r4   zcalc(1*1px))calc(1 * 1px)r   r5   zcalc(1  /  1px))calc(1 / 1px)r   r6   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))r7   r   r7   )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   r<   )	zcalc( calc(1px + 5px)*4 )zcalc(var(X))zcalc(2 * var(X))zcalc(2px + var(X))r8   r9   r:   r;   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)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-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   s          r   test_cssTextzTestPropertyValue.test_cssText+   s   ?
?
??
 O?
 $	?

 )?
 ??
 >?
 1?
  !5?
 1?
 (?
 -?
 (?
 -?
 > @?
* ++?
, 1-?
. 1/?
0 /1?
2 33?
4 -5?
6 -7?
8 -9?
:  E;?
< 7=?
> @??
@ DA?
B AC?
D  EE?
F AG?
H  EI?
J BK?
L  !FM?
N ( *O?
X*
 , /"1;!?%G'KGu?
@ %)$7 G[aayy++G4B

?"?"))###= = %8
~
y
 9
 I	

 I
 i
 )
  !9
 n
 L
 ]
 n
 (
 (
 
  (!
" n#
$ 3#>'
* "&ekkm!4GXay++G4B

?"?"))### "5V
yV
 vV
 .	V

 %nV
 /V
 +,>V
 ,V
  4V
 iV
 iV
 V
 V
 !-V
  *!V
" :;h#V
$ 67`%V
& +,E'V
( -)V
, ^-V
. #$7/V
0 12S1V
2  !43V
4 +,D5V
6 CDz7V
@ 5AV
B 
CV
F hGV
H hIV
J KV
L MV
N HOV
P 
QV
R 
SV
T 
UV
V NWV
X ,YV
\ ]V
^ 5_V
` UaV
b 6cV
d VeV
f VgV
h viV
j 5kV
l UmV
n UoV
p uqV
t juV
v zwV
x zyV
z 
{V
| !"3}V
@ {AV
B CV
D EV
F GV
J {KV
L MV
N OV
P QV
T  !3UV
V  !3WV
X $%7YV
\  5]V
^ /0E_V
` laV
b 89\cV
f LgV
j ./QkV
n 	C
H 	UCGG$5$56r   c                    d}t        j                  |      }|j                  d   j                  j	                  d      j
                  }|j                  dk(  sJ |d   j                  dk(  sJ t        j                  d      }|j                  d   j                  j	                  d      j
                  }d|j                  k(  sJ |d   j                  dk(  sJ |d	   j                  d
k(  sJ |d   j                  dk(  sJ y)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   s       r   	test_listzTestPropertyValue.test_list3  s     8$$S)^^A$$009GGxx++++!u{{.... $$%JK^^A$$00?MMBII~~!u{{c!!!!u{{c!!!!u{{g%%%r   c                 `   dD ]R  }t        j                  d|z        }|j                  d   j                  j	                         d   }|j
                  rRJ  dD ]R  }t        j                  d|z        }|j                  d   j                  j	                         d   }|j
                  sRJ  y)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   r[   r\   r]   getPropertiesvalid)r   tr`   ps       r   test_commentszTestPropertyValue.test_commentsD  s    
A (()=)ABEq!''557:A77N7

A (()=)ABEq!''557:Aww;
r   c                     ddd}t        |j                               D ]G  \  }}t        j                  d|z        }|j                  d   j
                  j                  }||k(  rGJ  y)zPropertyValue (incomplete)rD   )zurl("azurl(aza { background: %sr   N)rL   r    r   r[   r\   r]   
background)r   rR   rT   expss        r   test_incompletez!TestPropertyValue.test_incomplete^  s_    #h75;;=)FAs$$%9A%=>A

1##..A8O8 *r   c                 n   t         j                  j                  d      }d|j                  u sJ t         j                  j                  dd      }d|j                  u sJ 	 t        j                  t        j                  j                        5  |j                  d       ddd       y# 1 sw Y   
xY w)zPropertyValue._readonlyinheritr   FT)r   readonlyr"   N)r   r   r   	_readonlyr   pytestraisesrO   rP   NoModificationAllowedErr_setCssTextr   rT   s     r   test_readonlyzTestPropertyValue.test_readonlyf  s    LL&&y&9###LL&&y4&Hq{{"""]]377;;<MM# = =<s   B++B4c                     d}t         j                  j                  |      }|t        |      v sJ t	        t        |            }t        ||j                        sJ ||j                  k(  sJ y)z$PropertyValue.__repr__(), .__str__()rp   rq   N)	r   r   r   strevalrepr
isinstance	__class__r   )r   r   rm   s2s       r   test_reprANDstrz!TestPropertyValue.test_reprANDstrr  sc    LL&&w&7#a&   $q']"akk***"**$$$r   N)
__name__
__module____qualname__r#   rU   ra   ri   rn   ry   r    r   r   r   r      s'    ..F7P&"4
$
%r   r   c                       e Zd Zd Zd Zy)	TestValuec                     t         j                  j                         }d|j                  k(  sJ d|j                  k(  sJ d|j
                  u sJ y)zValue.__init__()r   N)r   r   Valuer   r   typerx   s     r   r#   zTestValue.test_init  sD    LL QYYQWW}}qvv~~r   c                 V   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        |j                               D ][  \  }\  }}}t        j                  j	                  |      }||j
                  k(  sJ ||j                  k(  sJ ||j                  k(  r[J  y)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)rL   r    r   r   r   r   r   r   r   rR   rh   r
   nrg   rT   s          r   rU   zTestValue.test_cssText  s<   
,
5
 2
 6	

 *
 .
 ,
 ,
 -
 -
 /
 /
 3
 7
 3
 #
. !/LAy1a""1%A		>!>;;<<	 0r   Nr   r   r   r#   rU   r   r   r   r   r     s     r   r   c                       e Zd Zd Zd Zd Zy)TestColorValuec                     t         j                  j                         }|j                  |j                  k(  sJ d|j
                  k(  sJ d|j                  k(  sJ d|j                  k(  sJ |j                  J y)zColorValue.__init__()r   transparentN)	r   r   
ColorValueCOLOR_VALUEr   r   r   name	colorTyperx   s     r   r#   zTestColorValue.test_init  sl    LL##%}}&&&QYYQWW}}&&&{{"""r   c                    dddddddddd		}t        |j                               D ]  \  }\  }t        j                  j	                  |      }|j
                  |j                  k(  sJ ||j                  k(  sJ ||j                  k(  sJ t        j                  j	                         }||_        |j
                  |j                  k(  sJ ||j                  k(  sJ ||j                  k(  rJ  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                  j	                         | _        | j                  |       y)zColorValue.cssText)r@   )rB   )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?   rA   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)rE   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)rL   r    r   r   r   r   r   r   r   rO   rP   rQ   r
   
do_raise_r)r   rR   rh   r
   rT   s        r   rU   zTestColorValue.test_cssText  s      +11 73/"9
 EKKM*GAt''*A==AFF***		>!><<'')AAI==AFF***		>!><< +
""
""
 377$$
 SWW&&	

 ))
 **
 CGG--
 377,,
 sww00
 cgg//
 SWW..
  1 1
 377,,
 cgg//
 sww00
  !#''"3"3!
" sww00#
$ !WW..''++77,,GG--GG--!$!2!2 # 1 1!$!2!2"%''"3"3"%''"3"37
: ((*r   c           	      H   ddddddddd	}t        |j                               D ]{  \  }}|D ]q  }t        j                  j	                  |      }|j
                  |d
   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  rqJ  } y)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)	rL   r    r   r   r   r)   rc   bluealpha)r   rR   colorsrgbarW   rS   s         r   test_rgbzTestColorValue.test_rgb  s     .@%7P  @PBT1=))
, !/LFDLL++E2uuQ'''ww$q')))vva(((ww$q')))   0r   N)r   r   r   r#   rU   r   r   r   r   r   r     s    #;z*r   r   c                       e Zd Zd Zd Zd Zy)TestURIValuec                    t         j                  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(  sJ d|j                  k(  sJ d|_        d|j                  k(  sJ d|j
                  k(  sJ d|j                  k(  sJ y)zURIValue.__init__()url()r   rE   zurl(1)2zurl(2)N)r   r   URIValuer   r   uriURIr   rx   s     r   r#   zTestURIValue.test_init  s    LL!!#!))###QWW}}QUU{{uuagg~~aee||199$$$agg~~aee||199$$$r   c                 b   t        j                  dd      }|j                  d   j                  j	                  d      j
                  d   }d|j                  k(  sJ d|j                  k(  sJ t         j                  j                  d      }d|j                  k(  sJ d|j                  k(  sJ y	)
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   r[   r\   r]   r^   r_   r   absoluteUrir   r   )r   rm   rT   s      r   test_absoluteUrizTestURIValue.test_absoluteUri#  s      /6F
 JJqM++,>?MMaP!%%1==000LL!!,/!%%!--'''r   c           	      d   ddddddddd}t        |j                               D ]  \  }\  }}}t        j                  j	                  |      }||j
                  k(  sJ ||j                  k(  sJ ||j                  k(  sJ ||j                  k(  sJ t        j                  j	                         }||_        ||j
                  k(  sJ ||j                  k(  sJ ||j                  k(  sJ ||j                  k(  rJ  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  d}t        j                  j	                         | _        | j                  |       y	)
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()rE   zurl(zurl("zurl('N)rL   r    r   r   r   r   r   r   r   rO   rP   rQ   r
   r   r   s          r   rU   zTestURIValue.test_cssText0  s]    *588DA!E"F

 !/LAy1a%%a(A		>!>;;<<::%%'AAI		>!>;;<<:: 0 77$$""GG%%WW&&gg''
 &&(r   N)r   r   r   r#   r   rU   r   r   r   r   r     s    %$(#r   r   c                       e Zd Zd Zd Zy)TestDimensionValuec                     t         j                  j                         }d|j                  k(  sJ d|j                  k(  sJ d|j
                  u sJ d|j                  u sJ y)zDimensionValue.__init__()r   N)r   r   DimensionValuer   r   r   	dimensionrx   s     r   r#   zTestDimensionValue.test_initW  sV    LL'')QYYQWW}}qvv~~q{{"""r   c                    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        |j                               D ]m  \  }\  }}}}t        j                  j	                  |      }||j
                  k(  sJ ||j                  k(  sJ ||j                  k(  sJ ||j                  k(  rmJ  y;)<zDimensionValue.cssTextr   )r   r   NNUMBER00z.0z0.0z+0z+00z+.0z+0.0z-0z-00z-.0z-0.0rE   )rE   r   Nr   z1.0)rE   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)	rL   r    r   r   r   r   r   r   r   )r   rR   rh   r
   r   drg   rT   s           r   rU   zTestDimensionValue.test_cssText_  sN   $
)$
*$
 *$
 +	$

 *$
 +$
 +$
 ,$
 *$
 +$
 +$
 ,$
 )$
 -$
 /$
  +!$
" /#$
$ 1%$
& ,'$
( .)$
* 2+$
, .-$
. 0/$
0 41$
2 63$
4 35$
6 97$
8 29$
: 3;$
< .=$
> .?$
@ 4A$
B 1C$
D 7E$
F 0G$
J  $EKKM2OA|1a++A.A		>!>;;<<###  3r   Nr   r   r   r   r   r   V  s    #-$r   r   c                       e Zd Zd Zd Zy)TestCSSFunctionc                     t         j                  j                         }d|j                  k(  sJ d|j                  k(  sJ |j
                  dk(  sJ y)zCSSFunction.__init__()r   FUNCTIONN)r   r   CSSFunctionr   r   r   rx   s     r   r#   zTestCSSFunction.test_init  sF    LL$$&QYYQVV###ww"}}r   c                    dddddddd}t        |j                               D ]^  \  }\  }}||}t        j                  j	                  |      }||j
                  k(  sJ d
|j                  k(  sJ ||j                  k(  r^J  y	)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   )rL   r    r   r   r   r   r   r   )r   rR   fr   r   rT   s         r   rU   zTestCSSFunction.test_cssText  s     #&'--6>
 $(#6A}((+Aaii''''''AGG### $7r   Nr   r   r   r   r   r     s    $r   r   c                   \    e Zd Zd Zd Zej                  j                  d      d        Zy)TestCSSVariablec                     t         j                  j                         }d|j                  k(  sJ d|j                  k(  sJ d|j
                  u sJ d|j                  u sJ y)zCSSVariable.__init__()r   VARIABLEN)r   r   CSSVariabler   r   r   r   rx   s     r   r#   zTestCSSVariable.test_init  sV    LL$$&QYYQVV###qvv~~qwwr   c           	      $   ddddddddd	}t        |j                               D ]i  \  }\  }}}t        j                  j	                  |      }||j
                  k(  sJ d
|j                  k(  sJ ||j                  k(  sJ |j                  iJ  y)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   rE   )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)	rL   r    r   r   r   r   r   r   r   )r   rR   varr   r   	_fallbackrT   s          r   rU   zTestCSSVariable.test_cssText  s     ,/&
 9/'V,
 ;!
$ 04EKKM/B+C+'4((-Aaii''''''166>!>77?"? 0Cr   not implementedreasonc                    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 ]  \  }}}|D ]v  }t         j                  j                  |	      }|d
k(  rd}||j
                  k(  sJ ||j                  k(  sJ t        ||      |j                  k(  sJ |t        |      k(  rvJ   y)z)CSSValue.cssValueType .cssValueTypeStringrp   zINhe\ritCSS_INHERIT)rE   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_LISTrq   r  r  N)
r   r   CSSValueCSSPrimitiveValueCSSValueListr   cssValueTypeStringgetattrcssValueTyper   )r   rR   valuesr   clsr   rT   s          r   test_cssValueTypez!TestCSSVariable.test_cssValueType  s     %}hll6K6KL B &..G$L ./ ))O.
^ "'FD#LL))%)8J&&E		)))q33333q$'1>>999d1g~%~   "'r   N)	r   r   r   r#   rU   rt   markxfailr"  r   r   r   r   r     s3    #8 [[/0:& 1:&r   r   r  r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestCSSPrimitiveValuec                    t         j                  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        j                  t        j                  j                        5  |j                          ddd       t        j                  t        j                  j                        5  |j!                          ddd       t        j                  t        j                  j                        5  |j#                          ddd       t        j                  t        j                  j                        5  |j%                          ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   yxY w)zCSSPrimitiveValue.__init__()rE   r  
CSS_NUMBERN)r   r   r  r   r  r  r  r(  primitiveTypeprimitiveTypeStringrt   ru   rO   rP   InvalidAccessErrgetCounterValuegetRGBColorValuegetRectValuegetStringValuerx   s     r   r#   zTestCSSPrimitiveValue.test_init  s;   LL**3/aii$$666$(<(<<<<||q...q44444
 ]]377334 5]]377334  5]]377334NN 5]]377334 54 54444444s0   6F"<F.F:G"F+.F7:GGc                     t         j                  j                  d      }|j                  |j                  k(  sJ d|j
                  k(  sJ y)zCSSPrimitiveValue.CSS_UNKNOWNzexpression(false)CSS_UNKNOWNN)r   r   r  r1  r)  r*  rx   s     r   test_CSS_UNKNOWNz&TestCSSPrimitiveValue.test_CSS_UNKNOWN'  sA    LL**+>?}}/// 5 5555r   c                     g d}|D ]\  \  }}dD ]R  }t         j                  j                  d||fz        }||j                  k(  sJ t	        ||      |j
                  k(  rRJ  ^ y)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)rm   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   rT   s         r   $test_CSS_NUMBER_AND_OTHER_DIMENSIONSz:TestCSSPrimitiveValue.test_CSS_NUMBER_AND_OTHER_DIMENSIONS-  sm    
( IC.LL226QH3DEq44444q$'1??::: / r   c                     g d}|D ]W  \  }}|D ]M  }t         j                  j                  |      }t        ||      |j                  k(  sJ ||j
                  k(  rMJ  Y y)z,CSSPrimitiveValue.CSS_STRING .. CSS_RGBCOLOR)	))z""''z"some thing"z' A\ND 'za, bz"a", "b"
CSS_STRING))rD   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))rA   zrgb(10%, 20%, 30%)r@   r   CSS_RGBCOLOR))rC   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   rS  examplesr   r"   rT   s         r   test_CSS_STRING_AND_OTHERz/TestCSSPrimitiveValue.test_CSS_STRING_AND_OTHERI  sd    
: #NHdLL2215q$'1??:::q44444  #r   c                    t         j                  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 ]N  }||_        ||   \  }}|j-                  |      }||j                  |j                  fv rt/        |      }||k(  rNJ  y)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(  r4  r6  r8  r9  r;  r?  r=  rA  rC  rE  rG  rI  rK  rL  rN  rP  rR  r   getFloatValueround)r   rT   rR   r   unitTyperl   vals          r   test_getFloatz#TestCSSPrimitiveValue.test_getFloatn  sR   
 LL**51 
!,," 
Q\\4( 
 1##Q' 
 A$$b)	 

 AIIq> 
 qyy$' 
 AIIq> 
 AHHa= 
 AHHa= 
 ahh_ 
 AHHa= 
 QXXqM 
 ahh^ 
 AHHa= 
  ahh_! 
" QXXsO# 
$ AHHa=% 
& HHa=YYNYYNjj!_HHa=wwl77A,HHa=yy!nYYN??A.? 
B GAI!'NMHc//(+CAHHahh//Cj#:: r   c                    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|j0                  dt
        j                  j                  df|j2                  dt
        j                  j                  df|j4                  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|j6                  dd*d+f|j8                  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                  j                  |      }||   D ]  \  }}}	}
t?        |	t@        jB                        rS|
r | jE                  |	|
|jF                  ||       DtI        jJ                  |	      5  |jG                  ||       ddd       u|jG                  ||       |jL                  d   |
k(  sJ |
d!k(  rd}
|jN                  |
k(  sJ |jQ                  |      |	k(  rJ   y# 1 sw Y   xY w)6z!CSSPrimitiveValue.setFloatValue()r   r   r   r   z0.1r%   r   g       @g @z2.1g z-2.1rE   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   rg  rj  rh  g33333@z1828.8mmr  2ptr,   r  i  2khz))r   r   r  r(  r9  rO   rP   r+  rE  rG  rI  rL  rK  rP  rN  rR  r=  rX  rY  r\  r[  r_  r`  r^  r]  r6  r8  r;  r?  rA  rC  r~   typesTypeTypeassertRaisesMsgsetFloatValuert   ru   _valuer   ro  )r   VrR   testinitialTypeinitialValuer   setTypesetValuerl   r   s              r   test_setFloatz#TestCSSPrimitiveValue.test_setFloat  s   LL** \\1 _  q!S)_  sC/	_ 
 r1c*_  q!S)_  sAs+_  sC/_  tT62_  sAs+_  uc51_  1cgg66=_  Asww77>_  Asww77>_   Q 8 8$?!_ " !SWW55t<#_ $ 1cgg66=%_ & Asww77>'_ ( 1cgg66=)_ * !SWW%=%=tD+_ , 1cgg66=-_ 0 LLGG,,F	/_ < LLGG,,G	;_ H LLGG,,R	G_ T IIGG,,O	S_ ` JJGG,,P	__ l KKGG,,Q	k_ x NNGG,,T	w_ D OOGG,,U	C_ P JJGG,,P	O_ \ MMGG,,S	[_ h IIGG,,^	g_ t IIGG,,^	s_ @ XXu1a'1a'3W-2r5)35)3W-4x01b&)2sG,1fj11cgg66=q#''":":DA  XXu1a'2q%(q#''":":DAAsww77>1cgg66=  YY4F+q#''":":DAAsww77>1cgg66=	"o}
| D(,%K//=B38;/3c5>>2,,"*:*:GX $]]3/,,Wh? 0/ $$Wh799Q<7222%'"%::000++K8C??? 4?  0/s   ]]c                    t         j                  j                  d      }|j                  |j                  k(  sJ t        j                  t        j                  j                        5  |j                          ddd       t         j                  j                  }|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d	|j                  d
i}|D ]S  }||   \  }}|s|}t         j                  j                  |      }|j                  |k(  sJ |j                         |k(  rSJ  y# 1 sw Y   xY w)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")r  )zurl("http://example.com?)")zhttp://example.com?))r)   N)zattr(att-name)zatt-name)r   r   r  r)  r9  rt   ru   rO   rP   r+  r/  rX  rY  r[  r\  )r   rT   r   rR   rg   rr  rl   s          r   test_getStringz$TestCSSPrimitiveValue.test_getString3  s!   LL**51!((***]]377334 5 \\++MM+MM+JJ9JJKJJKJJOLL-KK7	
 AQxHC..s3A??a'''##%,,,  54s   (EEc                    t         j                  j                  d      }|j                  |j                  k(  sJ |j                  |j                  d       d|j                  k(  sJ d|j                         k(  sJ t        j                  t        j                  j                  d      5  |j                  |j                  d       ddd       t        j                  t        j                  j                  d      5  |j                  |j                  d       ddd       t        j                  t        j                  j                  d	      5  |j                  |j                  d       ddd       t         j                  j                  d
      }|j                  |j                  d       |j                  |j                  k(  sJ d|j                  k(  sJ d|j                         k(  sJ t        j                  t        j                  j                  d      5  |j                  |j                  d       ddd       t        j                  t        j                  j                  d      5  |j                  |j                  d       ddd       t        j                  t        j                  j                  d      5  |j                  |j                  d       ddd       t         j                  j                  d      }|j                  |j                  d       d|j                  k(  sJ d|j                         k(  sJ |j                  |j                  d       d|j                  k(  sJ d|j                         k(  sJ |j                  |j                  d       d|j                         k(  sJ d|j                  k(  sJ |j                  |j                  d       d|j                         k(  sJ d|j                  k(  sJ |j                  |j                  d       d|j                         k(  sJ d|j                  k(  sJ |j                  |j                  d       d|j                  k(  sJ d|j                         k(  sJ |j                  |j                  d       d|j                  k(  sJ d|j                         k(  sJ |j                  |j                  d        |j                  |j                  k(  sJ d!|j                  k(  sJ d |j                         k(  sJ t        j                  t        j                  j                  d"      5  |j                  |j                  d       ddd       t        j                  t        j                  j                  d#      5  |j                  |j                  d       ddd       t        j                  t        j                  j                  d$      5  |j                  |j                  d       ddd       t         j                  j                  d%      }|j                  |j                  d        |j                  |j                  k(  sJ d |j                         k(  sJ t        j                  t        j                  j                  d&      5  |j                  |j                  d       ddd       t        j                  t        j                  j                  d'      5  |j                  |j                  d       ddd       t        j                  t        j                  j                  d(      5  |j                  |j                  d       ddd       t        j                  t        j                  j                  d)      5  |j                  dd*       ddd       t        j                  t        j                  j                  d+      5  |j                  d,d*       ddd       t        j                  t        j                  j                  d-      5  |j                  |j                   d*       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   2xY w# 1 sw Y   oxY w# 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   PxY w# 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ExY w# 1 sw Y   xY w# 1 sw Y   yxY w).z"CSSPrimitiveValue.setStringValue()z"a"rY   )rY   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)r  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)()r  r   ))r  r   rJ   )rJ   r   rW  )rW  r   rI   )rI   r    )r  r   a))r  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  rX  r)  setStringValuer  r/  rt   ru   rO   rP   r+  rY  r[  r\  r9  rx   s     r   test_setStringz$TestCSSPrimitiveValue.test_setStringN  s2    LL**51||q...	s+!((***a&&((((]]GG$$\
 QYY,	

 ]]GG$$^
 Q[[#.	

 ]]GG$$]
 QZZ-	
 LL**51	g.{{aoo---!QXX---!**,,,,]]GG$$[
 QYY,	

 ]]GG$$^
 Q\\51	

 ]]GG$$\
 QZZ-	
 LL**:6	C(qxx'''a&&((((	C(qxx'''a&&((((	C(a&&((((qxx'''	D)q''))))(((	C(a&&((((qxx'''	C(qxx'''a&&((((	D)(((q''))))	C(yyAOO+++qxx'''a&&((((]]GG$$[
 Q[[#.	

 ]]GG$$\
 Q\\51	

 ]]GG$$Z
 QZZ-	
 LL**;7	S)zzQ__,,,a&&((((]]GG$$\
 Q[[#.	

 ]]GG$$]
 Q\\51	

 ]]GG$$Z
 QYY,	
 ]]GG$$Y
 S'*	
 ]]GG$$Y
 S'*	
 ]]GG$$M
 QXXw/	
 
w
 


 


 

 


 


 
R
 


 


 

 


 


 

 

 

 
s   ,b bb!$b.8b;c*c>c"c/c<%d	9dd#d0!d=bb!b+.b8;ccc"c,/c9<d	dd #d-0d:=ec                 "   t         j                  j                  d      }|j                  |j                  k(  sJ d|j
                  k(  sJ t         j                  j                  d      }|j                  |j                  k(  sJ d|j
                  k(  sJ t         j                  j                  d      }|j                  |j                  k(  sJ d|j
                  k(  sJ t         j                  j                  d      }|j                  |j                  k(  sJ t         j                  j                  d      }|j                  |j                  k(  sJ t         j                  j                  d      }|j                  |j                  k(  sJ y)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   rx   s     r   test_typeRGBColorz'TestCSSPrimitiveValue.test_typeRGBColor  s7   LL**?;~~000!))+++LL**?;~~000!))+++LL**+=>~~000!QYY...LL**+AB~~000LL**=9~~000LL**+@A~~000r   N)r   r   r   r#   r2  rU  rc  rs  r  r  r  r  r   r   r   r&  r&    s6    .6;8#5J-^T@l-6G0R1r   r&  )__doc__r{  xml.domrO   rt   r   r   r   fixturer   r#  usefixturesBaseTestCaser   r   r   r   r   r   r   r$  r&  r   r   r   <module>r     s    @      6 6 /0i%-- i% 1i%X&  & Re*X** e*PC8(( CL6$ 6$r$ $8`& `&F +,[1 [1 -[1r   