ó
    ¯”'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 TableUnifier Protocol and its implementations.é    N)ÚPath)ÚCandidateInputÚMockUnifierÚTableUnifierÚUnifiedTableÚUnifierResultÚget_unifierc                  óÜ  • [        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      Ú3/home/mande/repo/quber/tests/agents/test_unifier.pyÚtest_mock_satisfies_protocolr      s¨   € Ü!“mÐ2Œ:�m¤\Ó2Ð2Ö2×2×2×2×2×2Ñ2Œ:×2×2×2Ñ2Œ:×2×2×2×2×2Ö2”k×2×2×2Ñ2”k×2×2Õ2�m×2×2×2×2×2Ô2¤\×2×2×2Ñ2¤\×2×2Õ2Ð2×2×2×2×2×2Ó2ó    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   Úunifyr   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ô �+Š+”k“m×)Ñ)¬$¨zÓ*:¸JÓGÓ
H€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“   € Ü
�+Š+”k“m×)Ñ)¬$¨zÓ*:¸BÓ?Ó
@€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| unified |
|---|
| 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_combinesrK   '   s$  € ÜäØ4Ø&4°mÐ%Dñð
ñ€Fô �+Š+”k &Ó)×/Ñ/´°W³¸rÓBÓ
C€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_unifier_mockrN   5   s½   € Ø"(Ð7”k &Ó)Ð7Œ:Ð)¬;Ó7Ð7Ö7×7×7×7×7×7Ñ7Œ:×7×7×7Ñ7Œ:×7×7×7×7×7Ö7”k×7×7×7Ñ7”k×7×7Õ7 &×7×7Ó7Ð)×7×7×7×7×7Ô7¬;×7×7×7Ñ7¬;×7×7Õ7Ð7×7×7×7×7×7Õ7r   c                  ó‚   • [         R                  " [        5         [        S5        S S S 5        g ! , (       d  f       g = f)NÚbogus)ÚpytestÚraisesÚ
ValueErrorr	   © r   r   Útest_get_unifier_unknown_raisesrU   9   s"   € Ü	�Š”zÕ	"Ü�GÔ÷ 
#×	"Ö	"ús   ›0°
>)Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r1   Úpathlibr   rQ   Úquber.agents.unifierr   r   r   r   r   r	   r   r@   rF   rK   rN   rU   rT   r   r   Ú<module>r]      s?   ðÙ Bç  „ ƒÝ ã ÷÷ ò3ò	Aòò
Qò8ór   