o
    Rc	"                     @   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 G dd dejZG dd dejejZG dd dejZG dd dejZdS )   )config)fixtures)eq_)is_true)requirements)Column)Table   )inspect)Integer)MetaData)Sequence)String)testingc                   @   s   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d Zejddddejjdd Zejjdd ZdS )SequenceTest	sequencesTZeachc                 C   s   t d|tdttdddtdtd t d|tdttdtdd	ddtdtd t d
|tdttdddtdtddd tjjjrct d|tdttdt	j
dddtdtddt	j
d d S d S )Nseq_pkidZ
tab_id_seqTZprimary_keydata2   
seq_opt_pk)Z	data_typeoptionalseq_no_returningZnoret_id_seqF)implicit_returningseq_no_returning_schnoret_sch_id_seqschemar   r   )r   r   r   r   r   r   requiresschemasenabledr   test_schemaclsmetadata r(   HD:\Flask\env\Lib\site-packages\sqlalchemy/testing/suite/test_sequence.pydefine_tables   sb   

zSequenceTest.define_tablesc                 C   .   | | jj tdd | | jj| d S N	some datar   )executetablesr   insertdict_assert_round_tripself
connectionr(   r(   r)   test_insert_roundtripL   s   z"SequenceTest.test_insert_roundtripc                 C   s2   | | jj tdd}t|jtjj	j
f d S r,   )r/   r0   r   r1   r2   r   inserted_primary_keyr   dbdialectdefault_sequence_baser5   r6   rr(   r(   r)   test_insert_lastrowidP   s   z"SequenceTest.test_insert_lastrowidc                 C   s(   | | jjjjj}t|tjj	j
 d S N)r/   r0   r   cr   defaultr   r   r9   r:   r;   r<   r(   r(   r)   test_nextval_directX   s   z SequenceTest.test_nextval_directc                 C   s*   | | jj tdd}t|jd d S )Nr-   r.   )   )r/   r0   r   r1   r2   r   r8   r<   r(   r(   r)   test_optional_seq\   s   zSequenceTest.test_optional_seqc                 C   s*   | |  }t|tjjjdf d S )Nr-   )r/   selectfirstr   r   r9   r:   r;   )r5   tableconnrowr(   r(   r)   r3   c   s   zSequenceTest._assert_round_tripc                 C   r+   r,   )r/   r0   r   r1   r2   r3   r4   r(   r(   r)   +test_insert_roundtrip_no_implicit_returningg   s   z8SequenceTest.test_insert_roundtrip_no_implicit_returning)T)Fr   )argnamesc              
   C   sl   t dt tdttdddddtdtd	|dd
}|jdtjid}|	|
 tdd | || d S )Nr   r   r   
alt_schemar   Tr   r   r   r    Zschema_translate_mapr-   r.   )r   r   r   r   r   r   execution_optionsr   r$   r/   r1   r2   r3   )r5   r6   r   r   r(   r(   r)   test_insert_roundtrip_translatem   s$   
z,SequenceTest.test_insert_roundtrip_translatec                 C   s<   t ddd}|jdtjid}||}t|tjjj	 d S )Nr   rL   r   rM   )
r   rN   r   r$   r/   r   r   r9   r:   r;   )r5   r6   seqr=   r(   r(   r)   $test_nextval_direct_schema_translate   s   
z1SequenceTest.test_nextval_direct_schema_translateN)__name__
__module____qualname____requires____backend__Zrun_create_tablesclassmethodr*   r7   r>   rB   r   Zsequences_optionalrD   r3   rJ   r   combinationsr!   r"   rO   rQ   r(   r(   r(   r)   r      s$    
5
r   c                   @      e Zd ZdZdZdd ZdS )SequenceCompilerTestr   Tc                 C   sl   t dt tdttdtdt}| jdd}|jjd |jd	td}| j
|d|f d	|jd
 d S )NxyZy_seqq   )r]   )Z	statementr:   z#INSERT INTO x (y, q) VALUES (%s, 5)T)Zliteral_bindsr:   )r   r   r   r   r   r1   valuesr:   Zstatement_compilerZvisit_sequenceZassert_compile)r5   r6   rG   stmtZseq_nextvalr(   r(   r)   !test_literal_binds_inline_compile   s$   

