o
    /h 6                     @   s   d Z ddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZmZmZ G dd dZG dd dZG dd	 d	ZG d
d dZdS )z)Testcases for cssutils.css.CSSCharsetRule    N)Choice	Exhausted
ParseErrorPreDefProd
ProdParserSequencec                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestProdc                 C   s^   t ddd }t|dksJ |jdu sJ |jdu sJ t ddd dd	}|jdu s-J dS )
zProd.__init__(...)minc                 S      | dko|dkS N       tvr   r   R/var/www/html/myenv/lib/python3.10/site-packages/cssutils/tests/test_prodparser.py<lambda>       z$TestProd.test_init.<locals>.<lambda>NFoptionalc                 S      dS NTr   r   r   r   r   r          Tr   )r   strtoStorer   selfpr   r   r   	test_init   s   zTestProd.test_initc                 C   sN   t ddd }|dddu sJ |dddu sJ |dddu s%J dS )	zProd.__init__(...match=...)r
   c                 S   r   r   r   r   r   r   r   r   "   r   z)TestProd.test_initMatch.<locals>.<lambda>r   r   TFN)r   matchr   r   r   r   test_initMatch    s   zTestProd.test_initMatchc                 C   s   t ddd dd}|ddgddksJ |d	d
gddks!J t ddd dd d}|ddgddks8J |ddgddksDJ dS )zProd.__init__(...toSeq=...)allc                 S   r   r   r   r   tokensr   r   r   r   *   r   z)TestProd.test_initToSeq.<locals>.<lambda>N)toSeqr   r   r   r   s1s2)r(   r)   c                 S   r   r   r   r   r   r   r   r   0   r   c                 S   s   d| d kd| d kfS )Nr   r      r   r$   r   r   r   r   0   s    r*   )TT   )FF)r   r&   r   r   r   r   test_initToSeq'   s   zTestProd.test_initToSeqc                 C   s   t ddd dd}i }||d |d dksJ dg i}||d ||d |d ddgks3J dd	 }t dd
d |dd}dg i}||d |d dksTJ dS )zProd.__init__(...toStore=...)r#   c                 S   r   r   r   r   r   r   r   r   7   r   z+TestProd.test_initToStore.<locals>.<lambda>key)r   r   r   c                    s    fdd}|S )Nc                    s   |d |  < d S Nr   r   )storeitemr-   r   r   r   F   s   zATestProd.test_initToStore.<locals>.doubleToStore.<locals>.toStorer   )r-   r   r   r1   r   doubleToStoreE   s   z0TestProd.test_initToStore.<locals>.doubleToStorec                 S   r   r   r   r   r   r   r   r   K   r   N)r   r   )r   r   sr2   r   r   r   test_initToStore5   s   zTestProd.test_initToStorec                 C   s|   t ddd }t ddd dd}|g ddu sJ |g ddu s&J |g d	d
u s1J |g d	d
u s<J dS )zProd.matches(token)p1c                 S   r   r   r   r   r   r   r   r   R   r   z'TestProd.test_matches.<locals>.<lambda>p2c                 S   r   r   r   r   r   r   r   r   S   r   Tr   )r   r   r   r   r   r   r   r   FN)r   matches)r   r5   r6   r   r   r   test_matchesP   s   zTestProd.test_matchesN)__name__
__module____qualname__r    r"   r,   r4   r9   r   r   r   r   r	      s    r	   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestSequencec                 C   sF   t ddd }t ddd }t||}d|jksJ d|jks!J dS )zSequence.__init__()r5   c                 S      | dkS Nr   r   r   r   r   r   r   ]       z(TestSequence.test_init.<locals>.<lambda>r6   c                 S   r>   r.   r   r   r   r   r   r   ^   r@   r   N)r   r   _min_max)r   r5   r6   seqr   r   r   r    [   s
   
zTestSequence.test_initc                 C   s   t ddd }t ddd }t||dd d}d|jksJ d	|jks%J t||d
d d}d|jks5J ztj}W n tyF   tj}Y nw ||jksNJ dS )z Sequence.__init__(...minmax=...)r5   c                 S   r>   r?   r   r   r   r   r   r   f   r@   z.TestSequence.test_initminmax.<locals>.<lambda>r6   c                 S   r>   r.   r   r   r   r   r   r   g   r@   c                   S   r   )N)r   r*   r   r   r   r   r   r   i   r   minmaxr   r*   c                   S   r   N)r   Nr   r   r   r   r   r   m   r   r   N)r   r   rA   rB   sysmaxsizeAttributeError)r   r5   r6   r3   mr   r   r   test_initminmaxd   s   

