o
    e                     @   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.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rZrROr   Zr_typeZr_typeStringself r   RD:\Projects\ConvertPro\env\Lib\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 Zxxx)super	test_initr
   encodingcssTextpytestraisesxmldomInvalidModificationErrZ_setCssTextr   	__class__r   r   r      s   
"zTestCSSCharsetRule.test_initc                 C   s   |  d dS )z%CSSCharsetRule InvalidModificationErrz@charsetN)Z_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(   r*   )	r
   r   r+   r   r   r   r   r   r,   )r   r-   r   r   r   test_encoding0   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";)r0   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*/;)Z
do_equal_rZ
do_equal_pr   r   r   r,   Z
do_raise_r)r   testsr   r   r   test_cssText?   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_repra   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evalr3   
isinstancer   r   )r   r   ss2r   r   r   test_reprANDstrf   s   z"TestCSSCharsetRule.test_reprANDstr)__name__
__module____qualname__r   r   r   r.   r/   r2   r4   r:   __classcell__r   r   r   r   r   	   s    	"r   )
__doc__Zxml.domr   r   r   Zcssutils.cssr   r   ZTestCSSRuler   r   r   r   r   <module>   s    