o
    y¬´\ø,  ã                   @   sú   d dl 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 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„ dejƒZG dd„ dejƒZG dd„ dejejƒZdS )é    Né   )Úconfig)Úengines)Úfixtures)Úeq_)Úrequirements)ÚColumn)ÚTableé   )ÚDateTime)Úfunc)ÚInteger)Úselect)Úsql)ÚString)Útesting)Útextc                   @   sV   e Zd ZdZedd„ ƒZedd„ ƒZdd„ Zdd	„ Zd
d„ Z	e
jdd„ ƒZdd„ ZdS )ÚRowFetchTestTc                 C   sD   t d|tdtdd�tdtdƒƒƒ t d|tdtdd�tdtƒƒ d S )	NÚplain_pkÚidT©Úprimary_keyÚdataé2   Ú	has_datesÚtoday)r	   r   r   r   r   ©ÚclsÚmetadata© r   úW/var/www/html/env/lib/python3.10/site-packages/sqlalchemy/testing/suite/test_results.pyÚdefine_tables   s   üüzRowFetchTest.define_tablesc                 C   s`   t j | jj ¡ dddœdddœdddœg¡ t j | jj ¡ dt dd	d
d
dd¡dœg¡ d S )Né   Úd1)r   r   r   Úd2r
   Úd3éÖ  é   é   r   )r   r   )r   ÚdbÚexecuteÚtablesr   Úinsertr   Údatetime)r   r   r   r    Úinsert_data&   s   
ýþ	
þzRowFetchTest.insert_datac                 C   sF   t j | jj ¡  | jjjj¡¡ 	¡ }t
|d dƒ t
|d dƒ d S )Nr   r"   r   r#   ©r   r)   r*   r+   r   r   Úorder_byÚcr   Úfirstr   ©ÚselfÚrowr   r   r    Útest_via_string6   ó   ÿþzRowFetchTest.test_via_stringc                 C   sF   t j | jj ¡  | jjjj¡¡ 	¡ }t
|d dƒ t
|d dƒ d S )Nr   r"   r#   r/   r3   r   r   r    Útest_via_int>   r7   zRowFetchTest.test_via_intc                 C   sV   t j | jj ¡  | jjjj¡¡ 	¡ }t
|| jjjj dƒ t
|| jjjj dƒ d S )Nr"   r#   )r   r)   r*   r+   r   r   r0   r1   r   r2   r   r   r3   r   r   r    Útest_via_col_objectF   s   ÿþz RowFetchTest.test_via_col_objectc                 C   s`   t j t| jjjj| jjjj d¡gƒ 	| jjjj
¡¡}| ¡ }t| ¡ ddgƒ t|dƒ d S )Nr   )r#   r#   )r   r)   r*   r   r+   r   r1   r   Úlabelr0   r   r2   r   Úkeys)r4   Úresultr5   r   r   r    Útest_row_with_dupe_namesN   s   
þÿúz%RowFetchTest.test_row_with_dupe_namesc              
   C   sh   | j j}t| d¡jjgƒ ¡ }t|jj| d¡gƒ}t	j
 |¡ ¡ }t|d t dddddd¡ƒ dS )zýtest that a scalar select as a column is returned as such
        and that type conversion works OK.

        (this is half a SQLAlchemy Core test and half to catch database
        backends that may have unusual behavior with scalar selects.)

        ÚxÚ	somelabelr&   r'   r(   r   N)r+   r   r   Úaliasr1   r   Ú	as_scalarr   r:   r   r)   r*   r2   r   r-   )r4   Ú	datetableÚsÚs2r5   r   r   r    Útest_row_w_scalar_select\   s
   "z%RowFetchTest.test_row_w_scalar_selectN)Ú__name__Ú
__module__Ú__qualname__Ú__backend__Úclassmethodr!   r.   r6   r8   r9   r   Ú%duplicate_names_in_cursor_descriptionr=   rE   r   r   r   r    r      s    