zTestSequence.test_initminmaxc                 C   s`   t ddd }t|dd d}|jrJ t|dd d}|js!J t|dd d}|js.J dS )	zSequence.optionalr5   c                 S   r>   r?   r   r   r   r   r   r   z   r@   z,TestSequence.test_optional.<locals>.<lambda>c                   S   r   )N)r   r*   r   r   r   r   r   r   |   r   rD   c                   S   r   )N)r   r*   r   r   r   r   r   r   ~   r   c                   S   r   rF   r   r   r   r   r   r      r   N)r   r   r   )r   r5   r3   r   r   r   test_optionalx   s   

zTestSequence.test_optionalc                 C   s   t ddd }t ddd }t||}d}d}|||ks J |||ks)J tt || W d   n1 s>w   Y  |  |||ksPJ dS )	zSequence.reset()r5   c                 S   r>   r?   r   r   r   r   r   r      r@   z)TestSequence.test_reset.<locals>.<lambda>r6   c                 S   r>   r.   r   r   r   r   r   r      r@   r   r   r   r   r   r   r   r   N)r   r   nextProdpytestraisesr   reset)r   r5   r6   rC   t1t2r   r   r   
test_reset   s   
zTestSequence.test_resetc                 C   s   t ddd }t ddd dd}d}d	}d
}t||}||s"J ||r)J t||}||s5J ||s<J tt||}||sJJ ||sQJ ||rXJ dS )zSequence.matches()r5   c                 S   r>   r?   r   r   r   r   r   r      r@   z+TestSequence.test_matches.<locals>.<lambda>r6   c                 S   r>   r.   r   r   r   r   r   r      r@   Tr   rM   rN   r*   r   r   r   N)r   r   r8   r   )r   r5   r6   rS   rT   t3r3   r   r   r   r9      s   

zTestSequence.test_matchesc                 C   sB  t ddd dd}t ddd }d}d	}|f||fg|d
fg||f|d
fg||f|d
fgf|f||fg||f|d
fg||f|d
fg|dfgf||f||f||fg||f|dfgfi}t| D ]?\}}|D ]8}t| }	|D ]/\}
}t|trtjt|d |		|
 W d   n1 sw   Y  qn||		|
ksJ qnqfq`||f||fg||f||fg||f||fg||f||f||fg||f||f||f||fg||f||f||f||f|d
fgf|f||fg|d
fg||f||fg||f|d
fg||f||f|d
fg||f||f|d
fgf|f||fg|dfg||f||fg||f|dfg||f||f|d
fg||f||f|d
fgf||f||f|dfg||f||fg||f||f||fg||f||f||fg||f||f||f||fg||f||f|d
fg||f||f||f|d
fg||f||f||f|d
fg||f||f||f|d
fg||f||f||f|d
fg||f||f||f||f|d
fg||f||f||f||f|d
fgfi}t| D ]N\}}|D ]F}t|ddd i}	|D ]7\}
}t|trtjtt
|d |		|
 W d   n	1 sw   Y  q||		|
ksJ qq֐qdS )zSequence.nextProd()r5   c                 S   r>   r?   r   r   r   r   r   r      r@   z,TestSequence.test_nextProd.<locals>.<lambda>Tr   r6   c                 S   r>   r.   r   r   r   r   r   r      r@   rM   rN   Extra tokenMissing token for production p2r!   Nz)No match for (1, 0, 0, 0) in Sequence(p2)rE   c                   S   r   Nr'   r   r   r   r   r   r      r   )r   listitemsr   
isinstancer   rP   rQ   r   rO   reescape)r   r5   r6   rS   rT   testsseqitemsresultsresultrC   r   r   r   r   r   test_nextProd   s   
 	  +zTestSequence.test_nextProdN)	r:   r;   r<   r    rK   rL   rU   r9   re   r   r   r   r   r=   Z   s    	r=   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestChoicec                 C   s  t ddd }t ddd }d}d}d}t||}tjttd	d
 || W d   n1 s3w   Y  |||ksAJ tjtdd
 || W d   n1 sXw   Y  t||}|||kskJ tjtdd
 || W d   n1 sw   Y  t||}tjttdd
 || W d   n1 sw   Y  |||ksJ tjtdd
 || W d   n1 sw   Y  t||}|||ksJ tjtdd
 || W d   dS 1 sw   Y  dS )zChoice.__init__()r5   c                 S   r>   r?   r   r   r   r   r   r     r@   z&TestChoice.test_init.<locals>.<lambda>r6   c                 S   r>   r.   r   r   r   r   r   r     r@   r7   rM   rN   z+No match for (0, 0, 0, 0) in Choice(p1, p2)rZ   NrX   z+No match for (0, 0, 0, 0) in Choice(p2, p1))	r   r   rP   rQ   r   r_   r`   rO   r   )r   r5   r6   t0rS   rT   chr   r   r   r      sF   





"zTestChoice.test_initc                 C   s   t ddd }t ddd dd}d}d	}d
}t||}||s"J ||s)J ||r0J tt|t|}||s@J ||sGJ ||rNJ dS )zChoice.matches()r5   c                 S   r>   r?   r   r   r   r   r   r   (  r@   z)TestChoice.test_matches.<locals>.<lambda>r6   c                 S   r>   r.   r   r   r   r   r   r   )  r@   Tr   rM   rN   rV   N)r   r   r8   r   )r   r5   r6   rS   rT   rW   cr   r   r   r9   &  s   
zTestChoice.test_matchesc           
      C   s,  t ddd }t ddd }t||}t||}d}d}d}t||}d	}	tjtt|	d
 || W d   n1 s?w   Y  |||ksMJ tjt	dd
 || W d   n1 sdw   Y  t||}|||kswJ tjt	dd
 || W d   dS 1 sw   Y  dS )zChoice with nested Sequencer5   c                 S   r>   r?   r   r   r   r   r   r   ;  r@   z(TestChoice.test_nested.<locals>.<lambda>r6   c                 S   r>   r.   r   r   r   r   r   r   <  r@   r7   rM   rN   zGNo match for (0, 0, 0, 0) in Choice(Sequence(p1, p1), Sequence(p2, p2))rZ   NrX   )
r   r   r   rP   rQ   r   r_   r`   rO   r   )
r   r5   r6   r(   r)   rg   rS   rT   rh   expectedr   r   r   test_nested9  s,   



