
    g                         S r SSKrSSKr\R                  " \5      rSSKJr  / SQr " S S\5      r	SSK
JrJr  \S   r\S	   r " S
 S\5      rSSK
Jr  / SQr " S S\5      rg)z&passlib.tests -- tests for passlib.pwd    N)TestCase)	UtilsTestGenerateTestStrengthTestc                   "    \ rS rSrSrSrS rSrg)r      ztest internal utilitieszpasslib.pwdc                 ^   SSK Jn  U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S	5        U R                  U" S
5      S	5        U R                  U" S5      SSS9  g)z_self_info_rate()r   )_self_info_rate aaaaaaaaab   abababababababababcd    abcdabcdabcdabcdabcdabcdabcdabcdabcdaaaag@?   )placesN)passlib.pwdr
   assertEqualassertAlmostEqual)selfr
   s     O/home/matz/Project1/venv/lib/python3.13/site-packages/passlib/tests/test_pwd.pytest_self_info_rateUtilsTest.test_self_info_rate   s    /,a0115.22A60!44a8z:F1M     N)__name__
__module____qualname____firstlineno____doc__descriptionPrefixr   __static_attributes__r   r   r   r   r      s    !%Nr   r   )genworddefault_charsetsascii_62hexc                   L   ^  \ rS rSrSrSrU 4S jrS
S jrS rS r	S r
S	rU =r$ )WordGeneratorTest@   test generation routineszpasslib.pwd.genword()c                 z   > [         [        U ]  5         SSKJn  U R                  USU R                  S5      5        g )Nr   )SequenceGeneratorrngzpwd generator)superr+   setUpr   r/   	patchAttr	getRandom)r   r/   	__class__s     r   r2   WordGeneratorTest.setUpD   s3    ,. 	2(%~~o6	8r   c                    U R                  [        U5      U5        U(       a+  USL a  UnU R                  [        [        U5      5      U5        U R                  [        SR                  U5      5      [        U5      5        g)2check result list matches expected count & charsetTr   N)r   lensetjoin)r   resultscountcharsuniques        r   assertResultContents&WordGeneratorTest.assertResultContentsL   s`    Wu-~SW.7RWWW-.E
;r   c                     [        5       nU R                  [        U5      S5        U R                  [        S[         SS9  g)general behavior	   (?i)unexpected keyword.*badkwdTbadkwdN)r&   r   r9   assertRaisesRegex	TypeErrorr   results     r   test_generalWordGeneratorTest.test_generalU   s:     Va( 	y*JG\`ar   c                    [        SS9nU R                  US[        5        [        [        S9n[	        S5       Vs/ s H  n[        U5      PM     nnU R                  US[        5        U R                  [        [         SS9  gs  snf )'returns' keyword  returnsinvalid-typeN)r&   r@   r(   iterrangenextassertRaisesrI   r   r<   gen_s       r   test_returnsWordGeneratorTest.test_returns_   sv     $'!!'4: d#&+Dk2k49k2!!'4: 	)WnE	 3s   Bc                     [        SSS9nU R                  US[        5        [        SSSS9nU R                  USSSS9  U R                  [        [         SSS	9  g
)z'charset' & 'chars' optionsr)   rP   )charsetrR      abc)lengthr>   rR      r?   )r>   r^   N)r&   r@   r)   rW   rI   r   r<   s     r   test_charsetWordGeneratorTest.test_charsetm   sb     %6!!'45 %>!!'4r!B 	)WE5Ir   r   )T)r   r    r!   r"   r#   r$   r2   r@   rL   r[   re   r%   __classcell__)r5   s   @r   r+   r+   @   s.    "/8<bFJ Jr   r+   )	genphrase)alphabetagammac                   >    \ rS rSrSrSrSS jrS rS rS r	S r
S	rg
)PhraseGeneratorTest   r-   zpasslib.pwd.genphrase()c                 :  ^ U R                  [        U5      U5        U(       a+  USL a  UnU R                  [        [        U5      5      U5        [        [        R                  R                  U4S jU 5       5      5      nU R                  U[        U5      5        g)r8   Tc              3   D   >#    U  H  oR                  T5      v   M     g 7f)N)split).0elemseps     r   	<genexpr>;PhraseGeneratorTest.assertResultContents.<locals>.<genexpr>   s     /TGD

3Gs    N)r   r9   r:   	itertoolschainfrom_iterable)r   r<   r=   wordsr?   rt   outs        ` r   r@   (PhraseGeneratorTest.assertResultContents   sr    Wu-~SW.7)/////TG/TTUc%j)r   c                     [        5       nU R                  [        UR                  S5      5      S5        U R	                  [
        S[         SS9  g)rC    r   rE   TrF   N)rh   r   r9   rq   rH   rI   rJ   s     r   rL    PhraseGeneratorTest.test_general   sD     V\\#./3 	y*JI^bcr   c                    [        SS9nU R                  [        UR                  S5      5      S5        [        SS9nU R                  [        UR                  S5      5      S5        [        SSS9nU R                  [        UR                  S5      5      S	5        [        S	S
S9nU R                  [        UR                  S5      5      S	5        g)z'length' & 'entropy' keywordsF   )entropyr~      r_   )ra   0   )ra   r   r      N)rh   r   r9   rq   rJ   s     r   test_entropy PhraseGeneratorTest.test_entropy   s     2&V\\#./3 !$V\\#./3 !R0V\\#./3 !R0V\\#./3r   c                 $   [        S[        S9nU R                  US[        5        [        [        [        S9n[	        S5       Vs/ s H  n[        U5      PM     nnU R                  US[        5        U R                  [        [         SS9  gs  snf )rO   i  )rR   rz   rS   rQ   N)rh   simple_wordsr@   rT   rU   rV   rW   rI   rX   s       r   r[    PhraseGeneratorTest.test_returns   sz     D=!!'4> L9&+Dk2k49k2!!'4> 	)YG	 3s   Bc                     [        [        SS9nU R                  US[        5        [        S[        SS9nU R                  US[        SS9  U R                  [        [         [        SS9  g	)
z'wordset' & 'words' optionsrP   )rz   rR   r_   )ra   rz   rR   rb   rc   bip39)rz   wordsetN)rh   r   r@   rW   rI   rd   s     r   test_wordset PhraseGeneratorTest.test_wordset   sb     ,=!!'4> 1L$G!!'4d!K 	)YlGTr   r   N)Tr~   )r   r    r!   r"   r#   r$   r@   rL   r   r[   r   r%   r   r   r   rm   rm      s'    "1*d4&HUr   rm   )r#   rw   logging	getLoggerr   logpasslib.tests.utilsr   __all__r   r   r&   r'   r(   r)   r+   rh   r   rm   r   r   r   <module>r      s|    ,
  g''1 )N NN 2J'u9J 9JD ")DU( DUr   