r   c                   @   s<   e Zd ZdZdZdZedd„ ƒZdd„ Zdd	„ Z	d
d„ Z
dS )ÚPercentSchemaNamesTestzÜtests using percent signs, spaces in table and column names.

    This is a very fringe use case, doesn't work for MySQL
    or PostgreSQL.  the requirement, "percent_schema_names",
    is marked "skip" by default.

    )Úpercent_schema_namesTc                 C   s@   t d|tdtƒtdtƒƒ| j_t dt d¡t d¡¡| j_d S )Nzpercent%tableúpercent%úspaces % more spaces)	r	   r   r   r+   Úpercent_tabler   ÚtableÚcolumnÚlightweight_percent_tabler   r   r   r    r!   y   s   üýz$PercentSchemaNamesTest.define_tablesc                 C   sP   | j j}dddœdddœdddœdddœfD ]}tj | ¡ |¡ q|  ¡  d S ©Nr'   r(   )rN   rO   é   é   é	   é
   ©r+   rP   r   r)   r*   r,   Ú_assert_table)r4   rP   Úparamsr   r   r    Útest_single_roundtrip‡   s   üz,PercentSchemaNamesTest.test_single_roundtripc                 C   sV   | j j}tj | ¡ dddœ¡ tj | ¡ dddœdddœdddœg¡ |  ¡  d S rT   rY   )r4   rP   r   r   r    Útest_executemany_roundtrip’   s   ÿýþz1PercentSchemaNamesTest.test_executemany_roundtripc                 C   sF  | j j}| j j}|| ¡ || ¡ fD ]i}tttj | 	¡  
|jd ¡¡ƒg d¢ƒ tttj | 	¡  |jd  ddg¡¡ 
|jd ¡¡ƒddgƒ tj | 	¡  
|jd ¡¡ ¡ }t|d dƒ t|d d	ƒ t||jd  dƒ t||jd  d	ƒ qtj | ¡  |jd d
i¡¡ tttj | 	¡  
|jd ¡¡ƒg d¢ƒ d S )NrN   ))r'   r(   )rU   rV   ©rW   rX   ©rV   rW   rO   rW   rX   r^   r_   r'   r(   é   ))r'   r`   )rU   r`   )rW   r`   )rV   r`   )r+   rP   rS   r@   r   Úlistr   r)   r*   r   r0   r1   ÚwhereÚin_r2   ÚupdateÚvalues)r4   rP   rS   rQ   r5   r   r   r    rZ   ¡   sb   üÿÿú	ýÿøÿþÿÿÿÿÿøz$PercentSchemaNamesTest._assert_tableN)rF   rG   rH   Ú__doc__Ú__requires__rI   rJ   r!   r\   r]   rZ   r   r   r   r    rL   l   s    
rL   c                   @   s¢   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zejd#d$„ ƒZd%S )&ÚServerSideCursorsTest)Úserver_side_cursorsTc                 C   s`   | j jjdkr
|jS | j jjdkrtdƒjj}t||ƒS | j jjdkr.tdƒjj}t||ƒS dS )NÚpsycopg2Úpymysqlzpymysql.cursorsÚmysqldbzMySQLdb.cursorsF)ÚengineÚdialectÚdriverÚnameÚ
__import__ÚcursorsÚSSCursorÚ
isinstance)r4   ÚcursorÚsscursorr   r   r    Ú_is_server_sideâ   s   

z%ServerSideCursorsTest._is_server_sidec                 C   s   t jd|id�| _| jS )Nri   )Úoptions)r   Útesting_enginerm   )r4   ri   r   r   r    Ú_fixtureî   s   ÿzServerSideCursorsTest._fixturec                 C   s   t j ¡  | j ¡  d S )N)r   Útesting_reaperÚ	close_allrm   Údispose)r4   r   r   r    ÚtearDownô   s   
zServerSideCursorsTest.tearDownc                 C   ó(   |   d¡}| d¡}|  |j¡sJ ‚d S ©NTúselect 1©rz   r*   rw   ru   ©r4   rm   r<   r   r   r    Útest_global_stringø   ó   

z(ServerSideCursorsTest.test_global_stringc                 C   s,   |   d¡}| tdƒ¡}|  |j¡sJ ‚d S r€   ©rz   r*   r   rw   ru   rƒ   r   r   r    Útest_global_textý   s   
z&ServerSideCursorsTest.test_global_textc                 C   s.   |   d¡}| tdgƒ¡}|  |j¡sJ ‚d S )NTr"   )rz   r*   r   rw   ru   rƒ   r   r   r    Útest_global_expr  s   
z&ServerSideCursorsTest.test_global_exprc                 C   s,   |   d¡}| tdƒ¡}|  |j¡rJ ‚d S )NFr�   r†   rƒ   r   r   r    Útest_global_off_explicit  s   
z.ServerSideCursorsTest.test_global_off_explicitc                 C   s:   |   d¡}tdgƒjdd�}| |¡}|  |j¡sJ ‚d S ©NFr"   T©Ústream_results©rz   r   Úexecution_optionsr*   rw   ru   ©r4   rm   rC   r<   r   r   r    Útest_stmt_option  s   

