Ñò
ïžòKc           @   sk   d  d k  Z  d  d k Z d  d k Z d e i f d „  ƒ  YZ d „  Z d „  Z e d j o e ƒ  n d S(   iÿÿÿÿNt   RegressionTestsc           B   s�   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  i d ƒ |  _ d  S(   Ns   :memory:(   t   sqlitet   connectt   con(   t   self(    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   setUp   s    c         C   s   |  i  i ƒ  d  S(   N(   R   t   close(   R   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   tearDown    s    c         C   s    |  i  i ƒ  } | i d ƒ d  S(   Ns   pragma user_version(   R   t   cursort   execute(   R   t   cur(    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckPragmaUserVersion#   s    c         C   sT   t  i d d t  i ƒ} z  |  i i ƒ  } | i d ƒ Wd  | i ƒ  | i ƒ  Xd  S(   Ns   :memory:t   detect_typess   pragma schema_version(   R   R   t   PARSE_COLNAMESR   R   R	   R   (   R   R   R
   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckPragmaSchemaVersion(   s    
c      	   C   sà   t  i d d d ƒ} g  } t d ƒ D] } | | i ƒ  q& ~ } | d i d ƒ xL t d ƒ D]> } | d i d g  } t d ƒ D] } | | f q„ ~ ƒ q` Wx- t d ƒ D] } | | i d | d	 ƒ q¯ W| i ƒ  d  S(
   Ns   :memory:t   cached_statementsi   i    s   create table test(x)i
   s   insert into test(x) values (?)t    s   select x from test(   R   R   t   xrangeR   R	   t   ranget   executemanyt   rollback(   R   R   t   _[1]t   xt   cursorst   it   _[2](    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckStatementReset2   s    - < c         C   sc   |  i  i ƒ  } | i d ƒ |  i | i d d d ƒ | i d ƒ |  i | i d d d ƒ d  S(   Ns    select 1 as "foo bar [datetime]"i    s   foo bars   select 1 as "foo baz"s   foo baz(   R   R   R	   t   failUnlessEqualt   description(   R   R
   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckColumnNameWithSpacesA   s
    c         C   sS   t  i d d t  i ƒ} | i ƒ  } | i d ƒ | i ƒ  | i ƒ  | i ƒ  d  S(   Ns   :memory:R   s   select 4 union select 5(   R   R   t   PARSE_DECLTYPESR   R	   R   t   fetchone(   R   R   R
   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckStatementAvailableI   s    

c         C   sj   t  i d ƒ } g  } xD t d ƒ D]6 } | i ƒ  } | i | ƒ | i d t | ƒ ƒ q" W| i ƒ  d  S(   Ns   :memory:ii   s   select 1 x union select (   R   R   R   R   t   appendR	   t   strR   (   R   R   R   R   R
   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt#   CheckStatementFinalizationOnCloseDbS   s     c         C   s­   t  i d j  o d  St  i d ƒ } | i d ƒ | i d ƒ y | i d ƒ Wn t  i j
 o n X| i d ƒ y | i ƒ  Wn# t  i j
 o |  i d ƒ n Xd  S(	   Ni   i   s   :memory:s3   create table foo(x, unique(x) on conflict rollback)s   insert into foo(x) values (1)s   insert into foo(x) values (2)s1   pysqlite knew nothing about the implicit ROLLBACK(   i   i   i   (   R   t   sqlite_version_infoR   R	   t   DatabaseErrort   committ   OperationalErrort   fail(   R   R   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckOnConflictRollbacka   s    c         C   s4   |  i  i d ƒ |  i  i d ƒ |  i  i d ƒ d S(   sm   
        pysqlite would crash with older SQLite versions unless
        a workaround is implemented.
        s   create table foo(bar)s   drop table fooN(   R   R	   (   R   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt-   CheckWorkaroundForBuggySqliteTransferBindingsq   s    c         C   s   |  i  i d ƒ d S(   s   
        pysqlite used to segfault with SQLite versions 3.5.x. These return NULL
        for "no-operation" statements
        t    N(   R   R	   (   R   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckEmptyStatementz   s    c         C   s   t  i d ƒ } | i ƒ  d S(   s	  
        With pysqlite 2.4.0 you needed to use a string or a APSW connection
        object for opening database connections.

        Formerly, both bytestrings and unicode strings used to work.

        Let's make sure unicode strings work in the future.
        u   :memory:N(   R   R   R   (   R   R   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckUnicodeConnect�   s    	c         C   sŒ   d } t  i d d t  i ƒ} | i d ƒ | i d t i i ƒ  f ƒ | i | ƒ | i d ƒ | i d ƒ | i d ƒ | i | ƒ d	 S(
   s�   
        pysqlite until 2.4.1 did not rebuild the row_cast_map when recompiling
        a statement. This test exhibits the problem.
        s   select * from foos   :memory:R   s   create table foo(bar timestamp)s   insert into foo(bar) values (?)s   drop table foos   create table foo(bar integer)s   insert into foo(bar) values (5)N(   R   R   R   R	   t   datetimet   now(   R   t   SELECTR   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckTypeMapUsage�   s    c         C   s   |  i  t t i h  d ƒ d S(   s!   
        See issue 3312.
        N(   t   assertRaisest	   TypeErrorR   t   register_adaptert   None(   R   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckRegisterAdapterœ   s    c         C   s,   t  i d ƒ } |  i t t | d d ƒ d S(   s!   
        See issue 3312.
        s   :memory:t   isolation_levelu   Ã©N(   R   R   R2   t   UnicodeEncodeErrort   setattr(   R   R   (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   CheckSetIsolationLevel¢   s    (   t   __name__t
   __module__R   R   R   R   R   R   R    R#   R)   R*   R,   R-   R1   R6   R:   (    (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyR       s   				
			
								c          C   s"   t  i t d ƒ }  t  i |  f ƒ S(   Nt   Check(   t   unittestt	   makeSuiteR    t	   TestSuite(   t   regression_suite(    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   suite«   s    c          C   s    t  i ƒ  }  |  i t ƒ  ƒ d  S(   N(   R>   t   TextTestRunnert   runRB   (   t   runner(    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   test¯   s    t   __main__(	   R.   R>   t   sqlite3R   t   TestCaseR    RB   RF   R;   (    (    (    s-   scripts/common/Lib/sqlite3/test/regression.pyt   <module>   s   �		