o
    /hY@                     @   sF   d Z ddl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(Testcases for cssutils.css.CSSImportRule    N   )test_cssrulec                       st   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  ZS )TestCSSImportRulec                 C   s2   t j | _t jjdd| _t jjj| _d| _d S )NT)readonlyIMPORT_RULE)cssutilscssCSSImportRulerrROr   r_typer_typeStringself r   U/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_cssimportrule.py_setup_rule   s   
zTestCSSImportRule._setup_rulec                    s  t    | jjdu sJ | jjdu sJ | jjrJ d| jjjks$J t| jjt	j
js/J | jjdu s7J t| jjt	jjsBJ d| jjjjksLJ d| jjksTJ t	jjdddd}d	|jksdJ d|jkskJ |jdu srJ d|jjkszJ t|jt	j
jsJ d|jksJ |jdu sJ |jdu sJ t| jjt	jjsJ d| jjjjksJ t	jd
}d|jksJ d
|jksJ |jdu sJ t	jd
d}d|jksJ d
|jksJ d|jjksJ t	jjd
dd}d|jksJ d
|jksJ d|jksJ t	jd
dd}d|jksJ d
|jksJ d|jjks%J d|jks-J t	jjddd| _t| jjt	j
jsBJ d| jjksKJ d| jjjksUJ d| jjks^J ttjj | jd
 W d   dS 1 sxw   Y  dS )zCSSImportRule.__init__()Nallr    hreftvnamer   	mediaTextr   z@import url(href) tv "name";x@import url(x);print@import url(x) print;nr   @import url(x) "n";z@import url(x) print "n";)r   r   )super	test_initr
   r   hreftype	hrefFoundmediar   
isinstancer   stylesheets	MediaListr   
styleSheetr   CSSStyleSheetcssRuleslengthcssTextr	   
parentRuleparentStyleSheetpytestraisesxmldomInvalidModificationErr_setAtkeywordr   r
   	__class__r   r   r"      s\   
