
     hV                     V    d Z ddlZddlZddlZddlmZ  G d dej                        Zy)zBTestcases for cssutils.css.cssstyledelaration.CSSStyleDeclaration.    N   )basetestc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestCSSStyleDeclarationc                 J    t         j                  j                         | _        y N)cssutilscssCSSStyleDeclarationr)selfs    g/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/tests/test_cssstyledeclaration.pysetup_methodz$TestCSSStyleDeclaration.setup_method   s    113    c                 P   t         j                  j                         }d|j                  k(  sJ d|j                  k(  sJ |j
                  J t         j                  j                  d      }d|j                  k(  sJ d|j                  d      k(  sJ t         j                  j                         }t         j                  j                  |      }||j
                  k(  sJ t         j                  j                  d	|      }d	|j                  k(  sJ ||j
                  k(  sJ y)
zCSSStyleDeclaration.__init__() r   Nleft: 0cssText0left)
parentRuletop: 0)r	   r
   r   r   lengthr   getPropertyValueCSSStyleRule)r   ssheets      r   	test_initz!TestCSSStyleDeclaration.test_init   s    LL,,.QYYAHH}}||###LL,,Y,?AII%%%a((0000))+LL,,,>$$$ LL,,Xu=199$$$$$$r   c                 J   t         j                  j                         }d\  }}}|||<   |||   k(  sJ ||j                  |      k(  sJ ||j	                  |      j
                  k(  sJ ||j	                  |      j                  k(  sJ d\  }}}||f||<   |||   k(  sJ |||j                            k(  sJ t        j                  t              5  |j                  |       ddd       ||j	                  |      j
                  k(  sJ ||j	                  |      j                  k(  sJ d\  }}}|||<   |||   k(  sJ ||j	                  |      j
                  k(  sJ ||j	                  |      j                  k(  sJ ||= d||   k(  sJ d|d   k(  sJ y# 1 sw Y   xY w)zCSSStyleDeclaration[CSSName])colornamer   )zUnKnown-ProPERTYzunknown value	importantN)item1r   r   z	never set)r	   r
   r   __getattribute__getPropertyvalueprioritylowerpytestraisesAttributeError)r   r   r"   r(   r)   s        r   
test_itemsz"TestCSSStyleDeclaration.test_items$   s   LL,,. 3eX$$**40000d+111111==.77777 PeX(#$$$**,''']]>*t$ +d+111111==.77777 /eX$$d+111111==.77777dGQtW}}Q{^### +*s   FF"c                 "   t         j                  j                  d      }dD ]@  }||v sJ |j                         |v sJ t         j                  j	                  |d      |v r@J  d|vsJ t         j                  j	                  dd      |vsJ y)z0CSSStyleDeclaration.__contains__(nameOrProperty)z
x: 1;\y: 2r   )xr0   yr1   r%   zN)r	   r
   r   upperProperty)r   r   tests      r   test__contains__z(TestCSSStyleDeclaration.test__contains__A   s    LL,,],C*D199::<1$$$<<((s3q888 + !||||$$S#.a777r   c                    t         j                  j                         }d|_        g }|D ]4  }|j	                  |j
                  |j                  |j                  f       6 t        |      dk(  sJ |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ |j                  dk(  sJ |j                  d      d	k(  sJ |j                  d      d
k(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ y)z&CSSStyleDeclaration.__iter__ and .item
            color: red; c\olor: blue; CO\lor: green;
            left: 1px !important; left: 0;
            border: 0;
           r   )zco\lorgreenr   r   )r   1pxr#      )borderr   r   r!   r   r=   
   r   N)r	   r
   r   r   appendliteralnamer(   r)   lenr   r$   )r   r   psps       r   test__iter__itemz(TestCSSStyleDeclaration.test__iter__itemK   s    LL,,.	 AIIq}}aggqzz:; 2w!||!u0000!u5555!u,,,, xx1}}vvayG###vvayF"""vvayH$$$vvbzRr   c                     t        j                  d      }ddgt        |j                               k(  sJ |d   dk(  sJ |d   dk(  sJ y)zCSSStyleDeclaration.keys()zx:1; x:2; y:1r0   r1   2r%   N)r	   
