
     h                     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)z"Testcases for cssutils.css.CSSRule    N   )basetestc                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
TestCSSRulea  
    base class for all CSSRule subclass tests

    overwrite setUp with the appriopriate values, will be used in
    test_init and test_readonly
    overwrite all tests as you please, use::

        super(CLASSNAME, self).test_TESTNAME(params)

    to use the base class tests too
    c                 j    | j                          t        j                  j                         | _        y)zz
        self.r is the rule
        self.rRO the readonly rule
        relf.r_type the type as defined in CSSRule
        N)_setup_rulecssutilscssCSSStyleSheetsheetselfs    [/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/tests/test_cssrule.pysetup_methodzTestCSSRule.setup_method   s$     	\\//1
    c                    t         j                  j                         | _        t         j                  j                         | _        d| j                  _        t         j                  j                  j                  | _        d| _        y )NTUNKNOWN_RULE)	r	   r
   CSSRulerrRO	_readonlyr   r_typer_typeStringr   s    r   r   zTestCSSRule._setup_rule"   sU    %%'<<'')!ll**77*r   c                 .   | j                   | j                  j                  k(  sJ | j                  | j                  j                  k(  sJ d| j                  j
                  k(  sJ | j                  j                  J | j                  j                  J y)zCSSRule.type and init N)r   r   typer   
typeStringcssText
parentRuleparentStyleSheetr   s    r   	test_initzTestCSSRule.test_init)   s|    {{dffkk)))  DFF$5$5555TVV^^###vv  (((vv&&...r   c           
        
 dt         j                  j                  j                  fdt         j                  j                  j                  fdt         j                  j                  j
                  fdt         j                  j                  j                  fdt         j                  j                  j                  fdt         j                  j                  j                  fdt         j                  j                  j                  fdt         j                  j                  j                  fd	t         j                  j                  j                  fg	}t         j                  j                  j                  t         j                  j                  j                  t         j                  j                  j                  g

fd
}dj                  d |D              }t        j                  |      } ||       t         j                  j                         }||_         ||       t         j                  j                         }|D ]  \  }}|j!                  |         ||       t         j                  j                         }|D ]  \  }}|j#                  |         ||       t         j                  j$                  t         j                  j&                  t         j                  j(                  t         j                  j*                  t         j                  j,                  t         j                  j.                  t         j                  j0                  t         j                  j2                  t         j                  j4                  g	}t         j                  j                         }t7        |      D ]*  \  }\  }} ||          }	||	_        |j!                  |	       ,  ||       t         j                  j                         }t7        |      D ]*  \  }\  }} ||          }	||	_        |j#                  |	       ,  ||       y)z*CSSRule.parentRule .parentStyleSheet .typez@charset "ascii";z@import "x";z@namespace "x";z@font-face { src: url(x) }zx@media all {
                    @x;
                    a { color: red }
                    /* c  */
                }z@page :left { color: red }	@unknown;b { left: 0 }/*1*/c                    t        |       D ]  \  }}|j                  J |j                  | k(  sJ |j                  |j                  k(  rIt        |      D ];  \  }}|j                  |k(  sJ |j                  | k(  sJ |j                  |   k(  r;J  |dk(  rd| j
                  k(  rJ |dk(  sd| j                  d   k(  rJ  y )Nr   ascii   xr   )	enumerater   r    
MEDIA_RULEr   encoding
namespaces)sirulejr   mrts        r   testz?TestCSSRule.test_parentRule_parentStyleSheet_type.<locals>.testK   s    $Q<4...,,111??dii/ )$1 ||t333 11Q666 vvQ/// !0
 6"ajj000!V!,,r"2222 (r   r   c              3   &   K   | ]	  }|d      ywr   N .0r   s     r   	<genexpr>zDTestCSSRule.test_parentRule_parentStyleSheet_type.<locals>.<genexpr>[   s     .1!A$   N)r	   r
   r   CHARSET_RULEIMPORT_RULENAMESPACE_RULEFONT_FACE_RULEr+   	PAGE_RULEr   
STYLE_RULECOMMENTjoinparseStringr   r   add
insertRuleCSSCharsetRuleCSSImportRuleCSSNamespaceRuleCSSFontFaceRuleCSSMediaRuleCSSPageRuleCSSUnknownRuleCSSStyleRule
CSSCommentr*   )r   rulesr3   r   r.   r
   _typesr/   r0   r2   s             @r   %test_parentRule_parentStyleSheet_typez1TestCSSRule.test_parentRule_parentStyleSheet_type1   s	    !(,,"6"6"C"CDX\\11==> 4 4 C CD)8<<+?+?+N+NO
 $$// *8<<+?+?+I+IJ(,,..;;<hll22==>hll**223!
& LL  --LL  ++LL  ((
	3  ''...  )QLL&&(	QLL&&(FCEE#J QLL&&(FCLL Q LL''LL&&LL))LL((LL%%LL$$LL''LL%%LL##

 LL&&($U+KAxQ58:DDLEE$K , 	QLL&&($U+KAxQ58:DDLLL , 	Qr   c                 8   dt         j                  j                  j                  fdt         j                  j                  j                  fdt         j                  j                  j
                  fgfd}ddj                  d D              z  }t        j                  |      } ||       t         j                  j                         }||_	         ||       d } |       \  }}D ]  \  }}|j                  |         ||        |       \  }}D ]  \  }}|j                  |         ||       t         j                  j                  t         j                  j                  t         j                  j                  g} |       \  }}t              D ]*  \  }	\  }} ||	          }