"zTestChoice.test_nestedc                 C   s   t ddd }t ddd }d}d}t||}|||ks J tt || W d   n1 s5w   Y  |  |||ksGJ dS )	zChoice.reset()r5   c                 S   r>   r?   r   r   r   r   r   r   T  r@   z'TestChoice.test_reset.<locals>.<lambda>r6   c                 S   r>   r.   r   r   r   r   r   r   U  r@   rM   rN   N)r   r   rO   rP   rQ   r   rR   )r   r5   r6   rS   rT   rh   r   r   r   rU   R  s   
zTestChoice.test_resetN)r:   r;   r<   r    r9   rk   rU   r   r   r   r   rf     s
    $rf   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestProdParserc                 C   s   d S )Nr   )r   r   r   r   setup_methodb  s   zTestProdParser.setup_methodc                 C   sz   t  }dd }|jdd| dd\}}}}|sJ dt|ks!J |jdd| dd\}}}}|s3J d	t|ks;J d
S )zProdParser.parse(keepS)c                   S   s   t tddtddS )N;:)r   r   charr   r   r   r   prodsj  s   z.TestProdParser.test_parse_keepS.<locals>.prodsz; :testT)keepSr*   Fr   N)r   parselen)r   r   rq   wrC   r/   unusedr   r   r   test_parse_keepSe  s   zTestProdParser.test_parse_keepSc                 C   s  t ddd }t ddd }t ddd }dddd	d	d
dddd	}t| D ]N\}}tt||dd d|}|du rNt |d|\}}	}
}||ksMJ q'tjt	j
jtd| d t |d| W d   n1 spw   Y  q'ddddddddddd
}t| D ]P\}}ttt|dd d||}|du rt |d|\}}	}
}||ksJ qtjt	j
jtd| d t |d| W d   n1 sw   Y  qdS )zProdParser.parse() 2r5   c                 S      |dkS )N1r   r   r   r   r   r   w  r@   z+TestProdParser.test_combi.<locals>.<lambda>r6   c                 S   ry   )N2r   r   r   r   r   r   x  r@   p3c                 S   ry   )N3r   r   r   r   r   r   y  r@   TrY   zNo match: ('IDENT', 'x', 1, 9)zNo match: ('NUMBER', '1', 1, 9)zNo match: ('IDENT', 'x', 1, 3)zNo match: ('NUMBER', '3', 1, 3))	z1 2z1 2 1 2r}   rz   z1 2 1z	1 2 1 2 xz	1 2 1 2 1z3 xz3 3c                   S   r   r[   r   r   r   r   r   r     r   rD   TzT: rZ   NzMissing token for production p3zNo match: ('NUMBER', '3', 1, 5)zNo match: ('NUMBER', '3', 1, 7)zLMissing token for production Choice(Sequence(p1), p2): ('NUMBER', '3', 1, 1))
z1 3z1 1 3z2 3rz   z1 1z1 3 3z1 1 3 3z2 3 3r{   r}   c                   S   r   r[   r   r   r   r   r   r     r   )r   r\   r]   r   r   r   rt   rP   rQ   xmldom	SyntaxErrr_   r`   )r   r5   r6   r|   ra   textexprq   
wellformedrC   r/   rw   r   r   r   
test_combiu  sf     zTestProdParser.test_combiN)r:   r;   r<   rm   rx   r   r   r   r   r   rl   a  s    rl   )__doc__r_   rG   xml.domr   rP   cssutils.prodparserr   r   r   r   r   r   r   r	   r=   rf   rl   r   r   r   r   <module>   s    $F (`