
    ?pe                        d dl Z d dlZd dlZddiZd4dZ ej
                         dk(  rddgZndgZ ej                  e      d	        Zd
 Z	ej                  j                  d e	d      e      d        Zej                  j                  d e	d      e      d        Zd Zd Zej                  j                  d e	d      e      d        Zej                  j                  d e	d      e      d        Zej                  j                  d e	d      e      d        Zej                  j                  d e	d      e      d        Zej                  j                  d e	d      e      d        Zej                  j                  d e	d      e      d        Zej                  j                  d  e	d!      e      d"        Zej                  j                  d  e	d#      e      d$        Zej                  j                  d e	d%      e      d&        Z ej
                         dk(  rd' Zd( Zd) Zd* Zd+ Zd, Zd- Z d. Z!d/ Z"d0 Z#d1 Z$d2 Z%d3 Z&y)5    Nencodingutf8c                 0    t        | |z
        d|z  k  sJ y )Ng?)abs)abplacess      0/usr/lib/python3/dist-packages/jellyfish/test.pyassertAlmostEqualr   	   s    q1u:f%%%    CPythonpythonc)paramsc                 @    | j                   dk(  rddlm} |S ddlm} |S )Nr   r   )
_jellyfish
cjellyfish)param	jellyfishr   r   )requestjfs     r
   r   r      s"    }} . I 	/Ir   c              #      K   t        dj                  |       fi t        5 }t        j                  |      D ]  }|  	 d d d        y # 1 sw Y   y xY ww)Nztestdata/{}.csv)openformatopen_kwargscsvreader)namefdatas      r
   
