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.CSSCharsetRule    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
  ZS )TestCSSCharsetRulec                 C   s2   t j | _t jjdd| _t jjj| _d| _d S )NT)readonlyCHARSET_RULE)cssutilscssCSSCharsetRulerrROr   r_typer_typeStringself r   V/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_csscharsetrule.py_setup_rule   s   
zTestCSSCharsetRule._setup_rulec                    sj   t    | jjdu sJ d| jjksJ ttjj	 | j
d W d   dS 1 s.w   Y  dS )zCSSCharsetRule.__init__()N xxx)super	test_initr
   encodingcssTextpytestraisesxmldomInvalidModificationErr_setCssTextr   	__class__r   r   r      s   
"zTestCSSCharsetRule.test_initc                 C   s   |  d dS )z%CSSCharsetRule InvalidModificationErrz@charsetN)_test_InvalidModificationErrr   r   r   r   test_InvalidModificationErr   s   z.TestCSSCharsetRule.test_InvalidModificationErrc              	   C   s   dD ]/}t j|}|du r|jdu sJ d|jksJ q| |jks&J d|  |jks1J qdD ]!}tjtj	j
dd t j| W d   n1 sPw   Y  q4dD ]!}tjtj	j
d	d t j| W d   n1 stw   Y  qXdS )
z!CSSCharsetRule.__init__(encoding))NUTF-8utf-8
iso-8859-1asciiNr   @charset "%s";) ascii  asciiascii Syntax ErrormatchunknownUnknown \(Python\) encoding)r   r   r	   r   r   lowerr   r   r   r   	SyntaxErr)r   encr
   r   r   r   test_init_encoding    s$   z%TestCSSCharsetRule.test_init_encodingc              	   C   s   dD ]}|| j _| | j jksJ d|  | j jksJ qdD ]}tjtjjdd || j _W d   n1 s;w   Y  q!dD ]}tjtjjdd || j _W d   n1 s]w   Y  qCdS )	zCSSCharsetRule.encoding)r#   r$   r%   r&   r'   )Nr(   r)   r*   r+   r,   Nr.   r0   )	r
   r   r1   r   r   r   r   r   r2   )r   r3   r   r   r   test_encoding3   s   

z TestCSSCharsetRule.test_encodingc                 C   s   ddd}|  | | | 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 )zCSSCharsetRule.cssText

        setting cssText is ok to use @CHARSET or other but a file
        using parse MUST use ``@charset "ENCODING";``
        N@charset "utf-8";)r6   z@charset 'utf-8';)z
@charset;"z@CHARSET "UTF-8";z@charset "";z@charset /*1*/"utf-8"/*2*/;z@charset /*1*/"utf-8";z@charset "utf-8"/*2*/;z@charset { utf-8 }z@charset "utf-8"z@charset a;z@charset /**/;z@charset "utf-8";sz@charset "utf-8";/**/z@charset "utf-8"; z@charset "utf-8"/*1*//*2*/;)
do_equal_r
do_equal_pr   r   r   r2   
do_raise_r)r   testsr   r   r   test_cssTextB   s*   

zTestCSSCharsetRule.test_cssTextc                 C   s   d| j _dt| j v sJ dS )zCSSCharsetRule.__repr__()r$   N)r
   r   reprr   r   r   r   	test_reprd   s   zTestCSSCharsetRule.test_reprc                 C   sP   d}t jj|d}|t|v sJ tt|}t||jsJ ||jks&J dS )z%CSSCharsetRule.__repr__(), .__str__()r$   )r   N)	r   r   r	   strevalr<   
isinstancer    r   )r   r   ss2r   r   r   test_reprANDstri   s   z"TestCSSCharsetRule.test_reprANDstr)__name__
__module____qualname__r   r   r"   r4   r5   r;   r=   rC   __classcell__r   r   r   r   r      s    	"r   )
__doc__xml.domr   r   cssutils.cssr   r   r   TestCSSRuler   r   r   r   r   <module>   s    