$zTestCSSImportRule.test_initc                 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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/d0 | | tjjtjjtjjtjjtjjtjjtjjtjjd1}| | |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d2	 | | dS )3zCSSImportRule.cssTextz@import "str";Nz@import"str";z@\import "str";z@IMPORT "str";z@import 'str';z@import 'str' ;z@import "str"  ;z@import "\""  ;@import "\"";z@import '\'';z@import "'";z@import '"';z@import url(x.css);@import url(")");@import url("\"");z@import url('\'');z@import url("'");z@import "str" all;z@import "str" tv, print;z@import"str"tv,print;z@import "str" tv, print, all;z@import "str" handheld, all;z@import "str" all, handheld;z@import "str" not tv;z@import "str" only tv;z%@import "str" only tv and (color: 2);z@import "str" "name";z@import "str" 'name';z@import url(x) "name";z@import "str" "\"";z@import "str" '\'';z@import "str" "'";z@import"str"tv"name";z@import "str" tv "name";z$@import	
"str"		
tv		
"name"	;z@import /*1*/ "str" /*2*/;z?@import/*1*//*2*/"str"/*3*//*4*/all/*5*//*6*/"name"/*7*//*8*/ ;zI@import /*1*/ /*2*/ "str" /*3*/ /*4*/ all /*5*/ /*6*/ "name" /*7*/ /*8*/;z@@import/*1*//*2*/url(u)/*3*//*4*/all/*5*//*6*/"name"/*7*//*8*/ ;zJ@import /*1*/ /*2*/ url(u) /*3*/ /*4*/ all /*5*/ /*6*/ "name" /*7*/ /*8*/;zB@import/*1*//*2*/url("u")/*3*//*4*/all/*5*//*6*/"name"/*7*//*8*/ ;z@import url(u) tv "name";)z%@import
	 "str"
	 tv
	 "name"
	 ;z.@import
	 url(
	 u
	 )
	 tv
	 "name"
	 ;z(@import
	 url("u")
	 tv
	 "name"
	 ;z0@import
	 url(
	 "u"
	 )
	 tv
	 "name"
	 ;z@import "x.css" tv;@import "x.css";z@import "x;";)@import "x.css" tv@import "x.css"@import 'x.css'@import url(x.css)@import "x;)z@import;z@import all;z@import all"name";z@import x";z@import "str" ,all;z@import "str" all,;z@import "str" all tv;z@import "str" "name" all;)	r>   r?   r@   r=   rA   z@import url("x);z@import "x";"a"z@import "x";/**/z@import "x"; )
do_equal_rupdate
do_equal_pr2   r3   	SyntaxErr
do_raise_p
do_raise_rr   testsr   r   r   test_cssTextT   s   	
 !"$%'()*,
1


zTestCSSImportRule.test_cssTextc                 C   s   d| j _d| j jksJ d| j jksJ d| j _d| j jks J d| j jks(J d| j _d| j jks4J d| j jks<J d| j _d| j jksHJ d	| j _d
| j jksTJ d| j _d| j jks`J d| j _d| j jkslJ dS )zCSSImportRule.hrefr   r   z"http://www.example.com/x?css=z&v=1z0@import url(http://www.example.com/x?css=z&v=1);stringz-@import "http://www.example.com/x?css=z&v=1";"r9   urlr;   )r:   z	NOT VALIDN)r
   r   r-   r#   r   r   r   r   	test_href   s"   zTestCSSImportRule.test_hrefc                 C   s   dd }t j|d}|d}|jd }d|jjksJ |js!J d|jks(J d|_d	|jjks3J |jr8J d
|jks?J d|_||jd ksKJ dS )zCSSImportRule.hrefFoundc                 S      | dkrdS dS )Nzhttp://example.com/yes)Nz/**/)NNr   rM   r   r   r   fetcher      z1TestCSSImportRule.test_hrefFound.<locals>.fetcherrR   z'@import "http://example.com/yes" "name"r   s   /**/r   z-@import url(http://example.com/none) "name2";    name2z%@import url(http://example.com/none);N)r   	CSSParserparseStringr+   r)   r-   r$   r   )r   rR   parsersheetr
   r   r   r   test_hrefFound   s   



z TestCSSImportRule.test_hrefFoundc                 C   s   t j | _d| j_d| jjksJ d| jjksJ d| j_d| jjks&J d| jjks.J d| j_d| jjks:J d| j_d	| jjksFJ d
S )zCSSImportRule.hreftypez@import /*1*/url(org) /*2*/;uriz@import /*1*/ url(org) /*2*/;z@import /*1*/"org" /*2*/;rK   z@import /*1*/ "org" /*2*/;newz@import /*1*/ "new" /*2*/;z@import /*1*/ url(new) /*2*/;N)r   r   r	   r
   r-   r#   r   r   r   r   r   test_hreftype   s   zTestCSSImportRule.test_hreftypec                 C   s>  d| j _tt | j dd W d   n1 sw   Y  d| j j_d| j jks-J | j j	d d| j jks<J t
d}tjjdd	}tjtjj|d
 |j	d W d   n1 sbw   Y  d|jksnJ tjtjj|d
 |j	d W d   n1 sw   Y  d|jksJ d|j_d|jksJ |j	d d|jksJ td}|jd }tjtjj|d
 |j	d W d   n1 sw   Y  d|jksJ tjtjj|d
 |j	d W d   n1 sw   Y  d|jksJ d|j_d|jksJ |j	d d|jksJ dS )zCSSImportRule.mediar   r%   Nr   r   r   z@import url(x) print, tv;zMediaList: Ignoring new medium cssutils.stylesheets.MediaQuery(mediaText='tv') as already specified "all" (set ``mediaText`` instead).r   )matchr   z@import url(x) tv;z@import url(x) tv, print;r   )r
   r   r0   r1   AttributeError__setattr__r%   r   r-   appendMediumreescaper   r   r	   r2   r3   r4   rX   r+   )r   tv_msgr
   sr   r   r   
test_media   sL   


zTestCSSImportRule.test_mediac                 C   sR  t jjddd}d|jksJ d|jksJ d|_d|jks J d|jks'J d|_d|jks1J d|jks8J d	|_d
|jksBJ d|_d|jksLJ d|_|jdu sVJ d|jks]J d|_|jdu sgJ d|jksnJ ttj	j
 |d W d   n1 sw   Y  ttj	j
 |d W d   dS 1 sw   Y  dS )zCSSImportRule.namer   a000000r   z@import url(x) "a000000";r   r    rL   z@import url(x) "\"";rK   z@import "x" "\"";123z@import "x" "123";N@import "x";r   r   {   )r   r   r	   r   r-   r#   r0   r1   r2   r3   rE   _setNamer6   r   r   r   	test_name$  s2   "zTestCSSImportRule.test_namec                 C   s  dd }t j|d}|jddd}|jdksJ |jd }|jdks$J |jjd	ks,J |jjd
ks4J |jj|ks<J |jjj	dksEJ |jj
du sMJ |jjdksUJ |jjdks]J |jjd }|jdksjJ |jjdksrJ |jjd
kszJ |jj|ksJ |jjj	dksJ |jj
du sJ |jjdksJ |jjdksJ t d}|jd }|jdksJ t|jt jjsJ dd }t j|d}|d}|jdksJ |jd j}|jd
ksJ |jd j}|jd
ksJ dS )zCSSImportRule.styleSheetc                 S   rP   )N/root/level1/anything.css)Nz"@import "level2/css.css" "title2";)Nza { color: red }r   rQ   r   r   r   rR   F  rS   z2TestCSSImportRule.test_styleSheet.<locals>.fetcherrT   z^@charset "ascii";
                                   @import "level1/anything.css" tv "title";z/root/r_   r   zlevel1/anything.cssro   asciir   Ntitles4   @charset "ascii";
@import "level2/css.css" "title2";zlevel2/css.cssz/root/level1/level2/css.cssr   title2s*   @charset "ascii";
a {
    color: red
    }z@import "CANNOT-FIND.css";r   zCANNOT-FIND.cssc                 S   s   |  drdS dS )Nz
level1.css)Ns'   @charset "ascii"; @import "level2.css";)Ns   a { color: red })endswithrQ   r   r   r   rR   u  s   
z+@charset "iso-8859-1";@import "level1.css";z
iso-8859-1)r   rW   rX   r   r+   r)   encoding	ownerRuler%   r   r/   rq   r-   r&   r   r*   )r   rR   rY   rZ   irir2r   r   r   test_styleSheetC  sN   



z!TestCSSImportRule.test_styleSheetc              
   C   s*   dddddddddd	}| j |dd	 d
S )zCSSImportRule (incomplete)r<   rk   r   z@import url("x;");z@import url("x ");z@import "c";)	z@import "x.cssz
@import 'xz@import url(xz@import url('xz@import url("x;z@import url( "x;z@import url("x z@import url(x zD@import "a
                @import "b";
                @import "c";F)raisingN)rD   rH   r   r   r   test_incomplete  s   z!TestCSSImportRule.test_incompletec                 C   s   |  d dS )z,CSSImportRule.cssText InvalidModificationErrz@importN)_test_InvalidModificationErrr   r   r   r   test_InvalidModificationErr  s   z-TestCSSImportRule.test_InvalidModificationErrc                 C   sz   d}d}d}t jj|||d}|t|v sJ tt|}t||js%J ||jks,J ||j	j
ks4J ||jks;J dS )z$CSSImportRule.__repr__(), .__str__()zx.cssz	tv, printr   r   N)r   r   r	   strevalreprr&   r8   r   r%   r   r   )r   r   r   r   rg   s2r   r   r   test_reprANDstr  s   z!TestCSSImportRule.test_reprANDstr)__name__
__module____qualname__r   r"   rJ   rO   r[   r^   rh   rn   rx   rz   r|   r   __classcell__r   r   r7   r   r      s    @W0Cr   )
__doc__rd   xml.domr2   r0   r   r   r   TestCSSRuler   r   r   r   r   <module>   s    