ó
    ¿²	j‚  ã                   ó‚   • S r SSKrSSKJs  Jr  SSKrSSKJ	r	  SSK
r
SSKJrJrJrJrJrJr  S rS rS rS rS	 rS
 rg)z;Tests for the TableMerger Protocol and its implementations.é    N)ÚPath)ÚCandidateInputÚMergedTableÚMergerResultÚ
MockMergerÚTableMergerÚ
get_mergerc                  óÜ  • [        5       n [        U [        5      o(       GdH  SS[        R                  " 5       ;   d  [
        R                  " [        5      (       a  [
        R                  " [        5      OSS[        R                  " 5       ;   d  [
        R                  " [         5      (       a  [
        R                  " [         5      OS[
        R                  " U 5      S[        R                  " 5       ;   d  [
        R                  " [        5      (       a  [
        R                  " [        5      OS[
        R                  " U5      S.-  n[        [
        R                  " U5      5      eS =pg )NzLassert %(py6)s
{%(py6)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s()
}, %(py4)s)
}Ú
isinstancer   r   )Úpy0Úpy1Úpy3Úpy4Úpy6)
r   r   r   Ú@py_builtinsÚlocalsÚ
@pytest_arÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)Ú@py_assert2Ú@py_assert5Ú@py_format7s      Ú2/home/mande/repo/quber/tests/agents/test_merger.pyÚtest_mock_satisfies_protocolr      s¨   € Ü “lÐ0Œ:�l¤KÓ0Ð0Ö0×0×0×0×0×0Ñ0Œ:×0×0×0Ñ0Œ:×0×0×0×0×0Ö0”j×0×0×0Ñ0”j×0×0Õ0�l×0×0×0×0×0Ô0¤K×0×0×0Ñ0¤K×0×0Õ0Ð0×0×0×0×0×0Ó0ó    c                  ó„  • [        SSS9[        SSS9/n [        R                  " [        5       R	                  [        S5      U 5      5      n[        U[        5      o"(       Gd+  SS[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	S
[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS
[        R                  " U5      S.-  n[        [        R                  " U5      5      eS nUR                  n[!        U5      nSoeU:H  ow(       Gd"  [        R"                  " SU4SXV45      S[        R                  " 5       ;   d  [        R                  " [         5      (       a  [        R                  " [         5      OSS	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=n=pvUR                  S   oªR$                  nS/o´U:H  oU(       d„  [        R"                  " SU4SXK45      [        R                  " U
5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n
=n=p[UR                  S   oªR$                  nS/o´U:H  oU(       d„  [        R"                  " SU4SXK45      [        R                  " U
5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n
=n=p[g )Núlattice-p1-0z| a |
|---|
| 1 |)Úcandidate_idÚmarkdownústream-p1-0z| b |
|---|
| 2 |úpage.pngz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}r   Úoutr   )r   r   Úpy2r   é   ©ú==)zL%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.tables
})
} == %(py8)sÚlen)r   r   r   Úpy5Úpy8zassert %(py10)sÚpy10r   ©z<%(py3)s
{%(py3)s = %(py1)s.source_candidate_ids
} == %(py6)s©r   r   r   úassert %(py8)sr+   é   )r   ÚasyncioÚrunr   Úmerger   r   r   r   r   r   r   r   r   r   Útablesr)   Ú_call_reprcompareÚsource_candidate_ids)Ú
candidatesr$   Ú@py_assert3Ú@py_format5r   Ú@py_assert4Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11Ú@py_assert0r   r   s                r   Ú*test_mock_passthrough_keeps_each_candidater@      sQ  € ä NÐ=RÑSÜ MÐ<QÑRð€Jô �+Š+”j“l×(Ñ(¬¨jÓ)9¸:ÓFÓ
G€CÜ�cœ<Ó(Ð(Ö(×(×(×(×(×(Ñ(Œ:×(×(×(Ñ(Œ:×(×(×(×(×(Ö(�c×(×(×(Ñ(�c×(×(×(×(×(Ö(œ<×(×(×(Ñ(œ<×(×(Õ(Ð(×(×(×(×(×(Ñ(Ø�z‰zÐŒ3ˆz‹?Ð˜aÐ˜aÑ×××Óˆ?×××××ÕŒ3×××ÑŒ3×××××Öˆs×××Ñˆs××Õˆz××Óˆ?××Ó˜a××××××ÕØ�:‰:�a‰=ÐA×-Ñ-ÐA°.Ð1AÐAÐ1AÑA×A×A×AÒAÐ-×A×AÔAˆ=×A×AÓAÐ-×A×AÓAÐ1A×A×A×A×A×A×AÕAØ�:‰:�a‰=Ð@×-Ñ-Ð@°-°Ð@°Ñ@×@×@×@Ò@Ð-×@×@Ô@ˆ=×@×@Ó@Ð-×@×@Ó@°×@×@×@×@×@×@Ö@r   c                  ó   • [         R                  " [        5       R                  [	        S5      / 5      5      n U R
                  n/ o!U:H  o3(       dº  [        R                  " SU4SX45      S[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2g )Nr#   r'   )z.%(py2)s
{%(py2)s = %(py0)s.tables
} == %(py5)sr$   )r   r%   r*   zassert %(py7)sÚpy7)r1   r2   r   r3   r   r4   r   r5   r   r   r   r   r   r   )r$   Ú@py_assert1r:   r8   Ú@py_format6Ú@py_format8s         r   Ú&test_mock_passthrough_empty_candidatesrF   "   s“   € Ü
�+Š+”j“l×(Ñ(¬¨jÓ)9¸2Ó>Ó
?€CØ�:‰:Ð˜Ð˜Ñ×××Òˆ:×××××Õˆ3×××Ñˆ3××Õˆ:××Ó˜××××××Ôr   c                  óÎ  • [        [        SSS/S9/S9n [        R                  " [	        U 5      R                  [        S5      / 5      5      nXL o"(       dÛ  [        R                  " SU4SX45      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	S
[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS
S.-  nSSU0-  n[        [        R                  " U5      5      eS nUR                  S   oUR                   nSS/ovU:H  oˆ(       d„  [        R                  " SU4SXg45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=n=p‡g )Nz| merged |
|---|
| x |r   r"   )r!   r6   )r4   zp.png)Úis)z%(py0)s is %(py2)sr$   Úforced)r   r%   zassert %(py4)sr   r   r'   r-   r.   r/   r+   )r   r   r1   r2   r   r3   r   r   r5   r   r   r   r   r   r   r4   r6   )rI   r$   rC   Ú@py_format3r9   r?   r   r   r:   r   r=   s              r   Ú#test_mock_injected_result_collapsesrK   '   s$  € ÜäØ3Ø&4°mÐ%Dñð
ñ€Fô �+Š+”j Ó(×.Ñ.¬t°G«}¸bÓAÓ
B€CØˆ=×××Òˆ3×××××Õˆ3×××Ñˆ3×××××Ö�&×××Ñ�&××××××ÒØ�:‰:�a‰=ÐP×-Ñ-ÐP°.À-Ð1PÐPÐ1PÑP×P×P×PÒPÐ-×P×PÔPˆ=×P×PÓPÐ-×P×PÓPÐ1P×P×P×P×P×P×PÖPr   c            	      ó  • Sn [        U 5      n[        U[        5      o"(       Gd]  SS[        R                  " 5       ;   d  [
        R                  " [        5      (       a  [
        R                  " [        5      OSS[        R                  " 5       ;   d  [
        R                  " [         5      (       a  [
        R                  " [         5      OS[
        R                  " U 5      [
        R                  " U5      S[        R                  " 5       ;   d  [
        R                  " [        5      (       a  [
        R                  " [        5      OS[
        R                  " U5      S.-  n[        [
        R                  " U5      5      eS =n =pg )NÚmockzSassert %(py8)s
{%(py8)s = %(py0)s(%(py5)s
{%(py5)s = %(py1)s(%(py3)s)
}, %(py6)s)
}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   Útest_get_merger_mockrN   5   s½   € Ø!'Ð5”j Ó(Ð5Œ:Ð(¬*Ó5Ð5Ö5×5×5×5×5×5Ñ5Œ:×5×5×5Ñ5Œ:×5×5×5×5×5Ö5”j×5×5×5Ñ5”j×5×5Õ5 ×5×5Ó5Ð(×5×5×5×5×5Ô5¬*×5×5×5Ñ5¬*×5×5Õ5Ð5×5×5×5×5×5Õ5r   c                  ó‚   • [         R                  " [        5         [        S5        S S S 5        g ! , (       d  f       g = f)NÚbogus)ÚpytestÚraisesÚ
ValueErrorr	   © r   r   Útest_get_merger_unknown_raisesrU   9   s"   € Ü	�Š”zÕ	"Ü�7Ô÷ 
#×	"Ö	"ús   ›0°
>)Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r1   Úpathlibr   rQ   Úquber.agents.mergerr   r   r   r   r   r	   r   r@   rF   rK   rN   rU   rT   r   r   Ú<module>r]      s?   ðÙ Aç  „ ƒÝ ã ÷÷ ò1ò	Aòò
Qò6ór   