î
wÐR\$  ã               @   s  d  d l  m Z d d l m Z d d l m Z d  d l Z d  d l Z d  d l j Z	 Gd d „  d e j
 ƒ Z Gd d	 „  d	 e ƒ Z Gd
 d „  d e e j ƒ Z Gd d „  d e e j ƒ Z e j e e j d d ƒ ƒ d d „  Z e d k rÿ e j ƒ  n  d S)é    )Údateé   )Ú	testutils)ÚunittestNc               @   s   e  Z d  Z d d „  Z d S)ÚTestPaginatec             C   s€  d d „  } |  j  t | g  ƒ ƒ g  ƒ |  j  t | d g ƒ ƒ d g g ƒ |  j  t | t t d ƒ ƒ ƒ ƒ t t d ƒ ƒ g ƒ |  j  t | t t d ƒ ƒ ƒ ƒ t t d ƒ ƒ g ƒ |  j  t | t t d ƒ ƒ ƒ ƒ t t d ƒ ƒ d g g ƒ |  j  t | t t d ƒ ƒ ƒ ƒ t t d ƒ ƒ t t d d ƒ ƒ g ƒ |  j  t | t t d ƒ ƒ ƒ ƒ d	 d
 „  t d ƒ Dƒ ƒ d  S)Nc             S   s   t  j j |  d ƒ S)Néd   )Úpsycopg2ÚextrasZ	_paginate)Úseq© r   úY/var/www/dbchiro/venv/lib/python3.4/site-packages/psycopg2/tests/test_fast_executemany.pyÚpag   s    z'TestPaginate.test_paginate.<locals>.pagr   éc   r   ée   éÈ   iè  c             S   s1   g  |  ]' } t  t | d  | d d  ƒ ƒ ‘ q S)r   r   )ÚlistÚrange)Ú.0Úir   r   r   ú
<listcomp>)   s   	 z.TestPaginate.test_paginate.<locals>.<listcomp>é
   )ÚassertEqualr   r   )Úselfr   r   r   r   Útest_paginate   s    %77=CzTestPaginate.test_paginateN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s   r   c                   s"   e  Z d  Z ‡  f d d †  Z ‡  S)ÚFastExecuteTestMixinc                s3   t  t |  ƒ j ƒ  |  j j ƒ  } | j d ƒ d  S)NzYcreate table testfast (
            id serial primary key, date date, val int, data text))Úsuperr   ÚsetUpÚconnÚcursorÚexecute)r   Úcur)Ú	__class__r   r   r   -   s    zFastExecuteTestMixin.setUp)r   r   r   r   r   r   )r$   r   r   ,   s   r   c               @   sj   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z e j	 d d ƒ d d „  ƒ Z
 d S)ÚTestExecuteBatchc             C   sL   |  j  j ƒ  } t j j | d g  ƒ | j d ƒ |  j | j ƒ  g  ƒ d  S)Nz.insert into testfast (id, val) values (%s, %s)z"select * from testfast order by id)r    r!   r   r	   Úexecute_batchr"   r   Úfetchall)r   r#   r   r   r   Ú
test_empty5   s    zTestExecuteBatch.test_emptyc             C   sX   |  j  j ƒ  } t j j | d t d g ƒ ƒ | j d ƒ |  j | j ƒ  d g ƒ d  S)Nz.insert into testfast (id, val) values (%s, %s)r   r   z(select id, val from testfast order by id)r   r   )r   r   )	r    r!   r   r	   r&   Úiterr"   r   r'   )r   r#   r   r   r   Útest_one=   s    zTestExecuteBatch.test_onec             C   sr   |  j  j ƒ  } t j j | d d d „  t d ƒ Dƒ ƒ | j d ƒ |  j | j ƒ  d d „  t d ƒ Dƒ ƒ d  S)Nz8insert into testfast (id, date, val) values (%s, %s, %s)c             s   s2   |  ]( } | t  d  d | d ƒ | d f Vq d S)iá  r   r   N)r   )r   r   r   r   r   ú	<genexpr>I   s    z/TestExecuteBatch.test_tuples.<locals>.<genexpr>r   z.select id, date, val from testfast order by idc             S   s3   g  |  ]) } | t  d  d | d ƒ | d f ‘ q S)iá  r   r   )r   )r   r   r   r   r   r   L   s   	 z0TestExecuteBatch.test_tuples.<locals>.<listcomp>)	r    r!   r   r	   r&   r   r"   r   r'   )r   r#   r   r   r   Útest_tuplesE   s    zTestExecuteBatch.test_tuplesc             C   sr   |  j  j ƒ  } t j j | d d d „  t d ƒ Dƒ ƒ | j d ƒ |  j | j ƒ  d d „  t d ƒ Dƒ ƒ d  S)Nz.insert into testfast (id, val) values (%s, %s)c             s   s   |  ] } | | d  f Vq d S)r   Nr   )r   r   r   r   r   r+   R   s    z-TestExecuteBatch.test_many.<locals>.<genexpr>iè  z(select id, val from testfast order by idc             S   s    g  |  ] } | | d  f ‘ q S)r   r   )r   r   r   r   r   r   T   s   	 z.TestExecuteBatch.test_many.<locals>.<listcomp>)	r    r!   r   r	   r&   r   r"   r   r'   )r   r#   r   r   r   Ú	test_manyN   s    zTestExecuteBatch.test_manyc             C   s§   |  j  j ƒ  } t j j | d d d „  t d ƒ Dƒ d d ƒ|  j t d d „  | j j	 d ƒ Dƒ ƒ d	 ƒ | j
 d
 ƒ |  j | j ƒ  d d „  t d ƒ Dƒ ƒ d  S)Nz.insert into testfast (id, val) values (%s, %s)c             s   s   |  ] } | | d  f Vq d S)r   Nr   )r   r   r   r   r   r+   Z   s    z.TestExecuteBatch.test_pages.<locals>.<genexpr>é   Ú	page_sizer   c             s   s   |  ] } | d  k Vq d S)ú;Nr   )r   Úcr   r   r   r+   ^   s    Úasciié   z(select id, val from testfast order by idc             S   s    g  |  ] } | | d  f ‘ q S)r   r   )r   r   r   r   r   r   a   s   	 z/TestExecuteBatch.test_pages.<locals>.<listcomp>)r    r!   r   r	   r&   r   r   ÚsumÚqueryÚdecoder"   r'   )r   r#   r   r   r   Ú
