o
    /h&                     @   s6   d Z ddlZddlZddlmZ G dd dejZdS )zJTestcases for cssutils.css.cssvariablesdelaration.CSSVariablesDeclaration.    N   )basetestc                   @   s\   e Z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
dd Zdd ZdS )TestCSSVariablesDeclarationc                 C   s   t j | _d S )N)cssutilscssCSSVariablesDeclarationr)self r
   _/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_cssvariablesdeclaration.pysetup_method   s   z(TestCSSVariablesDeclaration.setup_methodc                 C   s   t j }d|jksJ d|jksJ |jdu sJ t jjdd}d|jks(J d|dks1J t j }t jjd|d}||jksEJ dS )	z"CSSVariablesDeclaration.__init__() r   Nx: 0cssText0x)r   
parentRule)r   r   r   r   lengthr   getVariableValueCSSVariablesRule)r	   vruler
   r
   r   	test_init   s   

z%TestCSSVariablesDeclaration.test_initc                 C   sD   t jjdd}dD ]}||v sJ | |v sJ q	d|vs J dS )z*CSSVariablesDeclaration.__contains__(name)z
x: 0; y: 2r   )r   yzN)r   r   r   upper)r	   r   testr
   r
   r   test__contains__   s
   z,TestCSSVariablesDeclaration.test__contains__c                 C   s>  t j }d}||d< ||d ksJ ||dksJ ||d ks$J ||dks-J d|d ks5J d|dks>J d|d< d|jksIJ t|ddgksSJ |d= d	|jks]J d	|jksdJ d|dksmJ d|dksvJ d
|jks}J d|_g }td
|jD ]
}|	|
| qt|ddgksJ dS )z%CSSVariablesDeclaration[variableName]r   Xr   r   r   1r      r   r   zx:0; y:1N)r   r   r   r   r   sortedremoveVariabler   rangeappenditem)r	   r   valuekeysir
   r
   r   
test_items&   s.   
z&TestCSSVariablesDeclaration.test_itemsc                 C   s*   t jjdd}ddgt| ksJ dS )zCSSVariablesDeclaration.keys()z
x: 0; Y: 2r   r   r   N)r   r   r   r"   r(   r	   r   r
   r
   r   	test_keysI   s   z%TestCSSVariablesDeclaration.test_keysc                 C   s   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S )CSSVariablesDeclaration.cssTextr    z 	 
  zx: 1Nzx: "a"zx: rgb(1, 2, 3)zx: 1px 2px 3pxzx:1zx:1;z	x  :  1  zx  :  1  ;  zx:1;y:2z
x: 1;
y: 2zx:1;y:2;zx  :  1  ;  y  :  2  zx  :  1  ;  y  :  2  ;  z/*x*/zx555: 5zxxx: 1;
yyy: 2zx: 2zsame: 2z>/**/ 
 /**/ 
 /**/ 
 x: 1 /**/;
/**/ 
 /**/ 
 /**/ 
 y: 2 /**/)zxxx:1;yyy:2zxxx : 1; yyy : 2zx:1;x:2;X:2zsame:1;SAME:2;z'/**/x/**/:/**/1/**/;/**/y/**/:/**/2/**/c                 S   sh   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t jjt jjt jjd}| | dS )r-   )topztop:ztop : ztop:;ztop 0ztop 0;:z:0z:0;z:;z: ;r   z0;;N)xmldom	SyntaxErr
do_raise_r)r	   testsr
   r
   r   test_cssText2k   s    z?TestCSSVariablesDeclaration.test_cssText.<locals>.test_cssText2)
do_equal_r)r	   r6   r7   r
   r
   r   test_cssTextN   sV   	

z(TestCSSVariablesDeclaration.test_cssTextc                 C   s   t j }d|dksJ |dd d|dksJ d|dks&J d|jks-J |dd d|dks<J d|dksEJ d|jksLJ d|dksUJ d|dks^J d|dksgJ d|jksnJ dS )z#CSSVariablesDeclaration.xVariable()r   r   r   r   r   N)r   r   r   r   setVariabler   r#   r+   r
   r
   r   test_xVariable   s   
