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(Testcases for cssutils.css.CSSImportRule    N   )test_cssrulec                   @   sL   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S )TestCSSNamespaceRulec                 C   s&   t jjdd| _t jjj| _d| _d S )NxnamespaceURINAMESPACE_RULE)cssutilscssCSSNamespaceRulerCSSRuler   r_typer_typeStringself r   X/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_cssnamespacerule.py_setup_rule   s   
z TestCSSNamespaceRule._setup_rulec                 C   sZ  g d}|D ]/\}}t jj||d}|jdu sJ d|jks J d|jks'J |jdu s.J |jdu s5J qt jjdd}d|jksDJ d|jksKJ d|jksRJ | j	| | j|jks`J t jjddd}d|jksoJ d|jksvJ d	|jks}J d
}t jj|d}|j|ksJ t
tjj | jd W d   dS 1 sw   Y  dS )zCSSNamespaceRule.__init__()))NN) r   Nr   )r   N)r   zno-urir   prefixNr   exampler   z@namespace "example";pz@namespace p "example";@namespace p "u";cssTextr   )r	   r
   r   r   r   r   parentStyleSheet
parentRulesheetaddpytestraisesxmldomInvalidModificationErrr   _setAtkeyword)r   testsurir   r   r
   r   r   r   	test_init   s0   "zTestCSSNamespaceRule.test_initc              	   C   s  t j }d}||_|j|ksJ ttjj |	d W d   n1 s(w   Y  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}| 
| t| D ]\}}t jj|d}|du r|}||jksJ qwtjjtjj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tjjd dd }t| D ]\}}t| || W d   n1 sw   Y  qdS ) zCSSNamespaceRule.cssTextr   z@namespace p "OTHER";Nz@namespace "";@namespace "u";z@namespace empty "";z@namespace p "p";z@namespace p 'u';z@\namespace p "u";z@NAMESPACE p "u";z@namespace  p  "u"  ;z@namespace p"u";z@namespace/*1*/"u"/*2*/;z@namespace /*1*/ "u" /*2*/;z@namespace/*1*/p/*2*/"u"/*3*/;z#@namespace /*1*/ p /*2*/ "u" /*3*/;z@namespace p url(u);z@namespace p url('u');z@namespace p url("u");z@namespace p url( "u" );z0@namespace/*1*//*2*/p/*3*//*4*/url(u)/*5*//*6*/;z5@namespace /*1*/ /*2*/ p /*3*/ /*4*/ "u" /*5*/ /*6*/;z'@namespace /*1*/ /*2*/ "u" /*5*/ /*6*/;z@namespace p "str";z@namespace "str";)z-@namespace/*1*//*2*/p/*3*//*4*/"u"/*5*//*6*/;z2@namespace/*1*//*2*/p/*3*//*4*/url("u")/*5*//*6*/;z%@namespace/*1*//*2*/url(u)/*5*//*6*/;z+@namespace
	 p
	 url(
	 u
	 )
	 ;z-@namespace
	 p
	 url(
	 "u"
	 )
	 ;z @namespace
	 p
	 "str"
	 ;z@namespace
	 "str"
	 ;r   )z@namespace;z@namespace p;z@namespace "u" p;z@namespace "u";EXTRAz@namespace p "u";EXTRA)z@namespace p url(x)z@namespace p "u"z@namespace "u"; z@namespace "u";/**/z@namespace p "u"; z@namespace p "u";/**/c                 S   s   t jj| d d S )Nr   )r	   r
   r   )testr   r   r   _doy   s   z.TestCSSNamespaceRule.test_cssText.<locals>._do)r	   r
   r   r   r"   r#   r$   r%   NoModificationAllowedErr_setCssText
do_equal_plistitems	SyntaxErr
do_raise_pupdate)r   r   r
   r(   r,   expectedr-   r   r   r   test_cssText9   s   
	




z!TestCSSNamespaceRule.test_cssTextc                 C   s   t jjdd}d|jksJ d|jksJ t jjdd}d|jks#J ttjj	 |
d W d   n1 s:w   Y  ttjj	 |d W d   n1 sVw   Y  |d d|jksgJ dS )	zCSSNamespaceRule.namespaceURIr   r   @namespace "x";"z@namespace "\"";Nr+   zhttp://example.com/new)r	   r
   r   r   r   r"   r#   r$   r%   r.   _setNamespaceURIr/   _replaceNamespaceURI)r   r   r   r   r   test_namespaceURI   s   
z&TestCSSNamespaceRule.test_namespaceURIc              	   C   s  t jjdd}d|_d|jksJ d|jksJ t jjdd}d|_d|jks)J d|jks0J d}|D ]}||_|jdks@J d	|jksGJ q4d
}|D ]}||_|j|ksXJ d| |jksaJ qLd}|D ]}ttjj	 |
| W d   n1 sw   Y  qfdS )zCSSNamespaceRule.prefixur   r   r   z@namespace x "u";r   r   r   r+   )a_xa1za-1z@namespace %s "u";)1z x ,N)r	   r
   r   r   r   r"   r#   r$   r%   r3   
_setPrefix)r   r   validr   invalidr   r   r   test_prefix   s2   z TestCSSNamespaceRule.test_prefixc                 C   s   |  d dS )z/CSSNamespaceRule.cssText InvalidModificationErrz
@namespaceN)_test_InvalidModificationErrr   r   r   r   test_InvalidModificationErr   s   z0TestCSSNamespaceRule.test_InvalidModificationErrc                 C   s\   dddddddd}|  | tjjtjjtjjtjjtjjtjjtjjd}| | dS )zCSSNamespaceRule (incomplete)z@namespace "uri";r8   z@namespace "x;";z@namespace "x ";)z@namespace "uriz@namespace url(xz@namespace url('xz@namespace url("x;z@namespace url( "x;z@namespace url("x z@namespace url(x N)r0   r$   r%   r3   
do_raise_r)r   r(   r   r   r   test_incomplete   s$   
		z$TestCSSNamespaceRule.test_incompletec                 C   st   d}d}t jj||d}|t|v sJ |t|v sJ tt|}t||js*J ||jks1J ||j	ks8J dS )z'CSSNamespaceRule.__repr__(), .__str__()zhttp://example.comr   r   N)
r	   r
   r   strevalrepr
isinstance	__class__r   r   )r   r   r   ss2r   r   r   test_reprANDstr   s   z$TestCSSNamespaceRule.test_reprANDstrN)__name__
__module____qualname__r   r*   r7   r<   rG   rI   rK   rS   r   r   r   r   r      s    %Gr   )	__doc__xml.domr$   r"   r	   r   r   TestCSSRuler   r   r   r   r   <module>   s    