o
    Q+ iN                     @   s   d Z ddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
Z
ddl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.util    N)Message)mock)Base	LazyRegexListSeq_defaultFetcher_readUrlc                   @   s   e Zd Zdd ZdS )TestListSeqc                 C   s  t  }dt|ksJ tt |d W d   n1 s w   Y  tt |dd W d   n1 s;w   Y  |jd |jd dt|ksTJ dd|v u s\J d|d ksdJ d|d kslJ |d= dt|kswJ dd|v u sJ |D ]}d|ksJ qdS )zutil.ListSeqr      N   TF)r   lenpytestraisesNotImplementedErrorappend__setitem__seq)selfZlsx r   d/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/cssutils/tests/test_util.pytest_all   s(   zTestListSeq.test_allN)__name__
__module____qualname__r   r   r   r   r   r	      s    r	   c                   @   s   e Zd Zdd Zdd ZdS )TestBasec                 C   sP   t  }dddd}t| D ]\}}|||ksJ t ||ks%J qdS )zBase._normalize()u!   abcdefg abcdefg äöüß€ aöüzgaga\ 
0123456789)u!   abcdefg ABCDEFG äöüß€ AÖÜz
\ga\Ga\\\ r   N)r   listitems
_normalize)r   bteststestexpr   r   r   test_normalize0   s   zTestBase.test_normalizec                 C   s2  t  }g d}|D ]\}}}}dd }|t|}|r6t|D ]\}	}
d|
d kr5dd|
d |
d	 f||	< qd
|kr@||}nFd|krL|j|dd}n:d|krX|j|dd}n.d|krd|j|dd}n"d|krp|j|dd}nd|kr||j|dd}n
d|kr||d}ddd |D }||ksJ q	dS )zBase._tokensupto2()))defaulta[{1}]({2}) { } NOTza[{1}]({2}) { }F)r%   r&   za[{1}]func({2}) { }T)blockstartonlya[{1}]({2}) { NOTza[{1}]({2}) {F)r'   r(   za[{1}]func({2}) {T)propertynameendonlya[(2)1] { }2 : a;za[(2)1] { }2 :F)r)   r*   za[func(2)1] { }2 :T)propertyvalueendonly,a{;{;}[;](;)}[;{;}[;](;)](;{;}[;](;)) 1; NOTz(a{;{;}[;](;)}[;{;}[;](;)](;{;}[;](;)) 1;F)r+   r,   z8a{;{;}[;]func(;)}[;{;}[;]func(;)]func(;{;}[;]func(;)) 1;T)funcendonlya{[1]}([3])[{[1]}[2]([3])]) NOTza{[1]}([3])[{[1]}[2]([3])])F)r-   r.   z#a{[1]}func([3])[{[1]}[2]func([3])])T)selectorattendonly[a[()]{()}([()]{()}())] NOTz[a[()]{()}([()]{()}())]F)r/   r0   z/[a[func()]{func()}func([func()]{func()}func())]T)withstarttoken [za];xz[a];Fc                 S   s   dd | D S )Nc                 S   s   g | ]}d |ddfqS )ZTYPEr   r   ).0vr   r   r   
<listcomp>x   s    z?TestBase.test_tokenupto.<locals>.maketokens.<locals>.<listcomp>r   )Z	valuelistr   r   r   
maketokensv   s   z+TestBase.test_tokenupto.<locals>.maketokens(r
   ZFUNCTIONzfunc(r      r%   r'   T)r'   r)   )r)   r+   )r+   r-   )r-   r/   )r/   r1   )ZCHAR[r   r    c                 S   s   g | ]}|d  qS )r
   r   )r2   tr   r   r   r4          z+TestBase.test_tokenupto.<locals>.<listcomp>N)r   r   	enumerateZ_tokensupto2join)r   r    r!   typvaluesr#   Zparansasfuncr5   tokensir:   Z	restokensresr   r   r   test_tokenupto?   s6   /zTestBase.test_tokenuptoN)r   r   r   r$   rC   r   r   r   r   r   /   s    r   c                   @   s    e Zd ZdZdd Zdd ZdS )Test_readUrlz
