
     hN                         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      Z G d d	      Z G d
 d      Z G d d      Zy)zTestcases for cssutils.util    N)Message)mock)Base	LazyRegexListSeq_defaultFetcher_readUrlc                       e Zd Zd Zy)TestListSeqc                 L   t               }dt        |      k(  sJ t        j                  t              5  |j                  d       ddd       t        j                  t              5  |j                  dd       ddd       |j                  j                  d       |j                  j                  d       dt        |      k(  sJ dd|v u sJ d|d   k(  sJ d|d   k(  sJ |d= dt        |      k(  sJ dd|v u sJ |D ]	  }d|k(  r	J  y# 1 sw Y   xY w# 1 sw Y   xY w)zutil.ListSeqr      N   TF)r   lenpytestraisesNotImplementedErrorappend__setitem__seq)selflsxs      X/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/tests/test_util.pytest_allzTestListSeq.test_all   s   YCG||]]./IIaL 0 ]]./NN1a  0 	a
a CG||R   BqEzzBqEzzqECG||b!!!A6M6 - 0/ 0/s   D'DDD#N)__name__
__module____qualname__r        r   r   r      s    r   r   c                       e Zd Zd Zd Zy)TestBasec                     t               }dddd}t        |j                               D ]5  \  }}|j                  |      |k(  sJ t        j                  |      |k(  r5J  y)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exps        r   test_normalizezTestBase.test_normalize0   sb    F1T$'
 ekkm,ID#<<%,,,??4(C/// -r   c                 p   t               }g d}|D ]  \  }}}}d } |t        |            }|r+t        |      D ]  \  }	}
d|
d   k(  sdd|
d   |
d   f||	<    d	|k(  r|j                  |      }nd
|k(  r|j                  |d      }n{d|k(  r|j                  |d      }nbd|k(  r|j                  |d      }nId|k(  r|j                  |d      }n0d|k(  r|j                  |d      }nd|k(  r|j                  |d      }dj	                  D 
cg c]  }
|
d   	 c}
      }||k(  rJ  yc c}
w )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/   r0   za[{1}]func({2}) {T)propertynameendonlya[(2)1] { }2 : a;za[(2)1] { }2 :F)r1   r2   za[func(2)1] { }2 :T)propertyvalueendonly,a{;{;}[;](;)}[;{;}[;](;)](;{;}[;](;)) 1; NOTz(a{;{;}[;](;)}[;{;}[;](;)](;{;}[;](;)) 1;F)r3   r4   z8a{;{;}[;]func(;)}[;{;}[;]func(;)]func(;{;}[;]func(;)) 1;T)funcendonlya{[1]}([3])[{[1]}[2]([3])]) NOTza{[1]}([3])[{[1]}[2]([3])])F)r5   r6   z#a{[1]}func([3])[{[1]}[2]func([3])])T)selectorattendonly[a[()]{()}([()]{()}())] NOTz[a[()]{()}([()]{()}())]F)r7   r8   z/[a[func()]{func()}func([func()]{func()}func())]T)withstarttoken [za];xz[a];Fc                 4    | D cg c]  }d|ddf
 c}S c c}w )NTYPEr   r   )	valuelistvs     r   
