U
    [h&                     @   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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)normalize_sequence)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ttdddtdtd t d|tdttttdtdd	ddtdtd t d
|tdttttdddtdtddd tjj	j
rt d|tdttttdtjdddtdtddtjd d S )Nseq_pkidZ
tab_id_seqTZprimary_keydata2   
seq_opt_pk)Z	data_typeZ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   r   r   requiresschemasenabledtest_schemaclsmetadata r(   L./venv/lib/python3.8/site-packages/sqlalchemy/testing/suite/test_sequence.pydefine_tables   sr    	
 zSequenceTest.define_tablesc                 C   s.   | | 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_roundtrip]   s    z"SequenceTest.test_insert_roundtripc                 C   s2   | | jj tdd}t|jtjj	j
f d S r+   )r.   r/   r   r0   r1   r   inserted_primary_keyr   dbdialectdefault_sequence_baser4   r5   rr(   r(   r)   test_insert_lastrowida   s    
  
z"SequenceTest.test_insert_lastrowidc                 C   s(   | | jjjjj}t|tjj	j
 d S N)scalarr/   r   cr   defaultr   r   r8   r9   r:   r;   r(   r(   r)   test_nextval_directi   s    z SequenceTest.test_nextval_directc                 C   s*   | | jj tdd}t|jd d S )Nr,   r-   )   )r.   r/   r   r0   r1   r   r7   r;   r(   r(   r)   test_optional_seqm   s
    
 zSequenceTest.test_optional_seqc                 C   s*   | |  }t|tjjjdf d S )Nr,   )r.   Zselectfirstr   r   r8   r9   r:   )r4   tableZconnrowr(   r(   r)   r2   t   s    zSequenceTest._assert_round_tripc                 C   s.   | | jj tdd | | jj| d S r+   )r.   r/   r   r0   r1   r2   r3   r(   r(   r)   +test_insert_roundtrip_no_implicit_returningx   s
    
 z8SequenceTest.test_insert_roundtrip_no_implicit_returning)T)Fr   )Zargnamesc                 C   sr   t dt tdtt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   r   r   execution_optionsr$   r.   r0   r1   r2   )r4   r5   r   r   r(   r(   r)   test_insert_roundtrip_translate~   s*     
z,SequenceTest.test_insert_roundtrip_translatec                 C   sB   t ttddd}|jdtjid}||}t|tjj	j
 d S )Nr   rI   r   rJ   )r   r   r   rK   r$   r?   r   r   r8   r9   r:   )r4   r5   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*   r6   r=   rB   r   Zsequences_optionalrD   r2   rH   r   combinationsr!   r"   rL   rN   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   sx   t dt tdttttdtdt}| jdd}|j	j
d |j	dtttd}| j|d|f d	|j	d
 d S )NxyZy_seqq   )rY   )Z	statementr9   z#INSERT INTO x (y, q) VALUES (%s, 5)T)Zliteral_bindsr9   )r	   r   r   r   r   r   r   r0   valuesr9   Zstatement_compilerZvisit_sequenceZassert_compile)r4   r5   rF   ZstmtZseq_nextvalr(   r(   r)   !test_literal_binds_inline_compile   s.      	 z6SequenceCompilerTest.test_literal_binds_inline_compileN)rO   rP   rQ   rR   rS   r\   r(   r(   r(   r)   rV      s   rV   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
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   sx   t ttd|d t ttd|ddd tjjjr^t ttdtj|d t t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)   r*      s@    	
    zHasSequenceTest.define_tablesc                 C   s   t t|dd d S )Nr^   Tr   r   has_sequencer3   r(   r(   r)   test_has_sequence   s    z!HasSequenceTest.test_has_sequencec              	   C   s   t |}t|dd tttd|d}t|dd || z,t|dd |  t|dd W 5 || X d S )Nr^   TZnew_seqr_   F)	r   r   rd   r   r   r   ZcreateZdropZclear_cache)r4   r5   r'   Zinspssr(   r(   r)   test_has_sequence_cache   s    
z'HasSequenceTest.test_has_sequence_cachec                 C   s   t t|dd d S )Nrb   Frc   r3   r(   r(   r)   test_has_sequence_other_object   s    z.HasSequenceTest.test_has_sequence_other_objectc                 C   s   t t|jdtjdd d S )Nr^   r   Tr   r   rd   r   r$   r3   r(   r(   r)   test_has_sequence_schema   s     z(HasSequenceTest.test_has_sequence_schemac                 C   s   t t|dd d S )Nsome_sequenceFrc   r3   r(   r(   r)   test_has_sequence_neg   s    z%HasSequenceTest.test_has_sequence_negc                 C   s   t t|jdtjdd d S )Nrk   r   Fri   r3   r(   r(   r)   test_has_sequence_schemas_neg  s     z-HasSequenceTest.test_has_sequence_schemas_negc                 C   s   t t|jdtjdd d S )NZother_sequencer   Fri   r3   r(   r(   r)   'test_has_sequence_default_not_in_remote  s     z7HasSequenceTest.test_has_sequence_default_not_in_remotec                 C   s   t t|dd d S )Nra   Frc   r3   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|k d S )Nr`   r^   ra   )setr   get_sequence_namesr   intersection)r4   r5   Z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   rq   r   Ztest_schema_2r3   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   ra   r^   )r   sortedr   rq   r   r$   r3   r(   r(   r)   (test_get_sequence_names_sequences_schema)  s    z8HasSequenceTest.test_get_sequence_names_sequences_schema)rO   rP   rQ   Zrun_deletesrR   rS   rT   r*   re   rg   rh   r   r!   r"   rj   rl   rm   rn   ro   rt   ru   rw   r(   r(   r(   r)   r]      s,   





r]   c                   @   s   e Zd ZdZdZdd ZdS )HasSequenceTestEmptyr   Tc                 C   s   t t| g  d S r>   )r   r   rq   r3   r(   r(   r)   #test_get_sequence_names_no_sequence9  s    
z8HasSequenceTestEmpty.test_get_sequence_names_no_sequenceN)rO   rP   rQ   rR   rS   ry   r(   r(   r(   r)   rx   5  s   rx   N) r   r   Z
assertionsr   r   r   Z	provisionr   r   r   r	   r   r   r   r   r   r   Z
TablesTestr   ZAssertsCompiledSQLZTestBaserV   r]   rx   r(   r(   r(   r)   <module>	   s$    v