o
    /h!                     @   s>   d Z ddlZddlZddlZddlmZ G dd dejZdS )z(Test cases for cssutils.css.CSSStyleRule    N   )test_cssrulec                       sd   e Zd Zdd Z f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  ZS )TestCSSStyleRulec                 C   s2   t j | _t jjdd| _t jjj| _d| _d S )NT)readonly
STYLE_RULE)cssutilscssCSSStyleRulerrROr   r_typer_typeStringself r   T/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_cssstylerule.py_setup_rule   s   
zTestCSSStyleRule._setup_rulec                    sp   t    d| jjksJ t| jjtjjj	sJ d| jj
ks!J t| jjtjjs,J | j| jjjks6J dS )zCSSStyleRule.type and init N)super	test_initr
   cssText
isinstanceselectorListr   r   selectorlistSelectorListselectorTextstyleCSSStyleDeclaration
parentRuler   	__class__r   r   r      s   
zTestCSSStyleRule.test_initc              	   C   s  t j }|j|j}}||jksJ ||jksJ d|_||jks$J d|jjks,J ||jks3J d|jdks=J |j|j}}d}|D ]3}z||_W n t	j
jyZ   Y nw ||jksbJ d|jjksjJ ||jksqJ d|jdks{J qHt d}|jd }|j}|j}d|_||jksJ d|jjksJ d|jksJ |j}	d	|	_|	|jksJ d	|jjksJ d	|jksJ t jd
}
|
|_|
|jksJ d
|jjksJ d|
_d|
jksJ d|jjksJ d|j_d|
jksJ d|jjksJ d|_||jks	J d|jjksJ t d}||_||jks"J d|jjks+J |j|j}}zd|_W n t	j
jyC   Y nw ||jksLJ ||jksTJ d|_||jks_J ||jksgJ dS )zCSSStyleRule referencesz	a { x:1 }a1x)z
$b { x:2 }z	c { $x3 }z/b { 2 }z	a {s1: 1}r   bcsel2sel2bsel2czs1: 2zs2: 1z$ {content: "new"}za {content: "new"}N)r   r   r	   r   r   r   r   r   getPropertyValuexmldomDOMExceptionparseStringcssRulesr   
parseStyle	SyntaxErr)r   sselr   invalidsinvalidr
   sel1st1sel1br&   st2slstr   r   r   	test_refs   s|   





zTestCSSStyleRule.test_refsc                 C   s   ddd}|  | dtjj_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!}|  | | | tjjtjjtjjd#}| 	| |
tjjtjjtjjtjjtjjd$ | | dS )%zCSSStyleRule.cssTextr   )* {}a {}Tza
{color: #000}za {
    color: #000
    }za
{color: #000000}za
{color: #abc}za {
    color: #abc
    }za
{color: #abcdef}za {
    color: #abcdef
    }za
{color: #00a}za {
    color: #00a
    }za
{color: #1a1a1a}za {
    color: #1a1a1a
    }z#id
{ color: red }z#id {
    color: red
    }r<   Nr=   zb { a: 1; }zb {
    a: 1
    }zc1 {/*1*/a:1;}zc1 {
    /*1*/
    a: 1
    }zc2 {a:1;/*2*/}zc2 {
    a: 1;
    /*2*/
    }z
d1 {/*0*/}zd1 {
    /*0*/
    }zd2 {/*0*//*1*/}zd2 {
    /*0*/
    /*1*/
    }z.a/*1*//*2*/,/*3*//*4*/b/*5*//*6*/{color: #000}z:a/*1*//*2*/, /*3*//*4*/b/*5*//*6*/ {
    color: #000
    }za,b{color: #000}za, b {
    color: #000
    }za
	 ,
	 b
	 {color: #000})za;za {{}za })z/*x*/a {za {}xza {/**/za {} )
do_equal_pr   serprefskeepEmptyRules
do_equal_rr*   r+   r0   
do_raise_pupdate
do_raise_rr   testsr   r   r   test_cssTextr   sn   

	



zTestCSSStyleRule.test_cssTextc                 C   s   t j }|jd d|jjksJ d|jksJ |jd tt	j
j |jd W d   n1 s8w   Y  d|jjksEJ d|jksLJ dS )zCSSStyleRule.selectorListr!   r   z b  z  h1, x N   za, b)r   r   r	   r   appendSelectorlengthr   pytestraisesr*   r+   InvalidModificationErrr   r
   r   r   r   test_selectorList   s   
z"TestCSSStyleRule.test_selectorListc                 C   sV   t j }d|_d|jjksJ d|jksJ d|_d|jjks"J d|jks)J dS )zCSSStyleRule.selectorTextr!   r   z b, h1  rJ   zb, h1N)r   r   r	   r   r   rL   rP   r   r   r   test_selectorText   s   
z"TestCSSStyleRule.test_selectorTextc                 C   s:   t j }|| j_|j| jjjksJ | j|jksJ dS )zCSSStyleRule.styleN)r   r   r   r
   r   r   r   )r   dr   r   r   
test_style   s   
zTestCSSStyleRule.test_stylec                 C   s,   dt jj_dddddd}| j|dd dS )	zCSSStyleRule (incomplete)Tr=   z'a {
    font-family: "arial sans"
    }z,p {
    color: green;
    color: green
    })r>   za { font-family: "arial sansza { font-family: "arial sans";zp {
                color: green;
                font-family: 'Courier New Times
                color: red;
                color: green;
                }zp {
                color: green;
                font-family: 'Courier New Times'
                color: red;
                color: green;
                F)raisingN)r   r@   rA   rB   r?   rG   r   r   r   test_incomplete   s   
z TestCSSStyleRule.test_incompletec                 C   sP   d}t jj|d}|t|v sJ tt|}t||jsJ ||jks&J dS )z#CSSStyleRule.__repr__(), .__str__()z	a > b + c)r   N)	r   r   r	   strevalreprr   r    r   )r   r2   r1   s2r   r   r   test_reprANDstr   s   z TestCSSStyleRule.test_reprANDstrc                 C   s>   t jjddd}|jsJ d|_|jrJ d|_|jrJ dS )zCSSStyleRule.valid*z
color: red)r   r   zcolor: foobarzfoobar: redN)r   r   r	   validr   )r   ruler   r   r   
test_valid   s   

zTestCSSStyleRule.test_valid)__name__
__module____qualname__r   r   r;   rI   rQ   rR   rT   rV   r[   r_   __classcell__r   r   r   r   r      s    	V4	r   )	__doc__xml.domr*   rM   r   r   r   TestCSSRuler   r   r   r   r   <module>   s    