test_pagesV   s    /zTestExecuteBatch.test_pagesé   r   c             C   s   |  j  j ƒ  } t j t j | ƒ d } t j j | d | d g ƒ | j d ƒ |  j	 | j
 ƒ  d ƒ t j j | d d | f g ƒ | j d ƒ |  j	 | j
 ƒ  d | f ƒ t j j | d | d	 | f g ƒ | j d
 ƒ |  j	 | j
 ƒ  d	 | f ƒ d  S)Nu   â˜ƒz7insert into testfast (id, data) values (%%s, %%s) -- %sr   Úxz*select id, data from testfast where id = 1z/insert into testfast (id, data) values (%s, %s)é   z*select id, data from testfast where id = 2é   z*select id, data from testfast where id = 3)r   r9   )r   r9   )r    r!   ÚextÚregister_typeÚUNICODEr   r	   r&   r"   r   Úfetchone)r   r#   Úsnowmanr   r   r   Útest_unicodec   s$    
zTestExecuteBatch.test_unicodeN)r   r   r   r(   r*   r,   r-   r7   r   Úskip_before_postgresrA   r   r   r   r   r%   4   s   	r%   c               @   s|   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z d d „  Z	 d d „  Z
 d d „  Z d S)ÚTestExecuteValuesc             C   sL   |  j  j ƒ  } t j j | d g  ƒ | j d ƒ |  j | j ƒ  g  ƒ d  S)Nz(insert into testfast (id, val) values %sz"select * from testfast order by id)r    r!   r   r	   Úexecute_valuesr"   r   r'   )r   r#   r   r   r   r(   €   s    zTestExecuteValues.test_emptyc             C   sX   |  j  j ƒ  } t j j | d t d g ƒ ƒ | j d ƒ |  j | j ƒ  d g ƒ d  S)Nz(insert into testfast (id, val) values %sr   r   z(select id, val from testfast order by id)r   r   )r   r   )	r    r!   r   r	   rD   r)   r"   r   r'   )r   r#   r   r   r   r*   ˆ   s    zTestExecuteValues.test_onec             C   sr   |  j  j ƒ  } t j j | d d d „  t d ƒ Dƒ ƒ | j d ƒ |  j | j ƒ  d d „  t d ƒ Dƒ ƒ d  S)Nz.insert into testfast (id, date, val) values %sc             s   s2   |  ]( } | t  d  d | d ƒ | d f Vq d S)iá  r   r   N)r   )r   r   r   r   r   r+   ”   s    z0TestExecuteValues.test_tuples.<locals>.<genexpr>r   z.select id, date, val from testfast order by idc             S   s3   g  |  ]) } | t  d  d | d ƒ | d f ‘ q S)iá  r   r   )r   )r   r   r   r   r   r   —   s   	 z1TestExecuteValues.test_tuples.<locals>.<listcomp>)	r    r!   r   r	   rD   r   r"   r   r'   )r   r#   r   r   r   r,      s    zTestExecuteValues.test_tuplesc             C   sx   |  j  j ƒ  } t j j | d d d „  t d ƒ Dƒ d d ƒ| j d ƒ |  j | j ƒ  d d	 „  t d ƒ Dƒ ƒ d  S)