||
_	        |j                  |
       ,  ||        |       \  }}t              D ]*  \  }	\  }} ||	          }
||
_	        |j                  |
       ,  ||       y	)
z8CSSMediaRule.cssRules.parentRule .parentStyleSheet .typer$   r%   z@x;c                     | j                   d   }t        |      D ]Y  \  }}|j                  |k(  sJ |j                  | k(  sJ |j                  |j                  k(  sJ |j                  |   d   k(  rYJ  y )Nr   r   )cssRulesr*   r   r    r   )r.   mrr/   r0   rO   s       r   r3   zUTestCSSRule.test_CSSMediaRule_cssRules_parentRule_parentStyleSheet_type.<locals>.test   s|    AB$R=4",,,,,111,,0C0CCCCyyE!HQK///	 )r   z@media all { %s }r   c              3   &   K   | ]	  }|d      ywr5   r6   r7   s     r   r9   zZTestCSSRule.test_CSSMediaRule_cssRules_parentRule_parentStyleSheet_type.<locals>.<genexpr>   s     /De!er:   c                  n    t         j                  j                         } d| _        | | j                  d   fS )N@media all {}r   )r	   r
   r   r   rU   )r.   s    r   getMediaSheetz^TestCSSRule.test_CSSMediaRule_cssRules_parentRule_parentStyleSheet_type.<locals>.getMediaSheet   s.    **,A'AIajjm##r   N)r	   r
   r   r@   rA   r   rB   rC   r   r   rD   rE   rM   rN   rL   r*   )r   r3   r   r.   rZ   rV   r
   rP   rQ   r/   r0   rO   s              @r   ;test_CSSMediaRule_cssRules_parentRule_parentStyleSheet_typezGTestCSSRule.test_CSSMediaRule_cssRules_parentRule_parentStyleSheet_type   s    hll22==>hll**223HLL((556
	0 &/De/D(DD  )QLL&&(	Q	$ 2FCFF3K Q2FCMM# Q LL%%LL##LL''
 2$U+KAxQ58:DDLFF4L , 	Q2$U+KAxQ58:DDLMM$ , 	Qr   c                    t         j                  j                         | _        d| j                  _        | j                  j                  sJ d| j                  j
                  k(  sJ t        j                  t        j                  j                        5  | j                  j                  d       ddd       d| j                  j
                  k(  sJ y# 1 sw Y   %xY w)zCSSRule readonlyTr   r)   N)r	   r
   r   r   r   r   pytestraisesxmldomNoModificationAllowedErr_setCssTextr   s    r   test_readonlyzTestCSSRule.test_readonly   s    <<'')!xx!!!!TXX%%%%%]]377;;<HH  % =TXX%%%%% =<s   CCc                 `   d}|D ]r  }|dv r|dv r|j                  |      rd|z  }t        j                  t        j                  j
                        5  | j                  j                  |       ddd       t t        j                  t              5  | j                  j                  dd       ddd       t        j                  t              5  | j                  j                  dd       ddd       t        j                  t              5  | j                  j                  dd	       ddd       t        j                  t              5  | j                  j                  d
d       ddd       y# 1 sw Y   xxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   yxY w)z
        CSSRule.cssText InvalidModificationErr

        called by subclasses

        startwithspace

        for test starting with this not the test but " test" is tested
        e.g. " @page {}"
        exception is the style rule test
        )
r   /* comment */z@charset "utf-8";z@font-face {}z@import url(x);rY   z@namespace "x";@page {}r#   z@variables;a style rule {})za style rule)re   rf   z %sNr   r    r   r   r   r   )

startswithr]   r^   r_   r`   InvalidModificationErrr   rb   AttributeError__setattr__)r   startwithspacetestsr3   s       r   _test_InvalidModificationErrz(TestCSSRule._test_InvalidModificationErr   s6   
 D!22t @ 8 ~.t|sww==>""4( ?>  ]]>*FF|T2 +]]>*FF148 +]]>*FFvq) +]]>*FF|R0 +* ?> +*******s<   E3F FFF$3E=	 F	FF!$F-N)__name__
__module____qualname____doc__r   r   r!   rR   r[   rc   rm   r6   r   r   r   r      s-    
2+/Un;z&/1r   r   )
rq   xml.domr_   r]   cssutils.cssr	   r   r   BaseTestCaser   r6   r   r   <module>ru      s(    (    r1('' r1r   