o
    e!                     @   s>   d Z ddlZddlmZ ddlZddlZG dd dejZdS )z/Testcases for cssutils.css.CSSStyleRuleTestCase    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rZrROr   Zr_typeZr_typeStringself r   PD:\Projects\ConvertPro\env\Lib\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   Z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sel2Zsel2bZsel2czs1: 2zs2: 1z$ {content: "new"}za {content: "new"}N)r   r   r	   r   r   r   r   r   ZgetPropertyValuexmldomZDOMExceptionparseStringZcssRulesr   Z
parseStyle	SyntaxErr)r   sselr   Zinvalidsinvalidr
   Zsel1Zst1Zsel1br"   Z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$ | | tjj  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keepEmptyRulesZ
do_equal_rr#   r$   r&   Z
do_raise_pupdateZ
do_raise_ruseDefaultsr   testsr   r   r   test_cssTexto   sr   

	





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   ZappendSelectorlengthr   pytestZraisesr#   r$   Z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  r9   zb, h1N)r   r   r	   r   r   r:   r<   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   s8   dt jj_dddddd}| j|dd t jj  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)ZraisingN)r   r1   r2   r3   r0   r5   r6   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   r(   r'   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	   Zvalidr   )r   ruler   r   r   
test_valid   s   

zTestCSSStyleRule.test_valid)__name__
__module____qualname__r   r   r,   r8   r=   r>   r@   rA   rF   rI   __classcell__r   r   r   r   r   	   s    	V7	r   )	__doc__Zxml.domr#   r   r   r   r;   ZTestCSSRuler   r   r   r   r   <module>   s    