o
    eP                     @   s   d Z ddlm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mZmZmZmZ ddl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    )MessageN)mock)BaseListSeq_readUrl_defaultFetcher	LazyRegexc                   @   s   e Zd Zdd ZdS )ListSeqTestCasec                 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   HD:\Projects\ConvertPro\env\Lib\site-packages\cssutils/tests/test_util.pytest_all   s(   zListSeqTestCase.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 )BaseTestCasec                 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BaseTestCase.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    zCBaseTestCase.test_tokenupto.<locals>.maketokens.<locals>.<listcomp>r   )Z	valuelistr   r   r   
maketokensv   s   z/BaseTestCase.test_tokenupto.<locals>.maketokens(r
   ZFUNCTIONzfunc(r      r%   r'   T)r'   r)   )r)   r+   )r+   r-   )r-   r/   )r/   r1   )CHAR[r   r    c                 S   s   g | ]}|d  qS )r
   r   )r2   tr   r   r   r4          z/BaseTestCase.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BaseTestCase.test_tokenuptoN)r   r   r   r$   rD   r   r   r   r   r   /   s    r   c                   @   s    e Zd ZdZdd Zdd ZdS )_readUrl_TestCasez
needs mockc                 C   s  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!d&ddddd dffd dddd  ffd!d0d1i d2d3dddd dffd4d5d6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dLdMdNdOd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      zE_readUrl_TestCase.test_readUrl.<locals>.make_fetcher.<locals>.fetcherr   )rL   rM   r   rK   r   make_fetcher   s   z4_readUrl_TestCase.test_readUrl.<locals>.make_fetcherN)NNN)Nr:   )utf-8   r:      €)rP   rQ   rR   rP   )rP   r
   rR   
ISO-8859-1   äz
iso-8859-1)rS   r
   rT   )ASCII   a)rU   r
   a)rM   )latin1asciiutf-16    )rX   r   r:   )rX   rY   r[      123)rX   r   123rX   rY   r[   )rX   r   rT   )rX   rY   r[   rV   )rX   r   rW   )rX   rY   r[      @charset "ascii";)rX   r   @charset "latin1";   @charset "utf-8";ä)rX   r      @charset "latin1";ä)rX   r      @charset "latin1";Ã¤)rX   NN)rX   NNr\   )rX   NNr^   )rX   NNrV   )rX   NNrb   )rX   rY   N)rX   rY   rg   )rX   rY   rh   )rX   rY   ri   )rX   rY   rj   )rX   NrZ   )rX   Nr]   )rX   Nr`   )rX   Nra   )NrY   )rX   r\   )rX   r
   r:   )NrY   )rX   r^   )rX   r
   r_   )rX   r
   rT   )NrY   )rX   rV   )rX   r
   rW   )NrY   )rX   rb   )rX   r
   rc   )rX   r
   re   )rX   r
   rf   )NrY   )Ns   @charset "latin1";)rX   r   rc   re   )rX   r   re   )rX   r   rf   	utf-8-sig)rk   r   rT   )rk   r   rd   )NrX   rg   )rX      r:   )NrX   rh   )rX   rl   r_   )rX   rl   rT   )NrX   ri   )rX   rl   rW   )rX   rl   u   Ã¤)NNrg   )NNrh   )rP   rQ   r_   )NNri   )rP   rQ   rW   )rP   rQ   rT   )rP   rQ   N)ZoverrideEncodingZparentEncodingrM   )encoder   r   r   )r   rJ   rO   r!   rL   r#   overrideparentr   r   r   test_readUrl   s>  	
 !"$).45678:?DJKLMOTY_diopqrty~   
          %  &  '  (  )  /  Az_readUrl_TestCase.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 )z7_readUrl_TestCase.test_defaultFetcher.<locals>.Responsezurllib2.Reponse mockNc                 S   sB   || _ t }||d< | | _|dd | _|| _|| _|| _d S )Nzcontent-typecharset)	rJ   r   get_content_typemimetype	get_paramrq   text	exceptionargs)r   rJ   contenttypecontentrv   rw   mr   r   r   __init__  s   

z@_readUrl_TestCase.test_defaultFetcher.<locals>.Response.__init__c                 S   s   | j S rH   rI   r   r   r   r   geturl  s   z>_readUrl_TestCase.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 )zJ_readUrl_TestCase.test_defaultFetcher.<locals>.Response.info.<locals>.Infoc                    rG   rH   r   r|   )rs   r   r   gettype  rN   zR_readUrl_TestCase.test_defaultFetcher.<locals>.Response.info.<locals>.Info.gettypeNc                    rG   rH   r   )r   name)rq   r   r   getparam  rN   zS_readUrl_TestCase.test_defaultFetcher.<locals>.Response.info.<locals>.Info.getparamrH   )r   r   r   r~   r   rr   get_content_charsetr   rq   rs   r   r   Info  s
    r   )rs   rq   )r   r   r   r   r   info  s   z<_readUrl_TestCase.test_defaultFetcher.<locals>.Response.infoc                 S   s   | j s| jS | j | j rH   )rv   ru   rw   r|   r   r   r   read  s   z<_readUrl_TestCase.test_defaultFetcher.<locals>.Response.read)NN)r   r   r   __doc__r{   r}   r   r   r   r   r   r   Response}  s    
r   Nc                    s    fdd}|S )Nc                     s   r  dS )Nrv   rw   r   )Zignored)r   rw   ry   rx   rv   rJ   r   r   r     s
   
zA_readUrl_TestCase.test_defaultFetcher.<locals>.urlopen.<locals>.xr   )rJ   rx   ry   rv   rw   r   r   )rw   ry   rx   rv   rJ   r   urlopen  s   z6_readUrl_TestCase.test_defaultFetcher.<locals>.urlopenzurllib.request.urlopenztext/cssrR   ztext/css;charset=utf-8rP   )ztext/css;charset=asciirW   )rY   rW   rF   )newc                 S      t | S rH   r   rI   r   r   r   do     z1_readUrl_TestCase.test_defaultFetcher.<locals>.doz	text/htmlrW   c                 S   r   rH   r   rI   r   r   r   r     r   zinvalid value for urlZurlerrorZioerror)1z	mailto:e4zhttp://xr   c                 S   r   rH   r   rI   r   r   r   r     r   zurllib.request.Requestui  zserver errori  z	not found)e2Ze3c                 S   r   rH   r   rI   r   r   r   r     s   )NNNN)rm   r   r   r   patchr   r   
ValueErrorurlliberrorURLError	HTTPError)r   r   Zurlopenpatchr!   rJ   rx   ry   r#   r   rv   rw   Zurlrequestpatchr   r   r   test_defaultFetcherz  sZ   ,
	






z%_readUrl_TestCase.test_defaultFetcherN)r   r   r   r   rp   r   r   r   r   r   rE      s
     erE   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 rH   )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   rl   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_findall0  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   rz   r   r   r   r4   5  r<   z/TestLazyRegex.test_finditer.<locals>.<listcomp>r   r   )r   r   )r   resultr   r   r   test_finditer3  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>9      z(TestLazyRegex.test_sub.<locals>.<lambda>bazbaz)r   r   r|   r   r   r   test_sub7  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_groupsA  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_groupindexG  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_flagsM  s   
zTestLazyRegex.test_flagsc                 C   s   | j jdksJ d S r   )r   r   r|   r   r   r   test_patternQ  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   email.messager   r   urllib.requestr   urllib.errorurllib.parseZunittestr   Zcssutils.utilr   r   r   r   r   r   r	   r   rE   r   r   r   r   r   <module>   s     d  f