
    Wd                         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dS )    )	bindparam)Column)Integer)MetaData)select)String)Table)testing)text)eq_)fixturesc                   X   e Zd ZdZdZdZed             Zed             Z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dS )RowCountTestztest rowcount functionality)sane_rowcountTc                     t          d|t          dt          dd          t          dt          d                    t          dt          d	                               d S )
N	employeesemployee_idFTautoincrementprimary_keyname2   
department   )r	   r   r   r   )clsmetadatas     b/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/sqlalchemy/testing/suite/test_rowcount.pydefine_tableszRowCountTest.define_tables   sj    # 	   66"::&&<++	
 	
 	
 	
 	
    c                     g dx| _         }| j        j        }|                    |                                d t          |          D                        d S )N)	)AngelaA)Andrewr"   )Anandr"   )BobB)Bobetter&   )Buffyr&   )CharlieC)Cynthiar*   )Chrisr*   c                 &    g | ]\  }\  }}|||d S ))r   r   r    ).0inds       r   
<listcomp>z,RowCountTest.insert_data.<locals>.<listcomp>6   s:       Av1 !"1A>>  r   )datatablesr   executeinsert	enumerate)r   
connectionr4   employees_tables       r   insert_datazRowCountTest.insert_data%   s{    

 

 

 
	
4 *.""$$ !*4  	
 	
 	
 	
 	
r   c                    | j         j        }t          |j        j        |j        j                                      |j        j                  }|                    |          	                                }t          || j                   d S )N)r5   r   r   cr   r   order_byr   r6   fetchallr   r4   )selfr9   r:   srowss        r   
test_basiczRowCountTest.test_basic<   s{    +/"O$5$@
 

(?$0
1
1 	
 !!!$$--//D$)r   c                     | j         j        }|j        j        }|                    |                                                    |dk              ddi          }|j        dk    sJ d S )Nr*   r   Z   )r5   r   r=   r   r6   updatewhererowcountr@   r9   r:   r   rs        r   test_update_rowcount1z"RowCountTest.test_update_rowcount1E   sm    +/ %&1
""$$**:+<==3
 
 zQr   c                     | j         j        }|j        j        }|                    |                                                    |dk              ddi          }t          |j        d           d S )Nr*   r   rF   )	r5   r   r=   r   r6   rG   rH   r   rI   rJ   s        r   test_update_rowcount2z"RowCountTest.test_update_rowcount2P   sr    +/ %&1
""$$**:+<==3
 
 	AJr   implicit_returningFdmlrG   deletec                    |r| j         j        }nmt          dt                      t	          dt
          dd          t	          dt          d                    t	          dt          d	                    d
          }|j        j        }|j	        r_|	                                
                    |dk                                  |j        j        dz                                             }nY|j        r>|                                
                    |dk                                              }n|                                 |                    |          }t!          |j        d           dS )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   )rO   r*   rE   )r   rF   N)r5   r   r	   r   r   r   r   r=   r   rG   rH   valuesreturn_defaultsrQ   failr6   r   rI   )r@   r9   rO   rP   r:   r   stmtrK   s           r   +test_update_delete_rowcount_return_defaultsz8RowCountTest.test_update_delete_rowcount_return_defaults\   s\   $  	"k3OO#

!"' $	   vvbzz**|VAYY//#(  O %&1
: 	&&((zS())_.9C?@@ ""	 D Z 	&&((zS()) "" D HHJJJt$$AJr   c                 Z    |                     d          }t          |j        d           d S Nz8update employees set department='Z' where department='C'rF   )exec_driver_sqlr   rI   r@   r9   results      r   test_raw_sql_rowcountz"RowCountTest.test_raw_sql_rowcount   s4    ++F
 
 	FOQr   c                 t    |                     t          d                    }t          |j        d           d S rY   )r6   r   r   rI   r[   s      r   test_text_rowcountzRowCountTest.test_text_rowcount   s=    ##NOO
 
 	FOQr   c                     | j         j        }|j        j        }|                    |                                                    |dk                        }t          |j        d           d S )Nr*   rF   )	r5   r   r=   r   r6   rQ   rH   r   rI   rJ   s        r   test_delete_rowcountz!RowCountTest.test_delete_rowcount   sj    +/ %&1
""$$**:+<==
 
 	AJr   c                 2   | j         j        }|                                                    |j        j        t          d          k                                  d          }|                    |ddiddiddig          }t          |j
        d           d S )Nemp_namer*   )r   r%   r+   nonexistent   )r5   r   rG   rH   r=   r   r   rS   r6   r   rI   r@   r9   r:   rV   rK   s        r   test_multi_update_rowcountz'RowCountTest.test_multi_update_rowcount   s    +/""$$U?$)Yz-B-BBCCVsV## 	 U#Y']+
 
 	AJr   c                 
   | j         j        }|                                                    |j        j        t          d          k              }|                    |ddiddiddig          }t          |j	        d           d S )Nrc   r%   r+   rd   re   )
r5   r   rQ   rH   r=   r   r   r6   r   rI   rf   s        r   test_multi_delete_rowcountz'RowCountTest.test_multi_delete_rowcount   s    +/%%''--"i
&;&;;
 
 U#Y']+
 
 	AJr   N)__name__
__module____qualname____doc____requires____backend__classmethodr   r;   rC   rL   rN   r
   	variationrequiresupdate_returningdelete_returningrW   r]   r_   ra   sane_multi_rowcountrg   ri   r.   r   r   r   r      sg       %%%LK
 
 [
 
 
 [
,  	 	 	
 
 
 W+dE];;Ww'89w'89	
 . .  <;.`             )  *)& )  *)  r   r   N)
sqlalchemyr   r   r   r   r   r   r	   r
   r   sqlalchemy.testingr   r   
TablesTestr   r.   r   r   <module>ry      s   !                                                           " " " " " " ' ' ' ' ' 'A A A A A8& A A A A Ar   