o
    g&                     @   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	sequencesT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
rot d|tdttttdtjdddtdtddtjd d S d S )Nseq_pkid
tab_id_seqTprimary_keydata2   
seq_opt_pk)	data_typeoptionalseq_no_returning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.   `/var/www/html/api-tag/env/lib/python3.10/site-packages/sqlalchemy/testing/suite/test_sequence.pydefine_tables   sr   	

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_roundtrip]   s   z"SequenceTest.test_insert_roundtripc                 C   s2   | | jj tdd}t|jtjj	j
f d S r2   )r5   r6   r   r7   r8   r   inserted_primary_keyr   dbdialectdefault_sequence_baser;   r<   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)scalarr6   r   cr   defaultr   r   r?   r@   rA   rB   r.   r.   r/   test_nextval_directi   s   z SequenceTest.test_nextval_directc                 C   s*   | | jj tdd}t|jd d S )Nr3   r4   )   )r5   r6   r   r7   r8   r   r>   rB   r.   r.   r/   test_optional_seqm   s   zSequenceTest.test_optional_seqc                 C   s*   | |  }t|tjjjdf d S )Nr3   )r5   selectfirstr   r   r?   r@   rA   )r;   tableconnrowr.   r.   r/   r9   t   s   zSequenceTest._assert_round_tripc                 C   r1   r2   )r5   r6   r   r7   r8   r9   r:   r.   r.   r/   +test_insert_roundtrip_no_implicit_returningx   s   z8SequenceTest.test_insert_roundtrip_no_implicit_returning)T)Fr!   )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&   schema_translate_mapr3   r4   )r	   r   r   r   r   r   r   r   execution_optionsr*   r5   r7   r8   r9   )r;   r<   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#   rS   r$   rT   )r   r   r   rV   r*   rF   r   r   r?   r@   rA   )r;   r<   seqrC   r.   r.   r/   $test_nextval_direct_schema_translate   s   
z1SequenceTest.test_nextval_direct_schema_translateN)__name__
__module____qualname____requires____backend__run_create_tablesclassmethodr0   r=   rD   rI   r   sequences_optionalrK   r9   rQ   r   combinationsr'   r(   rW   rY   r.   r.   r.   r/   r      s$    
=
r   c                   @      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yy_seqq   )rh   )	statementr@   z#INSERT INTO x (y, q) VALUES (%s, 5)T)literal_bindsr@   )r	   r   r   r   r   r   r   r7   valuesr@   statement_compilervisit_sequenceassert_compile)r;   r<   rN   stmtseq_nextvalr.   r.   r/   !test_literal_binds_inline_compile   s(   	
z6SequenceCompilerTest.test_literal_binds_inline_compileN)rZ   r[   r\   r]   r^   rr   r.   r.   r.   r/   rd          rd   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-   
nomaxvalue
nominvalue)r%   r-   
schema_sequser_id_tabler   r   )r   r   r   r   r'   r(   r)   r*   r	   r   r   r+   r.   r.   r/   r0      s8   
	zHasSequenceTest.define_tablesc                 C      t t|dd d S )Nru   Tr   r   has_sequencer:   r.   r.   r/   test_has_sequence      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 || d S || w )Nru   Tnew_seqrv   F)	r   r   r~   r   r   r   createclear_cachedrop)r;   r<   r-   inspssr.   r.   r/   test_has_sequence_cache   s   
z'HasSequenceTest.test_has_sequence_cachec                 C   r|   )Nr{   Fr}   r:   r.   r.   r/   test_has_sequence_other_object   r   z.HasSequenceTest.test_has_sequence_other_objectc                 C      t t|jdtjdd d S )Nru   r$   Tr   r   r~   r   r*   r:   r.   r.   r/   test_has_sequence_schema      z(HasSequenceTest.test_has_sequence_schemac                 C   r|   )Nsome_sequenceFr}   r:   r.   r.   r/   test_has_sequence_neg   r   z%HasSequenceTest.test_has_sequence_negc                 C   r   )Nr   r$   Fr   r:   r.   r.   r/   test_has_sequence_schemas_neg  r   z-HasSequenceTest.test_has_sequence_schemas_negc                 C   r   )Nother_sequencer$   Fr   r:   r.   r.   r/   'test_has_sequence_default_not_in_remote  r   z7HasSequenceTest.test_has_sequence_default_not_in_remotec                 C   r|   )Nrz   Fr}   r:   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 )Nrw   ru   rz   )setr   get_sequence_namesr   intersection)r;   r<   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   r   r   test_schema_2r:   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$   rz   ru   )r   sortedr   r   r   r*   r:   r.   r.   r/   (test_get_sequence_names_sequences_schema)  s   z8HasSequenceTest.test_get_sequence_names_sequences_schema)rZ   r[   r\   run_deletesr]   r^   r`   r0   r   r   r   r   r'   r(   r   r   r   r   r   r   r   r   r.   r.   r.   r/   rt      s.    





rt   c                   @   rc   )HasSequenceTestEmptyr   Tc                 C   s   t t| g  d S rE   )r   r   r   r:   r.   r.   r/   #test_get_sequence_names_no_sequence9  s   
z8HasSequenceTestEmpty.test_get_sequence_names_no_sequenceN)rZ   r[   r\   r]   r^   r   r.   r.   r.   r/   r   5  rs   r   N) r   r   
assertionsr   r   r   	provisionr   r%   r   r	   r   r   r   r   r   r   
TablesTestr   AssertsCompiledSQLTestBaserd   rt   r   r.   r.   r.   r/   <module>   s&    v