o
    /h>B                     @   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.CSSMediaRule    N   )test_cssrulec                       s   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dd Zdd Zdd Zdd Zdd Z  ZS )TestCSSMediaRulec                 C   sF   t j | _t jjdd| _t jjj| _d| _t j | _	d| j	_
d S )NT)readonly
MEDIA_RULEza {})cssutilscssCSSMediaRulerrROr   r_typer_typeStringCSSStyleRule	stylerulecssTextself r   T/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_cssmediarule.py_setup_rule   s   zTestCSSMediaRule._setup_rulec                    s(  t    tj }t|jtjjsJ g |jksJ d|jks"J t|j	tj
js,J d|j	jks4J |jdu s;J tjjddd}t|jtjjsMJ g |jksTJ d|jks[J t|j	tj
jseJ d|j	jksmJ d|jkstJ ttjj | jd W d   dS 1 sw   Y  dS )zCSSMediaRule.__init__() allNprintname)	mediaTextr   x)super	test_initr   r   r	   
isinstancecssRulesCSSRuleListr   mediastylesheets	MediaListr   r   pytestraisesxmldomInvalidModificationErrr
   _setAtkeywordr   r
   	__class__r   r   r      s$   

"zTestCSSMediaRule.test_initc                 C   st   t j }d|_t jjjt jjjt jjjg}t|D ]\}}||j| ks'J |j	|| ks0J |j
|ks7J qdS )zCSSMediaRule.__iter__()z*@media all { /*1*/a { left: 0} b{ top:0} }N)r   r   r	   r   CSSRuleCOMMENT
STYLE_RULE	enumerater   type
parentRule)r   mtypesiruler   r   r   	test_iter-   s   
zTestCSSMediaRule.test_iterc                 C   s   t d}|jd }|j}|jd j|ksJ |d j|ks J d|_t dj|_||jks1J t|jD ]\}}|j|ksAJ |j|ksHJ q6dS )zCSSStylesheet referencesz@media all {a {color: red}}r   z@media all {a {color: blue}}z=
            /**/
            @x;
            b {}').cssRulesN)r   parseStringr   parentStyleSheetr   r0   r2   )r   sr
   rulesr5   srr   r   r   	test_refs;   s    

zTestCSSMediaRule.test_refsc                 C   s8  t j }g |jksJ t j }|j| |g|jksJ t j }tt	j
j |j| W d   n1 s<w   Y  t d}|jd }d|jjksSJ |jd= d|jjks_J |jd d|jjksmJ |jt dj d|jjksJ d	|jksJ |jD ]}|j|ksJ |j|ksJ qdS )
zCSSMediaRule.cssRulesNz@media all { /*1*/a {x:1} }r      r   /*2*/z/*3*/x {y:2}   zd@media all {
    a {
        x: 1
        }
    /*2*/
    /*3*/
    x {
        y: 2
        }
    })r   r   r	   r   r   appendCSSImportRuler$   r%   r&   r'   HierarchyRequestErrr8   lengthextendr   r9   r2   )r   r
   r<   irr:   r3   r6   r   r   r   test_cssRulesT   s2   