needs mockc                 C   sj  d}dd }dddddd  fd	d
d  fddd dfdddi}t| D ]\}}t|||d|ks7J q'i dddddddd dffddddddddd dffd dddd  ffd!d"dd#dd$ddddd dffdd%dd&ddddd dffd dddd  ffd!d'dd(di d)ddddd dffdd*dd+ddddd dffd dddd  ffd!d,dd-ddddd dffdd.dd/ddddd dffd dddd  ffd!d0d1d2d3dddd dffd4d5d6i d7d8dddd dffd9dddd  ffd:d;d<dddd= dffd>dddd=  ffd?dddd d@ffdAdddd d@ffdBdddd= d@ffdBdCdDdEdFdddd dffdGdHdIdddd  ffdJdKddLdMdNdOdddd  ffdPdddd dffdQi}t| D ]\\}}}}t|||||dR|ksJ qdS )Szutil._readUrl()http://example.com/test.cssc                    s    fdd}|S )Nc                        S Nr   urlrr   r   fetcher      z@Test_readUrl.test_readUrl.<locals>.make_fetcher.<locals>.fetcherr   )rK   rL   r   rJ   r   make_fetcher   s   z/Test_readUrl.test_readUrl.<locals>.make_fetcherN)NNN)Nr9   )utf-8   r9      €)rO   rP   rQ   rO   )rO   r
   rQ   
ISO-8859-1   äz
iso-8859-1)rR   r
   rS   )ASCII   a)rT   r
   a)rL   )latin1asciiutf-16    )rW   r   r9   )rW   rX   rZ      123)rW   r   123rW   rX   rZ   )rW   r   rS   )rW   rX   rZ   rU   )rW   r   rV   )rW   rX   rZ      @charset "ascii";)rW   r   @charset "latin1";   @charset "utf-8";ä)rW   r      @charset "latin1";ä)rW   r      @charset "latin1";Ã¤)rW   NN)rW   NNr[   )rW   NNr]   )rW   NNrU   )rW   NNra   )rW   rX   N)rW   rX   rf   )rW   rX   rg   )rW   rX   rh   )rW   rX   ri   )rW   NrY   )rW   Nr\   )rW   Nr_   )rW   Nr`   )NrX   )rW   r[   )rW   r
   r9   )NrX   )rW   r]   )rW   r
   r^   )rW   r
   rS   )NrX   )rW   rU   )rW   r
   rV   )NrX   )rW   ra   )rW   r
   rb   )rW   r
   rd   )rW   r
   re   )NrX   )Ns   @charset "latin1";)rW   r   rb   rd   )rW   r   rd   )rW   r   re   	utf-8-sig)rj   r   rS   )rj   r   rc   )NrW   rf   )rW      r9   )NrW   rg   )rW   rk   r^   )rW   rk   rS   )NrW   rh   )rW   rk   rV   )rW   rk   u   Ã¤)NNrf   )NNrg   )rO   rP   r^   )NNrh   )rO   rP   rV   )rO   rP   rS   )rO   rP   N)ZoverrideEncodingZparentEncodingrL   )encoder   r   r   )r   rI   rN   r!   rK   r#   overrideparentr   r   r   test_readUrl   s8  	
 !"$).45678:?DJKLMOTY_`abdinty~   
                   !  "  1zTest_readUrl.test_readUrlc              	      s"  G dd d d" fdd	}d}dd  fdd  fd	d  fd
