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Údataé2   Ú
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.   úb/var/www/html/flaskapp/venv/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