zTestCSSMediaRule.test_cssRulesc                 C   s  d}ddddddddddddddd}i }t | D ]\}}|du r%|}d| | |d| | < q| | | | 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	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'd-d.d/}| | | | i d0tjjd1tjjd2tjjd3tjjd4tjjd5tjjd6tjjd7tjjd8tjjd9t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dA}| | | 	| dBtjji}| 	| t
j }dC|_|jD ]}||jksOJ |j|jksXJ qEdS )DzCSSMediaRule.cssTextz,{
    a {
        color: red
        }
    }N only tv and (color) C only tv and (color: red) and (width: 100px), tv and (width: 20px) z (color) and (width), (height) )z: (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) z tv z	 only tv z not tv rH   z only tv and(color)z only tv and (color: red) z- only tv and (color: red) and (width: 100px) z1 only tv and (color: red) and (width: 100px), tv rI   zD only tv and(color :red)and(  width :100px  )  ,tv and(width: 20px) z0 (color: red) and (width: 100px), (width: 20px) zU /*1*/ only /*2*/ tv /*3*/ and /*4*/ (/*5*/ width) /*5*/ /*6*/, (color) and (height) z(color)and(width),(height)@mediaz@media only tv{}r   z@media not tv{}z@media only tv and (color){}z!@media only tv and (color: red){}z4@media only tv and (color: red) and (width: 100px){}z8@media only tv and (color: red) and (width: 100px), tv{}zJ@media only tv and (color: red) and (width: 100px), tv and (width: 20px){}z7@media (color: red) and (width: 100px), (width: 20px){}z@media (width){}z@media (width:10px){}z@media (width), (color){}z%@media (width)  ,  (color),(height){}z)@media (width)  ,  (color) and (height){}z@media (width) and (color){}z@media all and (width){}z@media all and (width:10px){}z!@media all and (width), (color){}z-@media all and (width)  ,  (color),(height){}z1@media all and (width)  ,  (color) and (height){}z$@media all and (width) and (color){}z@media only tv and (width){}z!@media only tv and (width:10px){}z%@media only tv and (width), (color){}z1@media only tv and (width)  ,  (color),(height){}z5@media only tv and (width)  ,  (color) and (height){}z(@media only tv and (width) and (color){}z$@media only tv and (width) "name" {}z)@media only tv and (width:10px) "name" {}z@media all "name"{}z@media all {}z1@media all {
    a {
        x: 1
        }
    }z8@media all "name" {
    a {
        x: 1
        }
    }zk@media all {
    @x some;
    a {
        color: red
        }
    b {
        color: green
        }
    }z%@media all {
    @x {
        }
    }z.@media all "n" /**/ {
    @x {
        }
    }zS@media /*1*/ /*2*/ all /*3*/ /*4*/ {
    /*5*/
    a {
        x: 1
        }
    }z:@media all {
    @page {
        margin: 0
        }
    }z^@media all {
    @media all {
        p {
            color: red
            }
        }
    })z@media/*x*/all{}z@media all { a{ x: 1} }z@media all "name" { a{ x: 1} }z@MEDIA all { a{x:1} }z@\media all { a{x:1} }z3@media all {@x some;a{color: red;}b{color: green;}}z@media all { @x{}}z@media all "n" /**/ { @x{}}z*@media/*1*//*2*/all/*3*//*4*/{/*5*/a{x:1}}z=@media  /*1*/  /*2*/  all  /*3*/  /*4*/  {  /*5*/  a{ x: 1} }z#@media
	 all
	 {
	 a{ x: 1}
	 }z#@media all { @page { margin: 0; } }z/@media all { @media all { p { color: red; } } }z	@media {}z@media;z@media/*only comment*/{}z@media all;z@media all "n";z@media all; @x{}z@media { a{ x: 1} }z@media "name" { a{ x: 1} }z@media "name" all { a{ x: 1} }z@media all { @charset "x"; a{}}z@media all { @import "x"; a{}}z@media all { , }z@media all {}EXTRAz
@media ({}z@media (color{}z@media (color:{}z@media (color:red{})z@media (:red){}z@media (:){}z@media color:red){}z@media all { x{} } a{}z$@media all {@x; /*1*/a{color: red;}})listitems
do_equal_p
do_equal_rr&   r'   	SyntaxErrrC   
do_raise_p
do_raise_rr   r   r	   r   r   r2   r9   )r   stylemlstestsbar3   r
   r   r   r   test_cssTextq   s<  

	
 !"#	
>
	





zTestCSSMediaRule.test_cssTextc                 C   s   t t | jdd W d   n1 sw   Y  t t | jdd W d   n1 s3w   Y  d| jj_| j| j d| jj	ksLJ dt
jj_d| jj	ksYJ dS )zCSSMediaRule.mediar!   Nr   r   r   Tz@media print {
    a {}
    })r$   r%   AttributeErrorr
   __setattr__r!   r   
insertRuler   r   r   serprefskeepEmptyRulesr   r   r   r   
test_media   s   

zTestCSSMediaRule.test_mediac                 C   s  t j }d|_d|jksJ d|_d|jksJ d|jks J d|_d|jks*J d|jks1J d|_|jdu s;J d	|jksBJ d|_|jdu sLJ d	|jksSJ ttjj	 |
d
 W d   n1 sjw   Y  ttjj	 |
d W d   dS 1 sw   Y  dS )zCSSMediaRule.namez!@media all "\n\"ame" {a{left: 0}}z\n"amenz8@media all "n" {
    a {
        left: 0
        }
    }"z9@media all "\"" {
    a {
        left: 0
        }
    }r   Nz4@media all {
    a {
        left: 0
        }
    }r   {   )r   r   r	   r   r   r$   r%   r&   r'   rO   _setNamer*   r   r   r   	test_name	  s.   