z&ServerSideCursorsTest.test_stmt_optionc                 C   s4   |   d¡}| ¡ jdd� d¡}|  |j¡sJ ‚d S )NFTr‹   r�   )rz   ÚconnectrŽ   r*   rw   ru   rƒ   r   r   r    Útest_conn_option  s   
ÿýz&ServerSideCursorsTest.test_conn_optionc                 C   sF   |   d¡}tdgƒjdd�}| ¡ jdd� |¡}|  |j¡r!J ‚d S rŠ   )rz   r   rŽ   r‘   r*   rw   ru   r�   r   r   r    Ú&test_stmt_enabled_conn_option_disabled$  s
   
ÿz<ServerSideCursorsTest.test_stmt_enabled_conn_option_disabledc                 C   s:   |   d¡}tdgƒjdd�}| |¡}|  |j¡rJ ‚d S )NTr"   Fr‹   r�   r�   r   r   r    Útest_stmt_option_disabled/  s   

z/ServerSideCursorsTest.test_stmt_option_disabledc                 C   sf   |   d¡}tdgƒjdd� ¡ }| |¡}|  |j¡sJ ‚tdg|d�}| |¡}|  |j¡r1J ‚d S )NFr"   Tr‹   )Úfrom_obj)rz   r   rŽ   r@   r*   rw   ru   )r4   rm   Ús1r<   rD   r   r   r    Útest_aliases_and_ss5  s   


z)ServerSideCursorsTest.test_aliases_and_ssc                 C   s6   |   d¡}tdgdd�}| |¡}|  |j¡sJ ‚d S )NTr"   )Ú
for_update)rz   r   r*   rw   ru   )r4   rm   r–   r<   r   r   r    Útest_for_update_exprA  s   

z*ServerSideCursorsTest.test_for_update_exprc                 C   r   )NTzSELECT 1 FOR UPDATEr‚   rƒ   r   r   r    Útest_for_update_stringG  r…   z,ServerSideCursorsTest.test_for_update_stringc                 C   s0   |   d¡}tdƒ}| |¡}|  |j¡rJ ‚d S )NFú	select 42)rz   r   r*   rw   ru   r�   r   r   r    Útest_text_no_ssL  s   

z%ServerSideCursorsTest.test_text_no_ssc                 C   s8   |   d¡}tdƒjdd�}| |¡}|  |j¡sJ ‚d S )NFr›   Tr‹   )rz   r   rŽ   r*   rw   ru   r�   r   r   r    Útest_text_ss_optionR  s   

z)ServerSideCursorsTest.test_text_ss_optionc                 C   s   | j }|  d¡}td|tdtdd�tdtdƒƒƒ}|jdd� | ¡ jdd	� | ¡ jd
d	� t	| 
¡  |jj¡ ¡  ¡ ddgƒ | ¡  |jjdk¡j|jjd d	� ¡  t	| 
¡  |jj¡ ¡  ¡ ddgƒ | ¡  ¡  t	t
t d¡gƒ |¡ ¡ dƒ d S )NTÚ
test_tabler   r   r   r   )Ú
checkfirstÚdata1)r   Údata2)r"   r    )r   r¡   r   z updated)r   zdata2 updatedÚ*r   )r   rz   r	   r   r   r   Úcreater,   r*   r   r   r0   r1   r   Úfetchallrd   rb   re   r   Údeleter   ÚcountÚselect_fromÚscalar)r4   Úmdrm   rž   r   r   r    Útest_roundtripX  s2   
üþ
ÿþ$z$ServerSideCursorsTest.test_roundtripN)rF   rG   rH   rg   rI   rw   rz   r~   r„   r‡   rˆ   r‰   r�   r’   r“   r”   r—   r™   rš   rœ   r�   r   Úprovide_metadatarª   r   r   r   r    rh   Ú   s*    
rh   )r-   Ú r   r   r   Ú
assertionsr   r   Úschemar   r	   r   r   r   r   r   r   r   r   Ú
TablesTestr   rL   ÚTestBaseÚAssertsExecutionResultsrh   r   r   r   r    Ú<module>   s*    X
nÿ