U
    x^                     @   s   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ZdS )   )assert_raises)config)eq_)fixtures)provide_metadata)requirements)Column)Table   )exc)Integer)literal_column)select)String)compatc                   @   s:   e Zd ZdZdZdZedd Zej	dd Z
dd	 Zd
S )ExceptionTestzTest basic exception wrapping.

    DBAPIs vary a lot in exception behavior so to actually anticipate
    specific exceptions from real round trips, we need to be conservative.

    eachTc              	   C   s(   t d|tdtdddtdtd d S )N	manual_pkidTFZprimary_keyZautoincrementdata2   r	   r   r   r   clsmetadata r   M/tmp/pip-install-dq5v43_d/SQLAlchemy/sqlalchemy/testing/suite/test_dialect.pydefine_tables   s    zExceptionTest.define_tablesc              	   C   sd   t j P}| }|| jj ddd tt	j
|j| jj ddd |  W 5 Q R X d S )N   Zd1r   r   )r   dbconnectbeginexecutetablesr   insertr   r   ZIntegrityErrorrollback)selfconntransr   r   r   test_integrity_error(   s    
 
z"ExceptionTest.test_integrity_errorc                 C   s   t j }z |ttdg ds*tW nB tjk
rn } z"t	|}t	|j
t	|ks^tW 5 d }~X Y nX tjrt|t	stnt|t	stW 5 Q R X d S )Nu   méilF)r   r!   r"   r$   r   r   AssertionErrorr   Z
DBAPIErrorstrorigr   Zpy2k
isinstance)r(   r)   errerr_strr   r   r   test_exception_with_non_ascii;   s    (z+ExceptionTest.test_exception_with_non_asciiN)__name__
__module____qualname____doc__run_deletes__backend__classmethodr   r   Z$duplicate_key_raises_integrity_errorr+   r2   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 )AutocommitTestr   )
autocommitTc              	   C   s,   t d|tdtdddtdtddd d S )	N
some_tabler   TFr   r   r   )Ztest_needs_acidr   r   r   r   r   r   Z   s    zAutocommitTest.define_tablesc                 C   sf   |  }|| jj ddd |  t|t| jjj	j
g|rJdnd  || jj  d S )Nr   z	some datar    )r#   r$   r%   r<   r&   r'   r   scalarr   cr   delete)r(   r)   r;   r*   r   r   r   _test_conn_autocommitsd   s    
 
z%AutocommitTest._test_conn_autocommitsc                 C   s:   t j }|jdd}| |d |  | |d d S )NZ
AUTOCOMMIT)Zisolation_levelTF)r   r!   r"   Zexecution_optionsr@   Z
invalidate)r(   r)   c2r   r   r   test_autocommit_onr   s
    
z!AutocommitTest.test_autocommit_onc                 C   s   t j }| |d d S )NF)r   r!   r"   r@   )r(   r)   r   r   r   test_autocommit_offy   s    
z"AutocommitTest.test_autocommit_offN)r3   r4   r5   r7   __requires__r8   r9   r   r@   rB   rC   r   r   r   r   r:   R   s   
	r:   c                   @   s   e Zd Zedd ZdS )EscapingTestc              	   C   s   | j }td|tdtd}|tj tj }||	 t
dd ||	 t
dd t|t|jjg|jjtdkd t|t|jjg|jjtdkd W 5 Q R X d	S )
z|test that the DBAPI accommodates for escaped / nonescaped
        percent signs in a way that matches the compiler

        tr   r   zsome % value)r   zsome %% other valuez'some % value'z'some %% other value'N)r   r	   r   r   creater   r!   r#   r$   r&   dictr   r=   r   r>   r   wherer   )r(   mrF   r)   r   r   r   test_percent_sign_round_trip   s,    	z)EscapingTest.test_percent_sign_round_tripN)r3   r4   r5   r   rK   r   r   r   r   rE   ~   s   rE   N) r   r   r   r   r   r   Zschemar   r	   r   r   r   r   r   utilr   Z
TablesTestr   r:   ZTestBaserE   r   r   r   r   <module>   s    ?,