d  fddi}d}t| D ]\\}}}tj|||||ddd }|||ksMJ q0tj|||ddddd }tt || W d   n1 sqw   Y  tdgftj	j
dgftj	j
dgfd}t| D ]/\}\}	}
tj||||	|
dddd }t|	 || W d   n1 sw   Y  qd}tj	jdddi dgftj	jdddi dgfd }t| D ]0\}\}	}
tj||||	|
ddd!d }t|	 || W d   n	1 s	w   Y  qdS )#zutil._defaultFetcherc                   @   s2   e Zd ZdZdddZdd Zdd Zd	d
 ZdS )z2Test_readUrl.test_defaultFetcher.<locals>.Responsezurllib2.Reponse mockNc                 S   sB   || _ t }||d< | | _|dd | _|| _|| _|| _d S )Nzcontent-typecharset)	rI   r   get_content_typemimetype	get_paramrp   text	exceptionargs)r   rI   contenttypecontentru   rv   mr   r   r   __init__p  s   

z;Test_readUrl.test_defaultFetcher.<locals>.Response.__init__c                 S   s   | j S rG   rH   r   r   r   r   geturl~  s   z9Test_readUrl.test_defaultFetcher.<locals>.Response.geturlc                    s(   | j | j G  fddd}| S )Nc                       s.   e Zd ZfddZd fdd	ZeZeZdS )zETest_readUrl.test_defaultFetcher.<locals>.Response.info.<locals>.Infoc                    rF   rG   r   r{   )rr   r   r   gettype  rM   zMTest_readUrl.test_defaultFetcher.<locals>.Response.info.<locals>.Info.gettypeNc                    rF   rG   r   )r   name)rp   r   r   getparam  rM   zNTest_readUrl.test_defaultFetcher.<locals>.Response.info.<locals>.Info.getparamrG   )r   r   r   r}   r   rq   get_content_charsetr   rp   rr   r   r   Info  s
    r   )rr   rp   )r   r   r   r   r   info  s   z7Test_readUrl.test_defaultFetcher.<locals>.Response.infoc                 S   s   | j s| jS | j | j rG   )ru   rt   rv   r{   r   r   r   read  s   z7Test_readUrl.test_defaultFetcher.<locals>.Response.read)NN)r   r   r   __doc__rz   r|   r   r   r   r   r   r   Responsem  s    
r   Nc                    s    fdd}|S )Nc                     s   r  dS )Nru   rv   r   )Zignored)r   rv   rx   rw   ru   rI   r   r   r     s
   
z<Test_readUrl.test_defaultFetcher.<locals>.urlopen.<locals>.xr   )rI   rw   rx   ru   rv   r   r   )rv   rx   rw   ru   rI   r   urlopen  s   z1Test_readUrl.test_defaultFetcher.<locals>.urlopenzurllib.request.urlopenztext/cssrQ   ztext/css;charset=utf-8rO   )ztext/css;charset=asciirV   )rX   rV   rE   )newc                 S      t | S rG   r   rH   r   r   r   do     z,Test_readUrl.test_defaultFetcher.<locals>.doz	text/htmlrV   c                 S   r   rG   r   rH   r   r   r   r     r   zinvalid value for urlZurlerrorZioerror)1z	mailto:e4zhttp://xr   c                 S   r   rG   r   rH   r   r   r   r     r   zurllib.request.Requestui  zserver errori  z	not found)e2Ze3c                 S   r   rG   r   rH   r   r   r   r     s   )NNNN)rl   r   r   r   patchr   r   
ValueErrorurlliberrorURLError	HTTPError)r   r   Zurlopenpatchr!   rI   rw   rx   r#   r   ru   rv   Zurlrequestpatchr   r   r   test_defaultFetcherj  sZ   ,
	






z Test_readUrl.test_defaultFetcherN)r   r   r   r   ro   r   r   r   r   r   rD      s
     UrD   c                   @   s   e Zd 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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 )%TestLazyRegexz"Tests for cssutils.util.LazyRegex.c                 C   s   t d| _d S Nzf.o)r   lazyrer{   r   r   r   setup_method  s   zTestLazyRegex.setup_methodc                 C   s.   g d}|D ]}t | j|sJ d| qd S )N)searchmatchsplitsubsubnfindallfinditerpatternflagsgroups