maketokensz+TestBase.test_tokenupto.<locals>.maketokensv   s#    3<=9aAq)9===s   (r   FUNCTIONzfunc(r      r-   r/   T)r/   r1   )r1   r3   )r3   r5   )r5   r7   )r7   r9   )CHAR[r   r    N)r   r$   	enumerate_tokensupto2join)r   r'   r(   typvaluesr*   paransasfuncr>   tokensit	restokensress                r   test_tokenuptozTestBase.test_tokenupto?   s]    F-
^ /4*Cl>  V-F%f-DAqad{%/!A$!$Eq	 . CNN62	!S(NN6$NG	&#-NN6tNL	'3.NN6NM	#%NN6tND	%,NN6dNK	#s*NN63FG	''3A1Q434C#::9 /46 4s   D3
N)r   r   r   r+   rP   r   r   r   r!   r!   /   s    0Qr   r!   c                       e Zd ZdZd Zd Zy)Test_readUrlz
needs mockc                 v   d}d }ddddddj                         fdd	dj                         fd
ddj                  d      fdddi}t        |j                               D ]  \  }}t        | ||            |k(  rJ  i ddddddddj                  d      ffdddddddddj                  d      ffdddddj                         ffd d!dd"dd#dddddj                  d      ffdd$dd%dddddj                  d      ffdddddj                         ffd d&dd'di d(dddddj                  d      ffdd)dd*dddddj                  d      ffdddddj                         ffd d+dd,dddddj                  d      ffdd-dd.dddddj                  d      ffdddddj                         ffd d/d0d1d2ddddj                  d      ffd3d4d5i d6d7ddddj                  d      ffd8ddddj                         ffd9d:d;dddd<j                  d      ffd=dddd<j                         ffd>ddddj                  d?      ffd@ddddj                  d?      ffdAdddd<j                  d?      ffdAdBdCdDdEddddj                  d      ffdFdGdHddddj                         ffdIdJddKdLdMdNddddj                         ffdOddddj                  d      ffdPi}t        |j                               D ]#  \  \  }}}}t        ||| ||      Q      |k(  r#J  y)Rzutil._readUrl()http://example.com/test.cssc                       fd}|S )Nc                     S Nr   )urlrs    r   fetcherz@Test_readUrl.test_readUrl.<locals>.make_fetcher.<locals>.fetcher   s    r   r   )rY   rZ   s   ` r   make_fetcherz/Test_readUrl.test_readUrl.<locals>.make_fetcher   s     Nr   N)NNN)NrD   )utf-8   rD      €)r\   r]   r^   r\   )r\   r   r^   
ISO-8859-1   äz
iso-8859-1)r_   r   r`   )ASCII   a)ra   r   a)rZ   )latin1asciiutf-16r   )rd   r   rD   )rd   re   rg      123)rd   r   123rd   re   rg   )rd   r   r`   )rd   re   rg   rb   )rd   r   rc   )rd   re   rg      @charset "ascii";)rd   r   @charset "latin1";   @charset "utf-8";ä)rd   r      @charset "latin1";ä)rd   r      @charset "latin1";Ã¤)rd   NN)rd   NNr   )rd   NNri   )rd   NNrb   )rd   NNrm   )rd   re   N)rd   re   rr   )rd   re   rs   )rd   re   rt   )rd   re   ru   )rd   Nrf   )rd   Nrh   )rd   Nrk   )rd   Nrl   )Nre   )rd   r   )rd   r   rD   )Nre   )rd   ri   )rd   r   rj   )rd   r   r`   )Nre   )rd   rb   )rd   r   rc   )Nre   )rd   rm   )rd   r   rn   )rd   r   rp   )rd   r   rq   )Nre   )Ns   @charset "latin1";)rd   r   rn   rp   )rd   r   rp   )rd   r   rq   	utf-8-sig)rv   r   r`   )rv   r   ro   )Nrd   rr   )rd      rD   )Nrd   rs   )rd   rw   rj   )rd   rw   r`   )Nrd   rt   )rd   rw   rc   )rd   rw   u   Ã¤)NNrr   )NNrs   )r\   r]   rj   )NNrt   )r\   r]   rc   )r\   r]   r`   )r\   r]   N)overrideEncodingparentEncodingrZ   )encoder$   r%   r	   )r   rX   r[   r(   rY   r*   overrideparents           r   test_readUrlzTest_readUrl.test_readUrl   s|    ,	 $(5<<>"$7elln%':4;;|457N.
 5;;=)FAsCa9S@@@ *o

 12Co
 45Io
 w4;;|+D EF Io
 23Eo
 B Do
& w+@+G+G+Q RS V'o
0 w+@+G+G+I JK N1o
< #$6=o
> *+<?o
@ -.BAo
B tdDKK$=>?ATCo
D +,>Eo
H ; =Io
R td$9$@$@$JKL OSo
\ td$9$@$@$BCD G]o
h &'9io
j -.?ko
l 01Emo
n wt{{<'@ ABDWoo
p ./Aqo
t > @uo
~ w'<'C'CH'M NO Ro
H w'<'C'C'E FG JIo
T ./@Uo
V 12FWo
X thL(ABCEXYo
Z /0B[o
^ ? A_o
h th(=(D(DX(NOP Sio
r th(=(D(D(FGH Kso
~ -.?o
@ 01EAo
B 7Xt{{<'@ABDWCo
D ./AEo
H > @Io
R 7X'<'C'CH'MNO RSo
\ 7X'<'C'C'EFG J]o
h ; =io
r 7T#9#@#@#JKL Oso
| 7T#9#@#@#BCD G}o
H 7T4;;{#;<= @Io
R 7T#8#?#?#LMN QSo
\ 7T#9#@#@#MNO R]o
h *+<io
j -.Bko
l 8dDKK$=>?ATmo
n +,>oo
p 8dDKKM23 6qo
| &'7}o
~ )*=o
@ '(9Ao
B 4$./ 2 t{{<01Uo
` +/u{{}*=&!Xvq3%-#)(O	  +>r   c           	      $    G d d      d fd	}d}ddj                         fddj                         fddj                         fd	dj                         fd
di}d}t        |j                               D ]:  \  \  }}}t        j                  | ||||            d        }| ||      k(  r:J  t        j                  | ||dd            d        }t        j                  t              5   ||       ddd       t        dgft        j                  j                  dgft        j                  j                  dgfd}t        |j                               D ]T  \  }\  }	}
t        j                  | |||	|
            d        }t        j                  |	      5   ||       ddd       V d}t        j                  j                  dddi dgft        j                  j                  dddi dgfd}t        |j                               D ]T  \  }\  }	}
t        j                  | |||	|
            d        }t        j                  |	      5   ||       ddd       V y# 1 sw Y   sxY w# 1 sw Y   $xY w# 1 sw Y   {xY w)!zutil._defaultFetcherc                   *    e Zd ZdZddZd Zd Zd Zy)2Test_readUrl.test_defaultFetcher.<locals>.Responsezurllib2.Reponse mockNc                     || _         t               }||d<   |j                         | _        |j	                  dd       | _        || _        || _        || _        y )Nzcontent-typecharset)	rX   r   get_content_typemimetype	get_paramr   text	exceptionargs)r   rX   contenttypecontentr   r   ms          r   __init__z;Test_readUrl.test_defaultFetcher.<locals>.Response.__init__p  sQ    I$/.! ! 2 2 4 {{9d;#	!* 	r   c                     | j                   S rW   rX   r   s    r   geturlz9Test_readUrl.test_defaultFetcher.<locals>.Response.geturl~  s    xxr   c                 `    | j                   | j                  c G fdd      } |       S )Nc                   ,    e Zd ZfdZd fd	ZeZeZy)ETest_readUrl.test_defaultFetcher.<locals>.Response.info.<locals>.Infoc                     S rW   r   )r   r   s    r   gettypezMTest_readUrl.test_defaultFetcher.<locals>.Response.info.<locals>.Info.gettype  s    'r   Nc                     S rW   r   )r   namer   s     r   getparamzNTest_readUrl.test_defaultFetcher.<locals>.Response.info.<locals>.Info.getparam  s    &r   rW   )r   r   r   r   r   r   get_content_charset)r   r   s   r   Infor     s    (' (/$*2'r   r   )r   r   )r   r   r   r   s     @@r   infoz7Test_readUrl.test_defaultFetcher.<locals>.Response.info  s*    $(MM4<<!'
3 
3 vr   c                 d    | j                   s| j                  S  | j                   | j                   rW   )r   r   r   r   s    r   readz7Test_readUrl.test_defaultFetcher.<locals>.Response.read  s(    ~~99$($..$))44r   )NN)r   r   r   __doc__r   r   r   r   r   r   r   Responser   m  s    &! "5r   r   Nc                 &      fd}|S )Nc                  ,    r         S )Nr   r   r   )ignoredr   r   r   r   r   rX   s    r   r   z<Test_readUrl.test_defaultFetcher.<locals>.urlopen.<locals>.x  s)    #T**#['YT r   r   )rX   r   r   r   r   r   r   s   ````` r   urlopenz1Test_readUrl.test_defaultFetcher.<locals>.urlopen  s      Hr   zurllib.request.urlopenztext/cssr^   ztext/css;charset=utf-8r\   )ztext/css;charset=asciirc   )re   rc   rT   )newc                     t        |       S rW   r   r   s    r   doz,Test_readUrl.test_defaultFetcher.<locals>.do      &s++r   z	text/htmlrc   c                     t        |       S rW   r   r   s    r   r   z,Test_readUrl.test_defaultFetcher.<locals>.do  s    "3''r   zinvalid value for urlurlerrorioerror)1z	mailto:e4zhttp://xr   c                     t        |       S rW   r   r   s    r   r   z,Test_readUrl.test_defaultFetcher.<locals>.do  r   r   zurllib.request.Requestui  zserver errori  z	not found)e2e3c                     t        |       S rW   r   r   s    r   r   z,Test_readUrl.test_defaultFetcher.<locals>.do  s     's++r   )NNNN)rz   r$   r%   r   patchr   r   
ValueErrorurlliberrorURLError	HTTPError)r   r   urlopenpatchr(   rX   r   r   r*   r   r   r   urlrequestpatchr   s               @r   test_defaultFetcherz Test_readUrl.test_defaultFetcherj  su   *	5 *	5X
	 0
 (4*@%u||~69 ,^
 ,+/+>'"['CZZ'#{G*LM, N, "S'>!> ,? 
Lgc;&D	E	( 
F	( ]]:&sG ' 678 ,,//*>..<
 '+5;;=&9"C")TZZ'#QU*VW, X, y)3 *) ': 3 <<))Cnb$+OP<<))Ck2t+LM

 '+5;;=&9"C")TZZWSID%Q,, y)3 *) ':9 '&& *)" *)s$   2	I,#	I9	J,I69J	J	N)r   r   r   r   r}   r   r   r   r   rR   rR      s    Rhzr   rR   c                   v    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestLazyRegexz"Tests for cssutils.util.LazyRegex.c                 $    t        d      | _        y Nzf.o)r   lazyrer   s    r   setup_methodzTestLazyRegex.setup_method  s    &r   c                 Z    g d}|D ]"  }t        | j                  |      rJ d|z          y )N)searchmatchsplitsubsubnfindallfinditerpatternflagsgroups
groupindexzexpected %r public attribute)hasattrr   )r   methodsmethods      r   test_public_interfacez#TestLazyRegex.test_public_interface  s5    
 F4;;/X1ORX1XX/ r   c                     | j                   j                  J | j                   j                          | j                   j                  J y rW   )r   matcherensurer   s    r   test_ensurezTestLazyRegex.test_ensure  s>    {{""***{{""...r   c                 v    | j                  d      J | j                  d      }|j                         dk(  sJ y Nbarfoobarfoo)r   groupr   r   s     r   test_callingzTestLazyRegex.test_calling  s9    {{5!)))H%{{}%%%r   c                     | j                   j                  d      J | j                   j                  d      }|j                         dk(  sJ y r   )r   r   r   r   s     r   test_matchingzTestLazyRegex.test_matching  sE    {{  '///!!(+{{}%%%r   c                 ~    | j                   j                  dd      J | j                   j                  ddd      J y )Nr   r   r   r   )r   r   r   s    r   &test_matching_with_position_parametersz4TestLazyRegex.test_matching_with_position_parameters  s>    {{  *222{{  1-555r   c                     | j                   j                  d      J | j                   j                  d      }|j                         dk(  sJ y )Nrafuubarrafoobarr   r   r   r   r   s     r   test_searchingzTestLazyRegex.test_searching  sE    {{!!*-555"":.{{}%%%r   c                     | j                   j                  dd      J | j                   j                  ddd      J | j                   j                  dd      }|j                         dk(  sJ y )Nr   rA   r   rw   rafoofuobarfuor   r   s     r   'test_searching_with_position_parametersz5TestLazyRegex.test_searching_with_position_parameters  sh    {{!!*a0888{{!!*a3;;;""=!4{{}%%%r   c                     | j                   j                  d      g dk(  sJ | j                   j                  dd      ddgk(  sJ y )Nrafoobarfoobaz)rar   bazr   r   	barfoobaz)r   r   r   s    r   
test_splitzTestLazyRegex.test_split  sF    {{  !126JJJJ{{  !115$9LLLLr   c                 H    | j                   j                  d      ddgk(  sJ y Nrafoobarfuobazr   r   )r   r   r   s    r   test_findallzTestLazyRegex.test_findall   s$    {{""#34FFFr   c                     | j                   j                  d      }|D cg c]  }|j                          c}ddgk(  sJ y c c}w r   )r   r   r   )r   resultr   s      r   test_finditerzTestLazyRegex.test_finditer#  sA    %%&67#)*6a	6*uen<<<*s   Ac                     | j                   j                  dd      dk(  sJ | j                   j                  d d      dk(  sJ y )Nr   foofoobarbarc                      yNr   r   r   s    r   <lambda>z(TestLazyRegex.test_sub.<locals>.<lambda>)  s    r   bazbaz)r   r   r   s    r   test_subzTestLazyRegex.test_sub'  s<    {{uh/8;;;{{9XEEEr   c                     | j                   j                  dd      }|dk(  sJ | j                   j                  d d      }|dk(  sJ y )Nr   r   )r   r   c                      yr   r   r   s    r   r   z)TestLazyRegex.test_subn.<locals>.<lambda>.  s    Er   )r   r   )r   r   )r   subbeds     r   	test_subnzTestLazyRegex.test_subn+  sJ    !!%2&&&!!/8<&&&r   c                 x    t        d      }|j                  J |j                          |j                  dk(  sJ y )Nz(.)(.)r   )r   r   r   r   r   s     r   test_groupszTestLazyRegex.test_groups1  s7    8$}}$$$}}!!!r   c                 |    t        d      }|j                  J |j                          |j                  ddik(  sJ y )Nz
(?P<foo>.)r   r   )r   r   r   r  s     r   test_groupindexzTestLazyRegex.test_groupindex7  s?    <(  (((  UAJ...r   c                     | j                   j                          | j                   j                  t        j                  d      j                  k(  sJ y )N.)r   r   r   recompiler   s    r   
test_flagszTestLazyRegex.test_flags=  s8    {{  BJJsO$9$9999r   c                 :    | j                   j                  dk(  sJ y r   )r   r   r   s    r   test_patternzTestLazyRegex.test_patternA  s    {{""e+++r   N)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^    ,'Y"/
&
&
6&
&MG=F'"/:,r   r   )r   r  urllib.errorr   urllib.parseurllib.requestemail.messager   unittestr   r   cssutils.utilr   r   r   r   r	   r   r!   rR   r   r   r   r   <module>r     sT    ! 	    !   M M @a aHQ Qh
[, [,r   