"zTestCSSMediaRule.test_namec                 C   s"  t j }d|_d|jjksJ ttj	j
 |d W d   n1 s'w   Y  |jd }||jks8J |d |jdu sDJ d|jjksLJ d|jksSJ |d d|jjks`J d	|jksgJ |d
 d|jjkstJ d|jks{J |d
 d
|jjksJ d|jksJ dS )zCSSMediaRule.deleteRule(index)zj@media all {
            @a;
            /* x */
            @b;
            @c;
            @d;
        }   Nr@   z6@media all {
    @a;
    /* x */
    @b;
    @c;
    }r      z.@media all {
    /* x */
    @b;
    @c;
    }r   r>   z&@media all {
    /* x */
    @c;
    }z@media all {
    /* x */
    })r   r   r	   r   r   rD   r$   r%   r&   r'   IndexSizeErr
deleteRuler2   )r   r3   r
   r   r   r   test_deleteRuleIndex(  s*   





z%TestCSSMediaRule.test_deleteRuleIndexc                 C   s   t j }d|_|j\}}}t j }ttj	j
 || W d   n1 s*w   Y  d|jjks7J || d|jjksDJ |jdksKJ ttj	j
 || W d   dS 1 scw   Y  dS )zCSSMediaRule.deleteRule(rule)zs@media all {
            a { color: red; }
            b { color: blue; }
            c { color: green; }
        }Nrf   r>   z^@media all {
    a {
        color: red
        }
    c {
        color: green
        }
    })r   r   r	   r   r   r   r$   r%   r&   r'   rg   rh   rD   )r   r3   s1s2s3r
   r   r   r   test_deleteRuleO  s    


"z TestCSSMediaRule.test_deleteRulec                 C   sZ   t j }t j }t j }|| || |jd |ks"J |jd |ks+J dS )zCSSMediaRule.add()r   r   N)r   r   r	   r   addr   )r   r
   
stylerule1
stylerule2r   r   r   test_addg  s   




zTestCSSMediaRule.test_addc           	      C   sH  t j }t jd}t jd}t j }t jd}t jd}d|_t j	d}t j	d}t
tjj ||d W d	   n1 sIw   Y  t
tjj ||d W d	   n1 sfw   Y  t
tjj ||d W d	   n1 sw   Y  ||d ||jksJ |j|jksJ ||d ||jksJ |j|jksJ ||d
 ||jksJ |j|jksJ || ||jksJ |j|jksJ d|jksJ t
tjj ||d W d	   n1 sw   Y  t
tjj |||jjd  W d	   d	S 1 sw   Y  d	S )zCSSMediaRule.insertRuleasciir   z@x;rV   z	a { x: 1}z/*1*/r?   r   Nr>   zM@media all {
    /*1*/
    a {
        x: 1
        }
    @x;
    /*2*/
    }re   r   )r   r   r	   CSSCharsetRulerB   CSSNamespaceRuleCSSUnknownRuler   r   
CSSCommentr$   r%   r&   r'   rC   rZ   r2   r9   rg   r   rD   )	r   r
   charsetrule
importrulenamespaceruleunknownruler   comment1comment2r   r   r   test_insertRuler  sN   


$z TestCSSMediaRule.test_insertRulec                 C   s   |  d dS )z+CSSMediaRule.cssText InvalidModificationErrrJ   N)_test_InvalidModificationErrr   r   r   r   test_InvalidModificationErr  s   z,TestCSSMediaRule.test_InvalidModificationErrc                 C   s   ddddd}|  | dS )zCSSMediaRule (incomplete)z @media all {
    @unknown;
    }z3@media all {
    a {
        x: "1"
        }
    })z@media all { @unknown;z@media all { a {x:"1"}z@media all { a {x:"1"z@media all { a {x:"1N)rM   )r   rT   r   r   r   test_incomplete  s   z TestCSSMediaRule.test_incompletec                 C   sR   d}t jj|d}|t|v sJ tt|}t||jsJ ||jj	ks'J dS )z#CSSMediaRule.__repr__(), .__str__()z	tv, print)r   N)
r   r   r	   strevalreprr   r,   r!   r   )r   r   r:   rk   r   r   r   test_reprANDstr  s   z TestCSSMediaRule.test_reprANDstr)__name__
__module____qualname__r   r   r7   r=   rG   rW   r^   rc   ri   rm   rq   r}   r   r   r   __classcell__r   r   r+   r   r      s"    	 '0
r   )	__doc__xml.domr&   r   r   r   r$   TestCSSRuler   r   r   r   r   <module>   s    