
     h 6                         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      Z G d d      Z G d d	      Z G d
 d      Zy)z)Testcases for cssutils.css.CSSCharsetRule    N)Choice	Exhausted
ParseErrorPreDefProd
ProdParserSequencec                   *    e Zd Zd Zd Zd Zd Zd Zy)TestProdc                     t        dd       }t        |      dk(  sJ |j                  J |j                  du sJ t        dd d      }|j                  du sJ y)	zProd.__init__(...)minc                     | dk(  xr |dk(  S N       tvs     ^/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/tests/test_prodparser.py<lambda>z$TestProd.test_init.<locals>.<lambda>       Q!V%6Q%6    NFoptionalc                      yNTr   r   s     r   r   z$TestProd.test_init.<locals>.<lambda>       $r   Tr   )r   strtoStorer   selfps     r   	test_initzTestProd.test_init   sb    671vyy   zzU""".>zzT!!!r   c                     t        dd       }|j                  dd      du sJ |j                  dd      du sJ |j                  dd      du sJ y)zProd.__init__(...match=...)r   c                     | dk(  xr |dk(  S r   r   r   s     r   r   z)TestProd.test_initMatch.<locals>.<lambda>"   r   r   r   r   TFN)r   matchr!   s     r   test_initMatchzTestProd.test_initMatch    sW    67wwq!}$$$wwq!}%%%wwq!}%%%r   c                 
   t        dd d      }|j                  ddgd      dk(  sJ |j                  dd	gd      d
k(  sJ t        dd d       }|j                  ddgd      dk(  sJ |j                  ddgd      dk(  sJ y)zProd.__init__(...toSeq=...)allc                      yr   r   r   tokenss     r   r   z)TestProd.test_initToSeq.<locals>.<lambda>*   r   r   N)toSeqr   r   r   r   s1s2)r0   r1   c                      yr   r   r   s     r   r   z)TestProd.test_initToSeq.<locals>.<lambda>0   s    r   c                 "    d| d   k(  d| d   k(  fS )Nr   r      r   r,   s     r   r   z)TestProd.test_initToSeq.<locals>.<lambda>0   s    qAaDy!qQRt)>Tr   r4   )TT   )FF)r   r.   r!   s     r   test_initToSeqzTestProd.test_initToSeq'   s     .d;ww1vt$...wwd|T*l::: $,T
 ww1vt$444ww1vt$666r   c                 6   t        dd d      }i }|j                  |d       |d   dk(  sJ dg i}|j                  |d       |j                  |d       |d   ddgk(  sJ d }t        dd  |d            }dg i}|j                  |d       |d   dk(  sJ y	)
zProd.__init__(...toStore=...)r*   c                      yr   r   r   s     r   r   z+TestProd.test_initToStore.<locals>.<lambda>7       Tr   key)r    r   r   c                       fd}|S )Nc                     |dz  | <   y Nr   r   )storeitemr:   s     r   r    zATestProd.test_initToStore.<locals>.doubleToStore.<locals>.toStoreF   s    !AXc
r   r   )r:   r    s   ` r   doubleToStorez0TestProd.test_initToStore.<locals>.doubleToStoreE   s    & Nr   c                      yr   r   r   s     r   r   z+TestProd.test_initToStore.<locals>.<lambda>K   r9   r   N)r   r    )r"   r#   sr@   s       r   test_initToStorezTestProd.test_initToStore5   s    )59 			!Qx1}} BK			!Q			!QxAq6!!!	 )=3GHBK			!Qx1}}r   c                     t        dd       }t        dd d      }|j                  g d      du sJ |j                  g d      du sJ |j                  g d      d	u sJ |j                  g d      d	u sJ y
)zProd.matches(token)p1c                     | dk(  xr |dk(  S r   r   r   s     r   r   z'TestProd.test_matches.<locals>.<lambda>R   r   r   p2c                     | dk(  xr |dk(  S r   r   r   s     r   r   z'TestProd.test_matches.<locals>.<lambda>S   r   r   Tr   )r   r   r   r   r   r   r   r   FN)r   matches)r"   rE   rG   s      r   test_matcheszTestProd.test_matchesP   sz    $67$6Fzz,'4///zz,'4///zz,'5000zz,'5000r   N)__name__
__module____qualname__r$   r(   r6   rC   rK   r   r   r   r   r      s    	"&761r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestSequencec                     t        dd       }t        dd       }t        ||      }d|j                  k(  sJ d|j                  k(  sJ y)zSequence.__init__()rE   c                     | dk(  S Nr   r   r   s     r   r   z(TestSequence.test_init.<locals>.<lambda>]       Q!Vr   rG   c                     | dk(  S r=   r   r   s     r   r   z(TestSequence.test_init.<locals>.<lambda>^   rT   r   r   N)r   r	   _min_max)r"   rE   rG   seqs       r   r$   zTestSequence.test_init[   sH    $+,$+,r2CHH}}CHH}}r   c                 \   t        dd       }t        dd       }t        ||d       }d|j                  k(  sJ d|j                  k(  sJ t        ||d	       }d
|j                  k(  sJ 	 t        j
                  }||j                  k(  sJ y# t        $ r t        j
                  }Y -w xY w)z Sequence.__init__(...minmax=...)rE   c                     | dk(  S rS   r   r   s     r   r   z.TestSequence.test_initminmax.<locals>.<lambda>f   rT   r   rG   c                     | dk(  S r=   r   r   s     r   r   z.TestSequence.test_initminmax.<locals>.<lambda>g   rT   r   c                       y)N)r   r4   r   r   r   r   r   z.TestSequence.test_initminmax.<locals>.<lambda>i   s    Fr   minmaxr   r4   c                       yN)r   Nr   r   r   r   r   z.TestSequence.test_initminmax.<locals>.<lambda>m   s    Ir   r   N)r   r	   rV   rW   sysmaxsizeAttributeError)r"   rE   rG   rB   ms        r   test_initminmaxzTestSequence.test_initminmaxd   s    $+,$+,RN3AFF{{AFF{{R$56AFF{{	A AFF{{  	A	s   -B B+*B+c                     t        dd       }t        |d       }|j                  rJ t        |d       }|j                  sJ t        |d       }|j                  sJ y)zSequence.optionalrE   c                     | dk(  S rS   r   r   s     r   r   z,TestSequence.test_optional.<locals>.<lambda>z   rT   r   c                       y)N)r   r4   r   r   r   r   r   z,TestSequence.test_optional.<locals>.<lambda>|       r   r]   c                       y)N)r   r4   r   r   r   r   r   z,TestSequence.test_optional.<locals>.<lambda>~   ri   r   c                       yr`   r   r   r   r   r   z,TestSequence.test_optional.<locals>.<lambda>   s    	r   N)r   r	   r   )r"   rE   rB   s      r   test_optionalzTestSequence.test_optionalx   sX    $+,R/::~R/zzzR 12zzzr   c                 z   t        dd       }t        dd       }t        ||      }d}d}||j                  |      k(  sJ ||j                  |      k(  sJ t        j                  t
              5  |j                  |       ddd       |j                          ||j                  |      k(  sJ y# 1 sw Y   0xY w)zSequence.reset()rE   c                     | dk(  S rS   r   r   s     r   r   z)TestSequence.test_reset.<locals>.<lambda>   rT   r   rG   c                     | dk(  S r=   r   r   s     r   r   z)TestSequence.test_reset.<locals>.<lambda>   rT   r   r   r   r   r   r   r   r   r   N)r   r	   nextProdpytestraisesr   reset)r"   rE   rG   rX   t1t2s         r   
test_resetzTestSequence.test_reset   s    $+,$+,r2S\\"%%%%S\\"%%%%]]9%LL &		S\\"%%%% &%s   0B11B:c                    t        dd       }t        dd d      }d}d}d	}t        ||      }|j                  |      sJ |j                  |      rJ t        ||      }|j                  |      sJ |j                  |      sJ t        t        ||            }|j                  |      sJ |j                  |      sJ |j                  |      rJ y
)zSequence.matches()rE   c                     | dk(  S rS   r   r   s     r   r   z+TestSequence.test_matches.<locals>.<lambda>   rT   r   rG   c                     | dk(  S r=   r   r   s     r   r   z+TestSequence.test_matches.<locals>.<lambda>   rT   r   Tr   rp   rq   r4   r   r   r   N)r   r	   rJ   r   )r"   rE   rG   rv   rw   t3rB   s          r   rK   zTestSequence.test_matches   s    $+,$+d;Ryy}}99R=  Ryy}}yy}}VB^$yy}}yy}}99R=  =r   c                    t        dd d      }t        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        |j                               D ]z  \  }}|D ]p  }t        | }	|D ]a  \  }
}t	        |t
              r6t        j                  t        |      5  |	j                  |
       ddd       L||	j                  |
      k(  raJ  r | ||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        |j                               D ]  \  }}|D ]  }t        |dd i}	|D ]t  \  }
}t	        |t
              rIt        j                  t        t        j                  |            5  |	j                  |
       ddd       _||	j                  |
      k(  rtJ    y# 1 sw Y   JxY w# 1 sw Y   xY w)zSequence.nextProd()rE   c                     | dk(  S rS   r   r   s     r   r   z,TestSequence.test_nextProd.<locals>.<lambda>   rT   r   Tr   rG   c                     | dk(  S r=   r   r   s     r   r   z,TestSequence.test_nextProd.<locals>.<lambda>   rT   r   rp   rq   Extra tokenMissing token for production p2r'   Nz)No match for (1, 0, 0, 0) in Sequence(p2)r^   c                       yNr/   r   r   r   r   r   z,TestSequence.test_nextProd.<locals>.<lambda>   s    r   )r   listitemsr	   
isinstancer   rs   rt   r   rr   reescape)r"   rE   rG   rv   rw   testsseqitemsresultsresultrX   r   r#   s               r   test_nextProdzTestSequence.test_nextProd   s   $+d;$+, Eb
m$%bB./bB./	 Eb
bB./bB./789	 HbB8$bB ABC
& "&ekkm!4Hg!)"DAq!!S)#]]:Q?LLO @?  !CLLO333 # " "5 Hb
bB8$bB8$bB8b"X.bB8b"XBx8bB8b"XBx"m9LM Eb
m$%bB8$bB./bB8b-%89bB8b-%89 Eb
789bB8$bB KLMbB8b-%89bB8b-%89 HbB ABCbB8$bB8b"X.bB8b"X.bB8b"XBx8bB8b-%89bB8b"XM/BCbB8b"XM/BCbB8b"XM/BCbB8b"XM/BCbB8b"XBx"m9LMbB8b"XBx"m9LM9*
V "&ekkm!4Hg!@@"DAq!!S)#]]:RYYq\JLLO KJ  !CLLO333 # " "5a @?j KJs   K	K"	K"K+N)	rL   rM   rN   r$   re   rl   rx   rK   r   r   r   r   rP   rP   Z   s!    (	&!,W4r   rP   c                   $    e Zd Zd Zd Zd Zd Zy)
TestChoicec                    t        dd       }t        dd       }d}d}d}t        ||      }t        j                  t        t        j                  d      	      5  |j                  |       d
d
d
       ||j                  |      k(  sJ t        j                  t        d	      5  |j                  |       d
d
d
       t        ||      }||j                  |      k(  sJ t        j                  t        d	      5  |j                  |       d
d
d
       t        ||      }t        j                  t        t        j                  d      	      5  |j                  |       d
d
d
       ||j                  |      k(  sJ t        j                  t        d	      5  |j                  |       d
d
d
       t        ||      }||j                  |      k(  sJ t        j                  t        d	      5  |j                  |       d
d
d
       y
# 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y
xY w)zChoice.__init__()rE   c                     | dk(  S rS   r   r   s     r   r   z&TestChoice.test_init.<locals>.<lambda>  rT   r   rG   c                     | dk(  S r=   r   r   s     r   r   z&TestChoice.test_init.<locals>.<lambda>  rT   r   rI   rp   rq   z+No match for (0, 0, 0, 0) in Choice(p1, p2)r   Nr   z+No match for (0, 0, 0, 0) in Choice(p2, p1))	r   r   rs   rt   r   r   r   rr   r   )r"   rE   rG   t0rv   rw   chs          r   r$   zTestChoice.test_init  s   $+,$+,B^]]bii(UV
 KKO
 R[[_$$$]]9M:KKO ; B^R[[_$$$]]9M:KKO ; B^]]bii(UV
 KKO
 R[[_$$$]]9M:KKO ; B^R[[_$$$]]9M:KKO ;:1
 

 ;:
 ;:
 

 ;:
 ;:sH   H&H=H(H5I3IHH%(H25H>I
Ic                    t        dd       }t        dd d      }d}d}d	}t        ||      }|j                  |      sJ |j                  |      sJ |j                  |      rJ t        t        |      t        |            }|j                  |      sJ |j                  |      sJ |j                  |      rJ y
)zChoice.matches()rE   c                     | dk(  S rS   r   r   s     r   r   z)TestChoice.test_matches.<locals>.<lambda>(  rT   r   rG   c                     | dk(  S r=   r   r   s     r   r   z)TestChoice.test_matches.<locals>.<lambda>)  rT   r   Tr   rp   rq   r|   N)r   r   rJ   r	   )r"   rE   rG   rv   rw   r}   cs          r   rK   zTestChoice.test_matches&  s    $+,$+d;2rNyy}}yy}}99R=  8B<".yy}}yy}}99R=  =r   c                    t        dd       }t        dd       }t        ||      }t        ||      }d}d}d}t        ||      }d}	t        j                  t
        t        j                  |	      	      5  |j                  |       d
d
d
       ||j                  |      k(  sJ t        j                  t        d	      5  |j                  |       d
d
d
       t        ||      }||j                  |      k(  sJ t        j                  t        d	      5  |j                  |       d
d
d
       y
# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   y
xY w)zChoice with nested SequencerE   c                     | dk(  S rS   r   r   s     r   r   z(TestChoice.test_nested.<locals>.<lambda>;  rT   r   rG   c                     | dk(  S r=   r   r   s     r   r   z(TestChoice.test_nested.<locals>.<lambda><  rT   r   rI   rp   rq   zGNo match for (0, 0, 0, 0) in Choice(Sequence(p1, p1), Sequence(p2, p2))r   Nr   )
r   r	   r   rs   rt   r   r   r   rr   r   )
r"   rE   rG   r0   r1   r   rv   rw   r   expecteds
             r   test_nestedzTestChoice.test_nested9  s   $+,$+,b"b"B^U 	 ]]:RYYx-@AKKO BR[[_$$$]]9M:KKO ; B^R[[_$$$]]9M:KKO ;: BA ;:
 ;:s$   5D2 D>E
2D;>E
Ec                 N   t        dd       }t        dd       }d}d}t        ||      }||j                  |      k(  sJ t        j                  t
              5  |j                  |       ddd       |j                          ||j                  |      k(  sJ y# 1 sw Y   0xY w)zChoice.reset()rE   c                     | dk(  S rS   r   r   s     r   r   z'TestChoice.test_reset.<locals>.<lambda>T  rT   r   rG   c                     | dk(  S r=   r   r   s     r   r   z'TestChoice.test_reset.<locals>.<lambda>U  rT   r   rp   rq   N)r   r   rr   rs   rt   r   ru   )r"   rE   rG   rv   rw   r   s         r   rx   zTestChoice.test_resetR  s    $+,$+,B^R[[_$$$]]9%KKO &

R[[_$$$ &%s   BB$N)rL   rM   rN   r$   rK   r   rx   r   r   r   r   r     s    "H!&2%r   r   c                       e Zd Zd Zd Zd Zy)TestProdParserc                      y )Nr   )r"   s    r   setup_methodzTestProdParser.setup_methodb  s    r   c                     t               }d }|j                  dd |       d      \  }}}}|sJ dt        |      k(  sJ |j                  dd |       d      \  }}}}|sJ dt        |      k(  sJ y	)
zProdParser.parse(keepS)c                  j    t        t        j                  dd      t        j                  dd            S )N;:)r	   r   charr   r   r   prodsz.TestProdParser.test_parse_keepS.<locals>.prodsj  s%    FKKS16;;sC3HIIr   z; :testT)keepSr4   Fr   N)r   parselen)r"   r#   r   wrX   r>   unuseds          r   test_parse_keepSzTestProdParser.test_parse_keepSe  s    L	J !"vuwd K3vqCH}} !vuwe L3vqCH}}r   c                    t        dd       }t        dd       }t        dd       }dddddd	d
ddd	}t        |j                               D ]  \  }}t        t	        ||d       |      }|du r(t               j                  |d|      \  }}	}
}||k(  rIJ t        j                  t        j                  j                  t        j                  d|             5  t               j                  |d|       ddd        ddddddddddd
}t        |j                               D ]  \  }}t	        t        t	        |d       |      |      }|du r(t               j                  |d|      \  }}	}
}||k(  rRJ t        j                  t        j                  j                  t        j                  d|             5  t               j                  |d|       ddd        y# 1 sw Y   xY w# 1 sw Y   xY w)zProdParser.parse() 2rE   c                     |dk(  S )N1r   r   s     r   r   z+TestProdParser.test_combi.<locals>.<lambda>w      Q#Xr   rG   c                     |dk(  S )N2r   r   s     r   r   z+TestProdParser.test_combi.<locals>.<lambda>x  r   r   p3c                     |dk(  S )N3r   r   s     r   r   z+TestProdParser.test_combi.<locals>.<lambda>y  r   r   Tr   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   r   z1 2 1z	1 2 1 2 xz	1 2 1 2 1z3 xz3 3c                       yr   r   r   r   r   r   z+TestProdParser.test_combi.<locals>.<lambda>  s    6r   r]   TzT: r   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 3r   z1 1z1 3 3z1 1 3 3z2 3 3r   r   c                       yr   r   r   r   r   r   z+TestProdParser.test_combi.<locals>.<lambda>  s    r   )r   r   r   r   r	   r   r   rs   rt   xmldom	SyntaxErrr   r   )r"   rE   rG   r   r   textexpr   
wellformedrX   r>   r   s               r   
test_combizTestProdParser.test_combiu  s   $-.$-.$-. 269:34
 ekkm,ID#8B>BBGEd{1;1C1CD#u1U.
C!S(((]]377#4#4BIIC5k<RSL&& TS - 246862$
 ekkm,ID#VHR$GLbQEd{1;1C1CD#u1U.
C!S(((]]377#4#4BIIC5k<RSL&& TS -) TS4 TSs   G)G6)G3	6G?	N)rL   rM   rN   r   r   r   r   r   r   r   r   a  s     7r   r   )__doc__r   ra   xml.domr   rs   cssutils.prodparserr   r   r   r   r   r   r	   r   rP   r   r   r   r   r   <module>r      sV    / 	 
    C1 C1Ld4 d4N]% ]%@K Kr   