o
    /hl                     @   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.CSSFontFaceRule    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  ZS )TestCSSFontFaceRulec                 C   s2   t j | _t jjdd| _t jjj| _d| _d S )NT)readonlyFONT_FACE_RULE)cssutilscssCSSFontFaceRulerrROr   r_typer_typeString)self r   W/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_cssfontfacerule.py_setup_rule   s   
zTestCSSFontFaceRule._setup_rulec                    s  t    tj }t|jtjjsJ ||jjksJ d|j	ks#J t
tjj | jd W d   n1 s;w   Y  dd }|tjjtjdd tj }d|_	|| tj }|jd	d
 || tj }d|jd	< || tj }d|j_|| dS )zCSSFontFaceRule.__init__() xNc                 S   s0   | | j jksJ | j D ]
}| j |jksJ qd S )N)style
parentRuleparent)ffpr   r   r   	checkrefs!   s   
z0TestCSSFontFaceRule.test_init.<locals>.checkrefszfont-family: xr   z@font-face { font-family: x }font-familyyza)super	test_initr   r   r	   
isinstancer   CSSStyleDeclarationr   cssTextpytestraisesxmldomInvalidModificationErrr
   _setAtkeywordsetProperty
fontFamily)r   r
   r   	__class__r   r   r       s4   







zTestCSSFontFaceRule.test_initc                 C   st   ddddddd}|  | | | tjjtjjd}| | |tjjtjjtjjtjjd | | dS )zCSSFontFaceRule.cssTextN%@font-face {
    font-family: x
    }z1@font-face /*1*/ /*2*/ {
    font-family: x
    })a  @font-face {
    font-family: x;
    src: url(../fonts/LateefRegAAT.ttf) format("truetype-aat"), url(../fonts/LateefRegOT.ttf) format("opentype");
    font-style: italic;
    font-weight: 500;
    font-stretch: condensed;
    unicode-range: u+1-ff, u+111
    }z@font-face{font-family: x;}z!@font-face  {  font-family: x;  }z@f\ont\-face{font-family : x;}z%@font-face/*1*//*2*/{font-family: x;}z&@font-face
	 {
	 font-family:x;
	 })z@font-face;z@font-face })z@font-face {z@font-face {}1z@font-face {}/**/z@font-face {} )
do_equal_r
do_equal_pr&   r'   	SyntaxErr
do_raise_pupdate
do_raise_rr   testsr   r   r   test_cssText<   s(   



z TestCSSFontFaceRule.test_cssTextc              
   C   s  t j }|j}||jksJ d|jksJ d|_|j|ks J ||jjks(J |jdks/J |jjdks7J |jdks>J |j}zd|_W n tjjyZ } zW Y d}~nd}~ww |j|ksbJ ||jksiJ |jdkspJ |jdkswJ |jjdksJ d|j_|j|ksJ ||jksJ |jdksJ |jdksJ |jjdksJ t j	d	}||_|j|ksJ ||jksJ |jd
ksJ |jd	ksJ |jjd	ksJ |jdksJ d|_|j|ksJ |jdksJ |jjdksJ |jdksJ zd|_W n tjjy } zW Y d}~nd}~ww |j|ksJ |jjdks'J |jdks/J d|_|j|ks:J |jdksBJ |jjdksKJ |jdksSJ dS )z&CSSFontFaceRule.style (and references)r   z@font-face { font-family: x1 }z&@font-face {
    font-family: x1
    }zfont-family: x1z@font-face { $ }Nzfont-family: x2z&@font-face {
    font-family: x2
    }zfont-family: y1z&@font-face {
    font-family: y1
    }zfont-family: y2z&@font-face {
    font-family: y2
    }$zfont-family: zz%@font-face {
    font-family: z
    })
r   r   r	   r   r   r#   r&   r'   r1   r"   )r   r
   s1s2esnr   r   r   
test_style`   sn   


zTestCSSFontFaceRule.test_stylec                 C   s   t j }d|j_d}||jksJ dg di}t| D ],\}}|D ]%\}}t j }||j|< |j|j|jks>J |j|j	|ksIJ q$qdS )z CSSFontFaceRule.style propertiesz
        src: url(x)
        z"@font-face {
    src: url(x)
    }r   ))zx, yF)z"x", yF)zx, "y"FN)
r   r   r	   r   r#   listitemsgetPropertyr   valid)r   r
   expr6   ntvrA   r   r   r   test_properties   s   



z#TestCSSFontFaceRule.test_propertiesc                 C   s   dddd}|  | dS )zCSSFontFaceRule (incomplete)r   r.   )z@font-face{z@font-face { z@font-face { font-family: xN)r0   r5   r   r   r   test_incomplete   s
   z#TestCSSFontFaceRule.test_incompletec                 C   s$   |  d dtjji}| | dS )z.CSSFontFaceRule.cssText InvalidModificationErrz
@font-facez@font-fac {}N)_test_InvalidModificationErrr&   r'   r(   r4   r5   r   r   r   test_InvalidModificationErr   s   
z/TestCSSFontFaceRule.test_InvalidModificationErrc                 C   sx   t j }d|jksJ d}||d fdd|d |d fd}t| D ]\}}|D ]}||j_||jks8J q+q%d	S )
zCSSFontFaceRule.validFzfont-family: x; src: local(x);z%font-style: italic; font-weight: boldr   z!font-family: x, y; src: local(x);zfont-style: inheritz
invalid: 1)TFN)r   r   r	   rA   r>   r?   r   r#   )r   r
   Nr6   rA   testlisttestr   r   r   
test_valid   s$   
zTestCSSFontFaceRule.test_validc                 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&CSSFontFaceRule.__repr__(), .__str__()zsrc: url(x)r   N)
r   r   r	   strevalreprr!   r-   r   r#   )r   r   sr:   r   r   r   test_reprANDstr   s   z#TestCSSFontFaceRule.test_reprANDstr)__name__
__module____qualname__r   r    r7   r=   rF   rG   rI   rM   rR   __classcell__r   r   r,   r   r      s    *$D	r   )	__doc__xml.domr&   r   r   r   r$   TestCSSRuler   r   r   r   r   <module>   s    