groupindexzexpected %r public attribute)hasattrr   )r   methodsmethodr   r   r   test_public_interface  s   z#TestLazyRegex.test_public_interfacec                 C   s.   | j jd u sJ | j   | j jd usJ d S rG   )r   Zmatcherensurer{   r   r   r   test_ensure  s   
zTestLazyRegex.test_ensurec                 C   s0   |  dd u s	J |  d}| dksJ d S NbarZfoobarfoo)r   groupr   r   r   r   r   test_calling  s   
zTestLazyRegex.test_callingc                 C   4   | j dd u s
J | j d}| dksJ d S r   )r   r   r   r   r   r   r   test_matching     zTestLazyRegex.test_matchingc                 C   s2   | j ddd u sJ | j dddd u sJ d S )Nr   r
   r   r   )r   r   r{   r   r   r   &test_matching_with_position_parameters  s   z4TestLazyRegex.test_matching_with_position_parametersc                 C   r   )NZrafuubarrafoobarr   r   r   r   r   r   r   r   test_searching  r   zTestLazyRegex.test_searchingc                 C   sP   | j ddd u sJ | j dddd u sJ | j dd}| dks&J d S )Nr   r7   r   rk   Zrafoofuobarfuor   r   r   r   r   'test_searching_with_position_parameters  s   z5TestLazyRegex.test_searching_with_position_parametersc                 C   s6   | j dg dksJ | j ddddgksJ d S )NZrafoobarfoobaz)rar   bazr
   r   Z	barfoobaz)r   r   r{   r   r   r   
test_split  s   zTestLazyRegex.test_splitc                 C   s   | j dddgksJ d S )Nrafoobarfuobazr   r   )r   r   r{   r   r   r   test_findall   s   zTestLazyRegex.test_findallc                 C   s*   | j d}dd |D ddgksJ d S )Nr   c                 S   s   g | ]}|  qS r   )r   )r2   ry   r   r   r   r4   %  r;   z/TestLazyRegex.test_finditer.<locals>.<listcomp>r   r   )r   r   )r   resultr   r   r   test_finditer#  s   zTestLazyRegex.test_finditerc                 C   s4   | j dddksJ | j dd ddksJ d S )Nr   foofoobarbarc                 S      dS Nr   r   r   r   r   r   <lambda>)      z(TestLazyRegex.test_sub.<locals>.<lambda>bazbaz)r   r   r{   r   r   r   test_sub'  s   zTestLazyRegex.test_subc                 C   s<   | j dd}|dksJ | j dd d}|dksJ d S )Nr   r   )r   r   c                 S   r   r   r   r   r   r   r   r   .  r   z)TestLazyRegex.test_subn.<locals>.<lambda>)r   r   )r   r   )r   Zsubbedr   r   r   	test_subn+  s   zTestLazyRegex.test_subnc                 C   s0   t d}|jd u sJ |  |jdksJ d S )Nz(.)(.)r   )r   r   r   r   r   r   r   r   test_groups1  s   zTestLazyRegex.test_groupsc                 C   s4   t d}|jd u sJ |  |jddiksJ d S )Nz
(?P<foo>.)r   r
   )r   r   r   r   r   r   r   test_groupindex7  s   zTestLazyRegex.test_groupindexc                 C   s&   | j   | j jtdjksJ d S )N.)r   r   r   recompiler{   r   r   r   
test_flags=  s   
zTestLazyRegex.test_flagsc                 C   s   | j jdksJ d S r   )r   r   r{   r   r   r   test_patternA  s   zTestLazyRegex.test_patternN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s&    r   )r   r   urllib.errorr   urllib.parseurllib.requestemail.messager   Zunittestr   r   Zcssutils.utilr   r   r   r   r   r	   r   rD   r   r   r   r   r   <module>   s     d  V