z6SequenceCompilerTest.test_literal_binds_inline_compileN)rR   rS   rT   rU   rV   ra   r(   r(   r(   r)   rZ          rZ   c                   @   s   e Zd ZdZdZdZedd Zd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d Ze
jjdd Ze
jjdd ZdS )HasSequenceTestNr   Tc                 C   s`   t d|d t d|ddd tjjjr#t dtj|d t dtj|d td|td	t	dd
 d S )Nuser_id_seq)r'   	other_seqT)r'   Z
nomaxvalueZ
nominvalue)r   r'   
schema_sequser_id_tabler   r   )
r   r   r!   r"   r#   r   r$   r   r   r   r%   r(   r(   r)   r*      s    
zHasSequenceTest.define_tablesc                 C      t t|dd d S )Nrd   Tr   r
   has_sequencer4   r(   r(   r)   test_has_sequence      z!HasSequenceTest.test_has_sequencec                 C   rh   )Nrg   Fri   r4   r(   r(   r)   test_has_sequence_other_object   rl   z.HasSequenceTest.test_has_sequence_other_objectc                 C      t t|jdtjdd d S )Nrd   r   Tr   r
   rj   r   r$   r4   r(   r(   r)   test_has_sequence_schema      z(HasSequenceTest.test_has_sequence_schemac                 C   rh   )Nsome_sequenceFri   r4   r(   r(   r)   test_has_sequence_neg   rl   z%HasSequenceTest.test_has_sequence_negc                 C   rn   )Nrr   r   Fro   r4   r(   r(   r)   test_has_sequence_schemas_neg   rq   z-HasSequenceTest.test_has_sequence_schemas_negc                 C   rn   )NZother_sequencer   Fro   r4   r(   r(   r)   'test_has_sequence_default_not_in_remote   rq   z7HasSequenceTest.test_has_sequence_default_not_in_remotec                 C   rh   )Nrf   Fri   r4   r(   r(   r)   'test_has_sequence_remote_not_in_default   s   z7HasSequenceTest.test_has_sequence_remote_not_in_defaultc                 C   s:   ddh}t t| }t|||k td|v d S )Nre   rd   rf   )setr
   get_sequence_namesr   intersection)r5   r6   expresr(   r(   r)   test_get_sequence_names   s   z'HasSequenceTest.test_get_sequence_namesc                 C   s   t t|jtjdg  d S )Nr   )r   r
   rx   r   Ztest_schema_2r4   r(   r(   r)   *test_get_sequence_names_no_sequence_schema   s   z:HasSequenceTest.test_get_sequence_names_no_sequence_schemac                 C   s$   t tt|jtjdddg d S )Nr   rf   rd   )r   sortedr
   rx   r   r$   r4   r(   r(   r)   (test_get_sequence_names_sequences_schema  s   z8HasSequenceTest.test_get_sequence_names_sequences_schema)rR   rS   rT   Zrun_deletesrU   rV   rW   r*   rk   rm   r   r!   r"   rp   rs   rt   ru   rv   r|   r}   r   r(   r(   r(   r)   rc      s,    





rc   c                   @   rY   )HasSequenceTestEmptyr   Tc                 C   s   t t| g  d S r?   )r   r
   rx   r4   r(   r(   r)   #test_get_sequence_names_no_sequence  s   
z8HasSequenceTestEmpty.test_get_sequence_names_no_sequenceN)rR   rS   rT   rU   rV   r   r(   r(   r(   r)   r     rb   r   N) r   r   Z
assertionsr   r   r   r   r   r   r
   r   r   r   r   r   Z
TablesTestr   ZAssertsCompiledSQLZTestBaserZ   rc   r   r(   r(   r(   r)   <module>   s$     i