U
    x^5                     @   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 G dd dejZG dd dejejZG dd dejZdS )   )config)fixtures)eq_)requirements)Column)Table   )Integer)MetaDataschema)Sequence)String)testingc                   @   sR   e Zd ZdZdZ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 )SequenceTest	sequencesTZeachc              
   C   sX   t d|tdttdddtdtd t d|tdttddd	ddtdtd d S )
Nseq_pkidZ
tab_id_seqT)Zprimary_keydata2   
seq_opt_pk)optional)r   r   r	   r   r   )clsmetadata r   N/tmp/pip-install-dq5v43_d/SQLAlchemy/sqlalchemy/testing/suite/test_sequence.pydefine_tables   s"    
zSequenceTest.define_tablesc                 C   s.   t jj| jj dd | | jjt j d S )N	some datar   )r   dbexecutetablesr   insert_assert_round_tripselfr   r   r   test_insert_roundtrip*   s    z"SequenceTest.test_insert_roundtripc                 C   s*   t jj| jj dd}t|jdg d S Nr   r      )r   r    r!   r"   r   r#   r   inserted_primary_keyr&   rr   r   r   test_insert_lastrowid.   s    z"SequenceTest.test_insert_lastrowidc                 C   s$   t j| jjjjj}t|d d S )Nr)   )	r   r    r!   r"   r   cr   defaultr   r+   r   r   r   test_nextval_direct2   s    z SequenceTest.test_nextval_directc                 C   s*   t jj| jj dd}t|jdg d S r(   )r   r    r!   r"   r   r#   r   r*   r+   r   r   r   test_optional_seq6   s
    
 zSequenceTest.test_optional_seqc                 C   s    | |  }t|d d S )N)r)   r   )r!   selectfirstr   )r&   tableconnrowr   r   r   r$   =   s    zSequenceTest._assert_round_tripN)__name__
__module____qualname____requires____backend__Zrun_create_tablesclassmethodr   r'   r-   r0   r   Zsequences_optionalr1   r$   r   r   r   r   r      s   

r   c                   @   s   e Zd ZdZdZdd ZdS )SequenceCompilerTestr   Tc                 C   sr   t dt tdttdtdt}| jdd}tjj	j
d tjj	dtd}| j|d|f d	tjj	d
 d S )NxyZy_seqq   )r@   )Z	statementdialectz#INSERT INTO x (y, q) VALUES (%s, 5)T)Zliteral_bindsrB   )r   r
   r   r	   r   r#   valuesr   r    rB   Zstatement_compilerZvisit_sequenceZassert_compile)r&   r4   ZstmtZseq_nextvalr   r   r   !test_literal_binds_inline_compileF   s&     z6SequenceCompilerTest.test_literal_binds_inline_compileN)r7   r8   r9   r:   r;   rD   r   r   r   r   r=   B   s   r=   c                   @   sd   e Zd ZdZdZdd Zejjdd Z	dd Z
ejjd	d
 Zejjdd Zejjdd ZdS )HasSequenceTestr   Tc                 C   sP   t d}tjt| zttjj	tjdd W 5 tjt| X d S )Nuser_id_seqT)
r   r   r    r!   r   CreateSequenceDropSequencer   rB   has_sequencer&   s1r   r   r   test_has_sequence_   s    z!HasSequenceTest.test_has_sequencec                 C   s\   t dtjd}tjt| z"t	tjj
jtjdtjdd W 5 tjt| X d S )NrF   r   Tr   r   test_schemar   r    r!   r   rG   rH   r   rB   rI   rJ   r   r   r   test_has_sequence_schemaj   s      z(HasSequenceTest.test_has_sequence_schemac                 C   s   t tjjtjdd d S )NrF   F)r   r   r    rB   rI   r%   r   r   r   test_has_sequence_negx   s    z%HasSequenceTest.test_has_sequence_negc                 C   s"   t tjjjtjdtjdd d S NrF   r   F)r   r   r    rB   rI   r   rN   r%   r   r   r   test_has_sequence_schemas_neg{   s      z-HasSequenceTest.test_has_sequence_schemas_negc                 C   sV   t d}tjt| z"ttjjj	tjdt
jdd W 5 tjt| X d S rQ   )r   r   r    r!   r   rG   rH   r   rB   rI   r   rN   rJ   r   r   r   'test_has_sequence_default_not_in_remote   s      z7HasSequenceTest.test_has_sequence_default_not_in_remotec                 C   sV   t dtjd}tjt| zt	tjj
tjdd W 5 tjt| X d S rQ   rM   rJ   r   r   r   'test_has_sequence_remote_not_in_default   s    z7HasSequenceTest.test_has_sequence_remote_not_in_defaultN)r7   r8   r9   r:   r;   rL   r   requiresZschemasrO   rP   rR   rS   rT   r   r   r   r   rE   [   s   


rE   N) r   r   Z
assertionsr   r   r   r   r   r	   r
   r   r   r   Z
TablesTestr   ZAssertsCompiledSQLZTestBaser=   rE   r   r   r   r   <module>   s   3