_load_datar"      sQ     	&&t,	<	< JJqM 	DJ	  s    AA	AAAzs1,s2,valuejaro_winkler)idsc                 V    t        |      }t        | j                  ||      |d       y N   r	   floatr   jaro_winkler_similarityr   s1s2values       r
   test_jaro_winkler_similarityr0   "   s$    %LEb00R8%Jr   jaro_winkler_longtolc                 X    t        |      }t        | j                  ||d      |d       y )NTr'   r(   r)   r,   s       r
   $test_jaro_winkler_similarity_longtolr3   (   s&    %LEb00R>aPr   c                     ddl m} t        j                         5   |dd      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   )r#   r      )r   r#   pytestdeprecated_call)r   r#   s     r
   test_jaro_winkler_deprecationr8   .   s;    &				! +C%***+ + +   4=c                      ddl m}  t        j                         5   | dd      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   jaro_distancer   r5   )r   r<   r6   r7   r;   s    r
   test_jaro_distance_deprecationr=   6   s;    '				! ,S#&!+++, , ,r9   r<   c                 V    t        |      }t        | j                  ||      |d       y r&   )r*   r   jaro_similarityr,   s       r
   test_jaro_similarityr@   >   s$    %LEb((R0%Br   hammingc                 H    t        |      }| j                  ||      |k(  sJ y N)inthamming_distancer,   s       r
   test_hamming_distancerF   D   s&    JEr2&%///r   levenshteinc                 H    t        |      }| j                  ||      |k(  sJ y rC   )rD   levenshtein_distancer,   s       r
   test_levenshtein_distancerJ   J   s&    JE""2r*e333r   damerau_levenshteinc                 H    t        |      }| j                  ||      |k(  sJ y rC   )rD   damerau_levenshtein_distancer,   s       r
   !test_damerau_levenshtein_distancerN   P   s&    JE**2r2e;;;r   zs1,codesoundexc                 0    | j                  |      |k(  sJ y rC   )rO   r   r-   codes      r
   test_soundexrS   V   s    ::b>T!!!r   	metaphonec                 0    | j                  |      |k(  sJ y rC   )rT   rQ   s      r
   test_metaphonerV   [   s    <<t###r   zs1,s2nysiisc                 0    | j                  |      |k(  sJ y rC   )rW   r   r-   r.   s      r
   test_nysiisrZ   `   s    99R=Br   match_rating_codexc                 0    | j                  |      |k(  sJ y rC   )r[   rY   s      r
   test_match_rating_codexr]   e   s      $***r   match_rating_comparisonc                 B    ddd d|   }| j                  ||      |u sJ y )NTF)TrueFalseNone)r^   r,   s       r
   test_match_rating_comparisonrc   j   s.    E48?E%%b"-666r   c                  T   dd l } ddlm} t        d      D cg c]H  }dj	                  | j                  t        |      j                  d            j                               J }}|D cg c]"  }|D cg c]  }|j                  ||       c}$ c}}sJ y c c}w c c}w c c}}w )Nr   r   d   z{}ascii)
hashlibr   r   ranger   sha1strencode	hexdigestr^   )rg   r   vsha1sh2h1s         r
   %test_match_rating_comparison_segfaultrq   r   s    . 3Z
 KKSV]]7%;<FFHI
 

 PUUeD++B3DUUU

 EUs   AB,	B$5BB$B$c                      ddl m}  ddlm} d}d} | ||      dk(  sJ  | ||      dk(  sJ  |||      dk(  sJ  |||      dk(  sJ y )Nr   )rM   mylifeoutdoorsu   нахлыст   )jellyfish.cjellyfishrM   jellyfish._jellyfish)c_dlpy_dlr-   r.   s       r
   )test_damerau_levenshtein_unicode_segfaultry   }   sb    MNB|r!!!B|r!!!R}"""R}"""r   c                     | j                  ddd      }| j                  ddd      }t        |d       t        |d       y )Nztwo long stringsztwo long stringzF)long_toleranceTg333333?grh|?)r+   r   )r   no_ltwith_lts      r
    test_jaro_winkler_long_tolerancer~      sT    &&.u ' E ((.t ) G eU#gu%r   c                     | j                  dd       t        j                  t              5 }| j                  dd       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY w)Nabc   abcexpected)rM   r6   raises	TypeErrorrj   r/   r   excs     r
   &test_damerau_levenshtein_distance_typer      s[    ##E51	y	! 8S
''78SYY'''8 8s   A!!A*c                     | j                  dd      dk(  sJ t        j                  t              5 }| j                  dd       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY wNr   r   r   r   )rI   r6   r   r   rj   r/   r   s     r
   test_levenshtein_distance_typer      sf    ""5%0A555	y	! 0S
/0SYY'''0 0   A&&A/c                     | j                  dd      dk(  sJ t        j                  t              5 }| j                  dd       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY wNr   r5   r   r   )r?   r6   r   r   rj   r/   r   s     r
   test_jaro_similarity_typer      sf    eU+q000	y	! +S
66*+SYY'''+ +r   c                     | j                  dd      dk(  sJ t        j                  t              5 }| j                  dd       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY wr   )r+   r6   r   r   rj   r/   r   s     r
   test_jaro_winkler_typer      sf    %%eU3q888	y	! 3S
""6623SYY'''3 3r   c                     | j                  dd      du sJ t        j                  t              5 }| j                  dd       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY w)Nr   Tr   r   )r^   r6   r   r   rj   r/   r   s     r
   test_mra_comparison_typer      sf    %%eU3t;;;	y	! 3S
""6623SYY'''3 3s   A%%A.c                     | j                  dd      dk(  sJ t        j                  t              5 }| j                  dd       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY wr   )rE   r6   r   r   rj   r/   r   s     r
   test_hamming_typer      sf    ue,111	y	! ,S
FF+,SYY''', ,r   c                     | j                  d      dk(  sJ t        j                  t              5 }| j                  d       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY w)NABCA120s   ABCr   )rO   r6   r   r   rj   r/   r   s     r
   test_soundex_typer      s^    ::e&&&	y	! S


6SYY'''    A$$A-c                     | j                  d      dk(  sJ t        j                  t              5 }| j                  d       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY w)Nr   ABKr   r   )rT   r6   r   r   rj   r/   r   s     r
   test_metaphone_typer      s^    <<%'''	y	! S
VSYY''' r   c                     | j                  d      dk(  sJ t        j                  t              5 }| j                  d       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY wNr   r   r   r   )rW   r6   r   r   rj   r/   r   s     r
   test_nysiis_typer      s^    99Uu$$$	y	! S
		&SYY''' r   c                     | j                  d      dk(  sJ t        j                  t              5 }| j                  d       d d d        dt	        j
                        v sJ y # 1 sw Y   #xY wr   )r[   r6   r   r   rj   r/   r   s     r
   test_mr_codex_typer      sb      '5000	y	! &S
f%&SYY'''& &r   )r'   )'r   platformr6   r   r   python_implementationimplementationsfixturer   r"   markparametrizerj   r0   r3   r8   r=   r@   rF   rJ   rN   rS   rV   rZ   r]   rc   rq   ry   r~   r   r   r   r   r   r   r   r   r   r    r   r
   <module>r      s   
  6"& "8!!#y0oOjO ' ( 
>(BLK MK
 
3I(JPSTQ UQ
+, 
?(CMC NC
 
9(=3G0 H0
 
=(AsK4 L4
 
3H(IsS< T<
 Jy$9sC" D" J{$;E$ F$ *X"6C@ A *-A"BL+ M+ 
3L(MSVW7 X7
 "8!!#y0	V#	&((((((((((r   