
    h                         d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d d	l m	Z	 d d
l
mZ d dl
mZ  G d dej                        Zy)    )	bindparam)Column)Integer)MetaData)select)String)Table)testing)text)eq_)fixturesc                      e Zd ZdZdZdZed        Zed        Zd Z	 e
j                  dg d       e
j                  d	dd
g      d               Zd Zd Z e
j                  ddd
g       e
j                  dde
j                  j                   fde
j                  j"                  fg      d               Zd Zd Zd Ze
j                  j,                  d        Ze
j                  j,                  d        Zy)RowCountTestztest rowcount functionality)sane_rowcountTc                     t        d|t        dt        dd      t        dt        d            t        dt        d	                   y )
N	employeesemployee_idFTautoincrementprimary_keyname2   
department   )r	   r   r   r   )clsmetadatas     OD:\EasyAligner\venv\Lib\site-packages\sqlalchemy/testing/suite/test_rowcount.pydefine_tableszRowCountTest.define_tables   sB    # 	 66":&<+	
    c                     g dx| _         }| j                  j                  }|j                  |j	                         t        |      D cg c]  \  }\  }}|||d c}}}       y c c}}}w )N)	)AngelaA)Andrewr"   )Anandr"   )BobB)Bobetter&   )Buffyr&   )CharlieC)Cynthiar*   )Chrisr*   r   r   r   )datatablesr   executeinsert	enumerate)r   
connectionr.   employees_tableinds          r   insert_datazRowCountTest.insert_data+   sr    

 
	
4 **..""$ "+4!0IAv1 !"1A>!0	
s   A(c                 H   | j                   j                  }t        |j                  j                  |j                  j
                        j                  |j                  j                        }|j                  |      j                         }t        || j                         y )N)r/   r   r   cr   r   order_byr   r0   fetchallr   r.   )selfr3   r4   srowss        r   
test_basiczRowCountTest.test_basicB   sz    ++//""O$5$5$@$@

(?$$00
1 	
 !!!$--/D$))r   	statement)updatedeleter1   r   close_firstFc           	      N   | j                   j                  }|j                  j                  }|j                  r6|j                  |j	                         j                  |dk(        ddi      }n|j                  r5|j                  |j                         j                  |dk(        ddi      }n|j                  r0|j                  |j                         dddddd	ddd
dddg      }n|j                  r|t        |j                  j                  |j                  j                        j                  |j                  j                  dk(        }|j                  |      }|j                          n|j                          |rj                          j                  dv sJ y )Nr*   r   Z   znone 1Xr-      znone 2   znone 3)   )r/   r   r:   r   rB   r0   whererC   r1   r   r   allfailcloserowcount)r=   r3   rA   rD   r4   r   rr>   s           r   $test_non_rowcount_scenarios_no_raisez1RowCountTest.test_non_rowcount_scenarios_no_raiseK   s   
 ++// %&&11
""&&(..zS/@As#A ""&&(..zS/@As#A ""&&($&L$&L$&LA !!&&(9(9(D(DeO%%00C78  ""1%AEEGNNGGIzzW$$$r   c                     | j                   j                  }|j                  j                  }|j	                  |j                         j                  |dk(        ddi      }|j                  dk(  sJ y )Nr*   r   rF   rL   )r/   r   r:   r   r0   rB   rM   rQ   r=   r3   r4   r   rR   s        r   test_update_rowcount1z"RowCountTest.test_update_rowcount1v   sj    ++// %&&11
""$**:+<=3
 zzQr   c                     | j                   j                  }|j                  j                  }|j	                  |j                         j                  |dk(        ddi      }t        |j                  d       y )Nr*   r   rL   )	r/   r   r:   r   r0   rB   rM   r   rQ   rU   s        r   test_update_rowcount2z"RowCountTest.test_update_rowcount2   sh    ++// %&&11
""$**:+<=3
 	AJJr   implicit_returningdmlrB   rC   c                    |r| j                   j                  }nPt        dt               t	        dt
        dd      t	        dt        d            t	        dt        d	            d
      }|j                  j                  }|j                  rX|j                         j                  |dk(        j                  |j                  j                  dz         j                         }nM|j                  r1|j                         j                  |dk(        j                         }n|j                          |j                        }t!        |j"                  d       y)znote this test should succeed for all RETURNING backends
        as of 2.0.  In
        Idf28379f8705e403a3c6a937f6a798a042ef2540 we changed rowcount to use
        len(rows) when we have implicit returning

        r   r   FTr   r   r   r   r   )rY   r*   rF   )r   rL   N)r/   r   r	   r   r   r   r   r:   r   rB   rM   valuesreturn_defaultsrC   rO   r0   r   rQ   )r=   r3   rY   rZ   r4   r   stmtrR   s           r   +test_update_delete_rowcount_return_defaultsz8RowCountTest.test_update_delete_rowcount_return_defaults   s   $ "kk33O#
!"' $	 vvbz*|VAY/#(O %&&11
::&&(zS()_..99C?@ "	  ZZ&&(zS() "  HHJt$AJJr   c                 R    |j                  d      }t        |j                  d       y Nz8update employees set department='Z' where department='C'rL   )exec_driver_sqlr   rQ   r=   r3   results      r   test_raw_sql_rowcountz"RowCountTest.test_raw_sql_rowcount   s%    ++F
 	FOOQr   c                 d    |j                  t        d            }t        |j                  d       y ra   )r0   r   r   rQ   rc   s      r   test_text_rowcountzRowCountTest.test_text_rowcount   s+    ##KL
 	FOOQr   c                     | j                   j                  }|j                  j                  }|j	                  |j                         j                  |dk(              }t        |j                  d       y )Nr*   rL   )	r/   r   r:   r   r0   rC   rM   r   rQ   rU   s        r   test_delete_rowcountz!RowCountTest.test_delete_rowcount   s`    ++// %&&11
""$**:+<=
 	AJJr   c                 0   | j                   j                  }|j                         j                  |j                  j
                  t        d      k(        j                  d      }|j                  |ddiddiddig      }t        |j                  d       y )Nemp_namer*   )r   r%   r+   nonexistent   )r/   r   rB   rM   r:   r   r   r\   r0   r   rQ   r=   r3   r4   r^   rR   s        r   test_multi_update_rowcountz'RowCountTest.test_multi_update_rowcount   s    ++//""$U?$$))Yz-BBCVsV# 	 U#Y']+
 	AJJr   c                    | j                   j                  }|j                         j                  |j                  j
                  t        d      k(        }|j                  |ddiddiddig      }t        |j                  d       y )Nrk   r%   r+   rl   rm   )
r/   r   rC   rM   r:   r   r   r0   r   rQ   rn   s        r   test_multi_delete_rowcountz'RowCountTest.test_multi_delete_rowcount   s    ++//%%'--""i
&;;
 U#Y']+
 	AJJr   N)__name__
__module____qualname____doc____requires____backend__classmethodr   r8   r@   r
   	variationrS   rV   rX   requiresupdate_returningdelete_returningr_   re   rg   ri   sane_multi_rowcountro   rq    r   r   r   r      sB   %%LK
 
 
 
, W{$LMW}tUm4'% 5 N'%R	
 W+dE];Ww''889w''889	
. <.`   )) *& )) *r   r   N)
sqlalchemyr   r   r   r   r   r   r	   r
   r   sqlalchemy.testingr   r   
TablesTestr   r~   r   r   <module>r      s<    !         " 'l8&& lr   