z*TestCSSVariablesDeclaration.test_xVariablec                 C   s   dd }d}t j|d}||}|jd jjdksJ |jjdks$J g dt|j ks1J d	t jj	_
|jd
ks=J dt jj	_
|jdksIJ t |}|jdksUJ dS )zCSSVariables importsc                 S   s6   |  dd} | | dd d  } d dddd|  fS )N\/r   ar  
                    @variables {
                        over3-2-1-0: 3;
                        over3-2-1: 3;
                        over3-2: 3;
                        over3-2-0: 3;
                        over3-1: 3;
                        over3-1-0: 3;
                        over3-0: 3;
                        local3: 3;
                    }

                ar  
                    @variables {
                        over3-2-1-0: 2;
                        over3-2-1: 2;
                        over3-2-0: 2;
                        over3-2: 2;
                        over2-1: 2;
                        over2-1-0: 2;
                        over2-0: 2;
                        local2: 2;
                    }

                a  
                    @import "3.css";
                    @import "2.css";
                    @variables {
                        over3-2-1-0: 1;
                        over3-2-1: 1;
                        over3-1: 1;
                        over3-1-0: 1;
                        over2-1: 1;
                        over2-1-0: 1;
                        over1-0: 1;
                        local1: 1;
                    }

                )z3.cssz2.cssz1.css)replacerfind)urlr
   r
   r   fetcher   s   *z9TestCSSVariablesDeclaration.test_imports.<locals>.fetchera  
            @import "1.css";
            @variables {
                over3-2-1-0: 0;
                over3-2-0: 0;
                over3-1-0: 0;
                over2-1-0: 0;
                over3-0: 0;
                over2-0: 0;
                over1-0: 0;
                local0: 0;
            }
            a {
                local0: var(local0);
                local1: var(local1);
                local2: var(local2);
                local3: var(local3);
                over1-0: var(over1-0);
                over2-0: var(over2-0);
                over3-0: var(over3-0);
                over2-1: var(over2-1);
                over3-1: var(over3-1);
                over3-2: var(over3-2);
                over2-1-0: var(over2-1-0);
                over3-2-0: var(over3-2-0);
                over3-2-1: var(over3-2-1);
                over3-2-1-0: var(over3-2-1-0);
            }
        )rA   r         )local0local1local2local3zover1-0zover2-0zover2-1z	over2-1-0zover3-0zover3-1z	over3-1-0zover3-2z	over3-2-0z	over3-2-1zover3-2-1-0Fs:  @import "1.css";
@variables {
    over3-2-1-0: 0;
    over3-2-0: 0;
    over3-1-0: 0;
    over2-1-0: 0;
    over3-0: 0;
    over2-0: 0;
    over1-0: 0;
    local0: 0
    }
a {
    local0: var(local0);
    local1: var(local1);
    local2: var(local2);
    local3: var(local3);
    over1-0: var(over1-0);
    over2-0: var(over2-0);
    over3-0: var(over3-0);
    over2-1: var(over2-1);
    over3-1: var(over3-1);
    over3-2: var(over3-2);
    over2-1-0: var(over2-1-0);
    over3-2-0: var(over3-2-0);
    over3-2-1: var(over3-2-1);
    over3-2-1-0: var(over3-2-1-0)
    }Ts   @import "1.css";
a {
    local0: 0;
    local1: 1;
    local2: 2;
    local3: 3;
    over1-0: 0;
    over2-0: 0;
    over3-0: 0;
    over2-1: 1;
    over3-1: 1;
    over3-2: 2;
    over2-1-0: 0;
    over3-2-0: 0;
    over3-2-1: 1;
    over3-2-1-0: 0
    }sB  /* START @import "1.css" */
/* START @import "3.css" */
/* START @import "2.css" */
a {
    local0: 0;
    local1: 1;
    local2: 2;
    local3: 3;
    over1-0: 0;
    over2-0: 0;
    over3-0: 0;
    over2-1: 1;
    over3-1: 1;
    over3-2: 2;
    over2-1-0: 0;
    over3-2-0: 0;
    over3-2-1: 1;
    over3-2-1-0: 0
    }N)r   	CSSParserparseStringcssRules	variablesr   r"   r(   serprefsresolveVariablesr   resolveImports)r	   rA   r   psr
   r
   r   test_imports   s*   2



z(TestCSSVariablesDeclaration.test_importsc                 C   sL   t d}|jd }|j}||jksJ t jd}||_||jks$J dS )z"CSSVariablesDeclaration.parentRulez@variables { a:1}r   zb: 2N)r   rI   rJ   rK   r   r   r   )r	   rQ   r   dd2r
   r
   r   test_parentRuleO  s   

z+TestCSSVariablesDeclaration.test_parentRulec                 C   s>   t jjdd}dt|v sJ tt|}t||jsJ dS )z.CSSVariablesDeclaration.__repr__(), .__str__()za:1;b:2r   2N)r   r   r   strevalrepr
isinstance	__class__)r	   rQ   s2r
   r
   r   test_reprANDstrZ  s   z+TestCSSVariablesDeclaration.test_reprANDstrN)__name__
__module____qualname__r   r   r   r*   r,   r9   r;   rR   rU   r]   r
   r
   r
   r   r   
   s    	#2 <r   )__doc__xml.domr2   r   r   r   BaseTestCaser   r
   r
   r
   r   <module>   s
    