parseStylelistkeysr   r   s     r   	test_keysz!TestCSSStyleDeclaration.test_keysc   sN    0SzT!&&(^+++v}}v}}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dddddddddd	}dt         j                  j                  _        t	        |j                               D ]W  \  }}t        j                  d|z        }|d|z  }n
|dk7  rd|z  }||j                  d   j                  j                  k(  rWJ  y)zCSSStyleDeclaration parsezTOP:0r   ztop:0zc\olor: red; color:greenzcolor: greenzcolor:g\reenzcolor: g\reenzcolor:greenzcolor:green; colorzcolor:red;   color; color:greenzcolor:green; color:z color:red;   color:; color:greenz!color:green; color{;color:maroon}z,color:red; color{;color:maroon}; color:greenzFcolor: red;
voice-family: "\"}\"";
voice-family:inherit;
color: green;z#voice-family: inherit;
color: greenzwcol\or: blue;
                font-family: 'Courier New Times
                color: red;
                color: green;z/color: red; color: greenz/ color: red; color: greenz1px: red; color: greenz0: red; color: greenr   Nz
color: red)	z1px:: red; color: greenz$top: 0z$: 0z@x;
color: redz@x {
    }
color: redz/**/
color: redz/**/
color: red;
/**/z;color: redz;;color: red;;Fza { %s }z%sr   )
r	   serprefskeepAllPropertiesrH   itemsparseStringcssRulesstyler   )r   testsr5   expshs        r   
test_parsez"TestCSSStyleDeclaration.test_parsej   s   (
X(
 X(

 ((
 -(
 >(
 !.(
 .~(
 ">(
 /(
 0(
 ;N(
  9'(
(! #1/(
2 (3(
4 ).5(
6 %n7(
8 #N9(
: (6#'+ $'+'*O(
R 05,ekkm,ID#%%j4&78B{TkSj"++a...66666 -r   c                 d   t         j                  j                         }ddi}t        |j	                               D ]r  \  }}||_        dt         j                  j                  _        |d   |j
                  k(  sJ dt         j                  j                  _        |d   |j
                  k(  rrJ  y)zCSSStyleDeclaration serializeza:1 !important; a:2;b:1)za: 1 !important;
b: 1za: 1 !important;
a: 2;
b: 1Fr   Tr   N)	r	   r
   r   rH   rP   r   rM   rN   rO   r   r   rT   r5   rU   s        r   test_serializez&TestCSSStyleDeclaration.test_serialize   s    LL,,.% (
 ekkm,ID#AI38HLL0q6QYY&&&37HLL0q6QYY&&& -r   c                    d}t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  gfd} |t        j
                  |              |t        j                  d|z   dz         j                  d   j                          |t        j                  d|z   dz         j                  d   j                  d   j                         t        j
                  |      }d|d	<   ||j                  d	      j                  k(  sJ |j                  d
d       ||j                  d
      j                  k(  sJ y)zCSSStyleDeclaration.children()z"/*1*/color: red; color: green; @x;c                     t        | j                               D ])  \  }}|   t        |      k(  sJ |j                  | k(  r)J  y r   )	enumeratechildrentypeparent)r   ir0   typess      r   tz0TestCSSStyleDeclaration.test_children.<locals>.t   sB    !!**,/1Qx47***xx1}$} 0r   za {}r   z@media all {a {z}}r   r0   r1   r%   N)r	   r
   
CSSCommentr4   CSSUnknownRulerG   rQ   rR   rS   r'   r`   setProperty)r   rS   rc   r   rb   s       @r   test_childrenz%TestCSSStyleDeclaration.test_children   s-   4LL##LL!!LL!!LL''	
	%
 	
(

e
$%	(

uu}s2
3
<
<Q
?
E
EF	  !2U!:T!ABXaXa U		
 &#AMM#&-----	c3AMM#&-----r   c                    t         j                  j                         }ddddd}t        |j	                               D ]$  \  }}d|_        ||_        ||j
                  k(  r$J  t         j                  j                         }dddddddddd	dd
ddd}t        |j	                               D ]  \  }}||_        ||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                  d}| j                  |       y )!zCSSStyleDeclaration.cssTextr   /*x*/)r    z 	 
  rj   left: 0;r   left: 0 !importantzleft: 0;
top: 1zT/*1*/
/*2*/
left/*3*//*4*/: /*5*/ /*6*/ 0 /*7*/ /*8*/ !/*9*//*a*/important/*b*//*c*/z!/*1*/
left: 0;
/*2*/
top: 1 /*3*/z"/*1*/
left: 0;
/*2*/
top: 1;
/*3*/z6left: 0 !important;
margin: 1px 2px 3px 4px !importantz+left: 0 !important;
margin: 1px 2px 3px 4px);r   zleft:0z
 left : 0 rl   zleft: 0 !important zleft:0!importantzleft: 0; top: 1zM/*1*//*2*/left/*3*//*4*/:/*5*//*6*/0/*7*//*8*/!/*9*//*a*/important/*b*//*c*/;z/*1*/left: 0;/*2*/ top: 1/*3*/zleft:0; top:1;z/*1*/left: 0;/*2*/ top: 1;/*3*/z2left:0!important;margin:1px 2px 3px 4px!important;za
	 left
	 :
	 0
	 !
	 important
	 ;
	 margin
	 :
	 1px
	 2px
	 3px
	 4px;zcolor: #xyztopztop:ztop : ztop:!importantztop:!important;ztop:;ztop 0ztop 0;:z:0z:0;z:0!importantz:;z: ;z:!important;z: !important;)r   z0!importantz0!important;z0;
!importantz!important;N)
r	   r
   r   rH   rP   r   xmldom	SyntaxErr
do_raise_rrY   s        r   test_cssTextz$TestCSSStyleDeclaration.test_cssText   s    LL,,.bb7Cekkm,ID#"AIAI!))### - LL,,. #!#7 41 ^v.T0/WB{ bP#
& ekkm,ID#AI!))### -

377,,
377$$
 CGG%%
 cgg''	

 cgg//
 sww00
 SWW&&
 SWW&&
 cgg''
 ""
 #''##
 377$$
 CGG--
 #''##
 377$$
  CGG--!
" SWW..#
$ ""77,,GG--''##''++77,,/
2 	r   c                     t         j                  j                  d      }d|j                         k(  sJ d|j                  d      k(  sJ d|j                  d      k(  sJ y	)
z)CSSStyleDeclaration.getCssText(separator)a:1;b:2r   z
a: 1;
b: 2z	a: 1;b: 2r   	separatorza: 1;/*x*/b: 2rj   N)r	   r
   r   
getCssTextrJ   s     r   test_getCssTextz'TestCSSStyleDeclaration.test_getCssText  s_    LL,,Y,?...allRl88881<<'<#BBBBr   c                    t         j                  j                         }t         j                  j                         }||_        ||j                  k(  sJ t        j
                  d      }|j                  d   }|j                  }||j                  k(  sJ t        j
                  d      }|D ]  }|j                  j                  |k(  rJ  y)zCSSStyleDeclaration.parentRuleza{x:1}r   z
        @font-face {
            font-weight: bold;
            }
        a {
            font-weight: bolder;
            }
        @page {
            font-weight: bolder;
            }
        N)r	   r
   r   r   r   rQ   rR   rS   )r   r   r   dr   s        r   test_parentRulez'TestCSSStyleDeclaration.test_parentRule  s    LL,,.))+$$$$$X.NN1GGALL     

 A77%%*** r   c                 N   t         j                  j                         }d|_        |j	                  d      j                  dk(  sJ |j	                  d      j                  dk(  sJ |j	                  d      j                  dk(  sJ |j	                  d      j                  dk(  sJ y	)
zCSSStyleDeclaration.getPropertyr8   r!   zco\lor: greenzCOLO\rr   zleft: 1px !importantr=   z	border: 0N)r	   r
   r   r   r'   rJ   s     r   test_getPropertyz(TestCSSStyleDeclaration.test_getProperty/  s    LL,,.	
 }}W%--1AAAA}}Y'//3CCCC}}V$,,0GGGG}}X&..,>>>r   c                    t         j                  j                  d      }ddgg ddgdgddgddgd}|D ]w  }|\  }}||   }|j                  ||      }t	        |      t	        |      k(  sJ t        |      D ]2  \  }}	||   }