Nz.insert into testfast (id, date, val) values %sc          
   s   sD   |  ]: } t  d  | d t d d | d ƒ d | d d d ƒ Vq d S)	Úidr   iá  r   Úvalr   ZfooZbarN)Údictr   )r   r   r   r   r   r+      s   z/TestExecuteValues.test_dicts.<locals>.<genexpr>r   Útemplatez(%(id)s, %(date)s, %(val)s)z.select id, date, val from testfast order by idc             S   s3   g  |  ]) } | t  d  d | d ƒ | d f ‘ q S)iá  r   r   )r   )r   r   r   r   r   r   ¢   s   	 z0TestExecuteValues.test_dicts.<locals>.<listcomp>)	r    r!   r   r	   rD   r   r"   r   r'   )r   r#   r   r   r   Ú
test_dicts™   s    	zTestExecuteValues.test_dictsc             C   sr   |  j  j ƒ  } t j j | d d d „  t d ƒ Dƒ ƒ | j d ƒ |  j | j ƒ  d d „  t d ƒ Dƒ ƒ d  S)Nz(insert into testfast (id, val) values %sc             s   s   |  ] } | | d  f Vq d S)r   Nr   )r   r   r   r   r   r+   ¨   s    z.TestExecuteValues.test_many.<locals>.<genexpr>iè  z(select id, val from testfast order by idc             S   s    g  |  ] } | | d  f ‘ q S)r   r   )r   r   r   r   r   r   ª   s   	 z/TestExecuteValues.test_many.<locals>.<listcomp>)	r    r!   r   r	   rD   r   r"   r   r'   )r   r#   r   r   r   r-   ¤   s    zTestExecuteValues.test_manyc             C   s§   |  j  j ƒ  } t j j | d d d „  t d ƒ Dƒ d d ƒ|  j t d d „  | j j	 d ƒ Dƒ ƒ d	 ƒ | j
 d
 ƒ |  j | j ƒ  d d „  t d ƒ Dƒ ƒ d  S)Nz(insert into testfast (id, val) values %sc             s   s   |  ] } | | d  f Vq d S)r   Nr   )r   r   r   r   r   r+   °   s    z/TestExecuteValues.test_pages.<locals>.<genexpr>r.   r/   r   c             s   s   |  ] } | d  k Vq d S)ú(Nr   )r   r1   r   r   r   r+   ´   s    r2   é   z(select id, val from testfast order by idc             S   s    g  |  ] } | | d  f ‘ q S)r   r   )r   r   r   r   r   r   ·   s   	 z0TestExecuteValues.test_pages.<locals>.<listcomp>)r    r!   r   r	   rD   r   r   r4   r5   r6   r"   r'   )r   r#   r   r   r   r7   ¬   s    /zTestExecuteValues.test_pagesc             C   s   |  j  j ƒ  } t j t j | ƒ d } t j j | d | d g ƒ | j d ƒ |  j	 | j
 ƒ  d ƒ t j j | d d | f g ƒ | j d ƒ |  j	 | j
 ƒ  d | f ƒ t j j | d | d	 | f g ƒ | j d
 ƒ |  j	 | j
 ƒ  d	 | f ƒ d  S)Nu   â˜ƒz0insert into testfast (id, data) values %%s -- %sr   r9   z*select id, data from testfast where id = 1z)insert into testfast (id, data) values %sr:   z*select id, data from testfast where id = 2r;   z*select id, data from testfast where id = 3)r   r9   )r   r9   )r    r!   r<   r=   r>   r   r	   rD   r"   r   r?   )r   r#   r@   r   r   r   rA   ¹   s$    
zTestExecuteValues.test_unicodec             C   s   |  j  j ƒ  } |  j t t j j | d g  ƒ |  j t t j j | d g  ƒ |  j t t j j | d g  ƒ |  j t t j j | d g  ƒ d  S)NÚinsertzinsert %s and %sz	insert %fzinsert %f %s)r    r!   ÚassertRaisesÚ
ValueErrorr   r	   rD   )r   r#   r   r   r   Útest_invalid_sqlÓ   s    


z"TestExecuteValues.test_invalid_sqlc             C   s~   |  j  j ƒ  } t j j | d d g ƒ |  j d | j k ƒ |  j d | j k ƒ | j d ƒ |  j | j	 ƒ  d g ƒ d  S)	Nz1insert into testfast (id, data) values %s -- a%%br   Úhis   a%%bs   a%bzselect id, data from testfast)r   úhi)r   rQ   )
r    r!   r   r	   rD   Ú
assertTruer5   r"   r   r'   )r   r#   r   r   r   Útest_percent_escapeÞ   s    
z%TestExecuteValues.test_percent_escapeN)r   r   r   r(   r*   r,   rI   r-   r7   rA   rO   rS   r   r   r   r   rC      s   	rC   r8   r:   c               C   s   t  j ƒ  j t ƒ S)N)r   Z
TestLoaderZloadTestsFromNamer   r   r   r   r   Ú
test_suiteî   s    rT   Ú__main__)Údatetimer   Ú r   r   r   Zpsycopg2.extrasZpsycopg2.extensionsÚ
extensionsr<   ZTestCaser   Úobjectr   ZConnectingTestCaser%   rC   Zdecorate_all_testsrB   rT   r   Úmainr   r   r   r   Ú<module>   s   Kk	