|	|
j                  |
j                  |
j                  fk(  r2J  y t         j                  j                  d      }d	d
j                  |D cg c]  }|j                   c}      k(  sJ yc c}w )z#CSSStyleDeclaration.getProperties()z"/*1*/y:0;x:a !important;y:1; \x:b;r   r1   r%   r   r0   ar#   ))r1   r   r   r   r   \xbr   r   ))NF)NT)r0   F)r   F)r0   T)r   Tza:0;b:1;a:1bar   N)r	   r
   r   getPropertiesrA   r]   r@   r(   r)   joinr"   )r   r   rT   r5   r"   allexpectedactualra   exr   rC   s               r   test_getPropertiesz*TestCSSStyleDeclaration.test_getProperties<  s   LL,,9 - 

 +,CD 334513CD35EF
 DID#T{H__T3/Fx=CK///"8,21IammQWWajjAAAA -  LL,,],Crww21233332s    C?
c                 H   t         j                  j                  d      }d|j                  d      j                  k(  sJ d|j                  d      j                  k(  sJ d|j                  dd      j                  k(  sJ d|j                  dd      j                  k(  sJ y)	z)CSSStyleDeclaration.getPropertyCSSValue()color: red;c\olor: greenr   r:   r!   c\olorredFN)r	   r
   r   getPropertyCSSValuer   rJ   s     r   test_getPropertyCSSValuez0TestCSSStyleDeclaration.test_getPropertyCSSValue\  s    LL,,5P,Q!//8@@@@@!//	:BBBBB--gu=EEEEE!//	5AIIIIIr   c                    t         j                  j                         }d|j                  d      k(  sJ |j	                  dd       d|j                  d      k(  sJ |j	                  dd       d|j                  d      k(  sJ t         j                  j                  d	      }d
|j                  d      k(  sJ d
|j                  d      k(  sJ d|j                  dd      k(  sJ d
|j                  dd      k(  sJ d
d
d
d
d
d}|D ];  }t         j                  j                  |	      }||   |j                  d      k(  r;J  y)z&CSSStyleDeclaration.getPropertyValue()r   unsetr   r   r=   z1px  solid  greenz1px solid greenr   r   r:   r!   r   r   F)zcolor: red; color: greenzc\olor: red; c\olor: greenzcolor: red; c\olor: greenz.color: red !important; color: green !importantz#color: green !important; color: redN)r	   r
   r   r   rg   )r   r   rT   r5   s       r   test_getPropertyValuez-TestCSSStyleDeclaration.test_getPropertyValuev  sT   LL,,.Q''0000	fc"a((0000	h 34 A$6$6x$@@@@LL,,5P,Q!,,W5555!,,Y7777**7E::::!,,Y>>>> *1+2*1?F4;
 D000>A;!"4"4W"==== r   c                    t         j                  j                         }d|j                  d      k(  sJ |j	                  ddd       d|j                  d      k(  sJ t         j                  j                  d      }d|j                  d	      k(  sJ d|j                  d
      k(  sJ d|j                  d	d      k(  sJ d|j                  d
d      k(  sJ y)z)CSSStyleDeclaration.getPropertyPriority()r   r   r   r   rq   r#   z+x: 1 !important;\x: 2;x: 3 !important;\x: 4r   r0   r   TFN)r	   r
   r   getPropertyPriorityrg   rJ   s     r   test_getPropertyPriorityz0TestCSSStyleDeclaration.test_getPropertyPriority  s    LL,,.Q**73333	fc<0a33F;;;;LL,,C - 
 a33C8888a33E::::a33C>>>>Q**5%8888r   c                    t         j                  j                         }d}||_        d|j	                  d      k(  sJ d|j                  k(  sJ ||_        d|j	                  dd      k(  sJ d|j                  d	      k(  sJ d|j	                  d
d      k(  sJ d|j                  k(  sJ ||_        d|j	                  d
d      k(  sJ d|j                  d	      k(  sJ d|j	                  dd      k(  sJ d|j                  k(  sJ y)z$CSSStyleDeclaration.removeProperty()z\x:0 !important; x:1; \x:2; x:3r   r0   r   3F	normalizez\x: 0 !important;\x: 2ry   r   z	x: 1;x: 3N)r	   r
   r   r   removePropertyr{   )r   r   r
   s      r   test_removePropertyz+TestCSSStyleDeclaration.test_removeProperty  s%   LL,,.0 	a&&s++++QYY 	a&&se&<<<<(ALL2L,FFFFa&&u&>>>>QYY	a&&u&>>>>q||b|9999a&&se&<<<<QYYr   c                 ,   t         j                  j                         }|j                  ddd       d|j	                  d      k(  sJ d|j                  d      k(  sJ |j                  dd       d|j	                  d      k(  sJ d|j                  d      k(  sJ |j                  dd       d|j	                  d      k(  sJ |j                  dd	       d	|j	                  d      k(  sJ |j                  dd
d       d
|j	                  d      k(  sJ d
|j	                  dd      k(  sJ d	|j	                  dd      k(  sJ |j                  ddd       d|j	                  d      k(  sJ d|j                  d      k(  sJ dddd}t        |j                               D ]y  \  }}t         j                  j                         }|\  }}}|j                  |||       ||j                  k(  sJ ||j	                  |      k(  sJ ||j                  |      k(  ryJ  t         j                  j                         }d|j                  k(  sJ d|_	        d|j                  k(  sJ d|_	        d|j                  k(  sJ d|_	        d|j                  k(  sJ y)z!CSSStyleDeclaration.setProperty()ro   r   rq   r#   r;   r   2pxz\top3px4pxFr   TOPz
!IMPORTANTr   rm   ))r   r   r   )r   r   r#   )LEFTr   r#   N)
r	   r
   r   rg   r   r   rH   rP   r   ro   )r   r   rT   r5   rU   nvrC   s           r   test_setPropertyz(TestCSSStyleDeclaration.test_setProperty  s   LL,,.	eS,/a((////a33E::::	eU#**51111Q**51111	eU#**51111	gu%**51111	gu6**51111**7E::::**5%8888 	
eS,/a((////a33E::::  )(<(<

 ekkm,ID#002AGAq!MM!Q"!))###**1------a0000 - LL,,.QUU{{aee||QUU{{QUU{{r   c                    t         j                  j                         }|j                  dd       t	        |j                  dd            dk(  sJ |j                  dd       t	        |j                  dd            dk(  sJ |j                  d      dk(  sJ |j                  ddd	       t	        |j                  dd            d
k(  sJ |j                  d      dk(  sJ y)z)CSSStyleDeclaration.setProperty(replace=)ro   r;   T)r   r   r   r   F)replacer<   N)r	   r
   r   rg   rA   r   r   rJ   s     r   test_setProperty2z)TestCSSStyleDeclaration.test_setProperty2  s    LL,,.	eU#1??5d?34999	eU#1??5d?34999!!%(E111	eUE21??5d?34999!!%(E111r   c                    t         j                  j                         }d|_        d|j                  k(  sJ dt        |j                        k(  sJ d|_        d|j                  k(  sJ dt        |j                        k(  sJ t         j                  j                         }|j                  ddd       d|j                  k(  sJ |j                  dd	       d|j                  k(  sJ |j                  d
d	       y)zCSSStyleDeclaration.lengthr   r   z-/*1*/left/*x*/:/*x*/0/*x*/;/*2*/ top: 1;/*3*/r<      ro   r   rq   r;   r   N)r	   r
   r   r   r   rA   seqrg   rJ   s     r   test_lengthz#TestCSSStyleDeclaration.test_length  s    LL,,. 	AHH}}CJC	AHH}}CJ LL,,.	eS,/AHH}}	eU#AHH}}	fe$r   c                 d   t         j                  j                         }|j                  ddd       d|j	                  d      k(  sJ d|j	                  d      k(  sJ d|j	                  d      k(  sJ d|j                  d      k(  sJ d|j                  d      k(  sJ d|j                  d      k(  sJ |j                  ddd       d|j                  d      k(  sJ |j                  ddd       d|j                  d      k(  sJ |j                  ddd       d|j                  d      k(  sJ y)	zCSSStyleDeclaration.XXX(name)ro   r;   rq   r   zT\opr#   r   N)r	   r
   r   rg   r   r   r   rJ   s     r   test_nameParameterz*TestCSSStyleDeclaration.test_nameParameter  s5   LL,,.	eUL1**51111**51111**73333a33E::::a33E::::a33G<<<<	eUL1((////	eUL1((////	eUL1((1111r   c                 X   t         j                  j                  d      }d|_        d|_        d|j                  k(  sJ d|j                  k(  sJ d|j                  d      k(  sJ d|j                  d      k(  sJ d|j                  k(  sJ |`d|j                  k(  sJ |`d	|j                  k(  sJ t        j                  t              5  |j                  d
d       ddd       |j                  d
d       t        j                  t              5  |j                  d
       ddd       t        j                  t              5  |j                  d
       ddd       d|j                  d
      k(  sJ d|j                  k(  sJ y# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   IxY w)z-CSSStyleDeclaration.$css2property get set delz(left: 1px;color: red; font-style: italicr   r:   normalr!   z
font-stylez+left: 1px;
color: green;
font-style: normalzleft: 1px;
font-style: normalz	left: 1pxUNKNOWNr   Nzleft: 1px;
unknown: red)r	   r
   r   r!   	fontStyler   r   r+   r,   r-   __setattr__rg   r&   __delattr__rJ   s     r   test_css2propertiesz+TestCSSStyleDeclaration.test_css2properties   su   LL,,> - 
 !''!!!1;;&&&!,,W55551--l;;;;BaiiOOOG3qyy@@@Kaii''']]>*MM)U+ + 	
i']]>*y) +]]>*MM)$ + **95555-::: +*
 +***s$   FFF FF F)c                     t         j                  j                  d      }dt        |      v sJ t	        t        |            }t        ||j                        sJ y)z*CSSStyleDeclaration.__repr__(), .__str__()rx   r   rF   N)r	   r
   r   strevalrepr
isinstance	__class__)r   r   s2s      r   test_reprANDstrz'TestCSSStyleDeclaration.test_reprANDstr@  sJ    LL,,Y,?c!f}}$q']"akk***r   c                     g d}|D ]Q  \  }}t         j                  j                  |      }dj                  ||rdnd      }|j                  |k(  rLJ |        y)zCSSStyleDeclaration.valid))zcolor: red;T)zcolor: asd;F)z	foo: red;F)zcolor: red; foo: red;Fr   z{!r} should be {}validinvalidN)r	   r
   r   formatr   )r   casescaser   r   msgs         r   
test_validz"TestCSSStyleDeclaration.test_validI  s]    
 $ND(000>A%,,Th7IVC77h&++& $r   N)__name__
__module____qualname__r   r   r.   r6   rD   rK   rW   rZ   rh   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r      s    4%($:8 037j' .<=~C+8?4@J4>89 ./b2%(2(;@+,r   r   )	__doc__xml.domrr   r+   r	   r   r   BaseTestCaser   r   r   r   <module>r      s(    H    H	,h33 H	,r   