ó
¿b›]c           @   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 d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d S(   i   (   t   assert_raises(   t   config(   t   eq_(   t   fixtures(   t   provide_metadata(   t   requirements(   t   Column(   t   Tablei   (   t   exc(   t   Integer(   t   literal_column(   t   select(   t   String(   t   compatt   ExceptionTestc           B   sD   e  Z d  Z d Z e Z e d „  ƒ Z e j	 d „  ƒ Z
 d „  Z RS(   s¶   Test basic exception wrapping.

    DBAPIs vary a lot in exception behavior so to actually anticipate
    specific exceptions from real round trips, we need to be conservative.

    t   eachc      
   C   s;   t  d | t d t d t d t ƒt d t d ƒ ƒ ƒ d  S(   Nt	   manual_pkt   idt   primary_keyt   autoincrementt   datai2   (   R   R   R	   t   Truet   FalseR   (   t   clst   metadata(    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt   define_tables   s
    c         C   s   t  j j ƒ  z } | j ƒ  } | j |  j j j ƒ  i d d 6d d 6ƒ t t	 j
 | j |  j j j ƒ  i d d 6d d 6ƒ | j ƒ  Wd  QXd  S(   Ni   R   t   d1R   (   R   t   dbt   connectt   begint   executet   tablesR   t   insertR    R   t   IntegrityErrort   rollback(   t   selft   connt   trans(    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt   test_integrity_error(   s    $c      	   C   sÄ   t  j j ƒ  ¯ } y, | j t t d ƒ g ƒ ƒ t s= t ‚ WnC t j	 k
 rƒ } t
 | ƒ } t
 | j ƒ t
 | ƒ k s„ t ‚ n Xt j r¥ t | t
 ƒ sº t ‚ n t | t
 ƒ sº t ‚ Wd  QXd  S(   Nu   mÃ©il(   R   R   R   R   R   R
   R   t   AssertionErrorR   t
   DBAPIErrort   strt   origR   t   py2kt
   isinstance(   R#   R$   t   errt   err_str(    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt   test_exception_with_non_ascii;   s    %	(   t   __name__t
   __module__t   __doc__t   run_deletesR   t   __backend__t   classmethodR   R   t$   duplicate_key_raises_integrity_errorR&   R/   (    (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyR      s   	t   AutocommitTestc           B   sD   e  Z d  Z d Z e Z e d „  ƒ Z d „  Z d „  Z	 d „  Z
 RS(   R   t
   autocommitc      
   C   sA   t  d | t d t d t d t ƒt d t d ƒ ƒ d t ƒd  S(   Nt
   some_tableR   R   R   R   i2   t   test_needs_acid(   R   R   R	   R   R   R   (   R   R   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyR   Z   s    c         C   s”   | j  ƒ  } | j |  j j j ƒ  i d d 6d d 6ƒ | j ƒ  t | j t |  j j j	 j
 g ƒ ƒ | rp d n d  ƒ | j |  j j j ƒ  ƒ d  S(   Ni   R   s	   some dataR   (   R   R   R   R9   R    R"   R   t   scalarR   t   cR   t   Nonet   delete(   R#   R$   R8   R%   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt   _test_conn_autocommitsd   s    $
!c         C   sO   t  j j ƒ  } | j d d ƒ } |  j | t ƒ | j ƒ  |  j | t ƒ d  S(   Nt   isolation_levelt
   AUTOCOMMIT(   R   R   R   t   execution_optionsR?   R   t
   invalidateR   (   R#   R$   t   c2(    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt   test_autocommit_onr   s
    
c         C   s#   t  j j ƒ  } |  j | t ƒ d  S(   N(   R   R   R   R?   R   (   R#   R$   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt   test_autocommit_offy   s    (   R8   (   R0   R1   R3   t   __requires__R   R4   R5   R   R?   RE   RF   (    (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyR7   R   s   
		t   EscapingTestc           B   s   e  Z e d  „  ƒ Z RS(   c      
   C   s  |  j  } t d | t d t d ƒ ƒ ƒ } | j t j ƒ t j j ƒ  Å } | j | j	 ƒ  t
 d d ƒ ƒ | j | j	 ƒ  t
 d d ƒ ƒ t | j t | j j g ƒ j | j j t d ƒ k ƒ ƒ d ƒ t | j t | j j g ƒ j | j j t d ƒ k ƒ ƒ d ƒ Wd QXd S(	   s|   test that the DBAPI accommodates for escaped / nonescaped
        percent signs in a way that matches the compiler

        t   tR   i2   s   some % values   some %% other values   'some % value's   'some %% other value'N(   R   R   R   R   t   createR   R   R   R   R    t   dictR   R;   R   R<   R   t   whereR
   (   R#   t   mRI   R$   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt   test_percent_sign_round_trip   s     	!(   R0   R1   R   RN   (    (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyRH   ~   s   N(   t    R    R   R   R   R   R   t   schemaR   R   R   R	   R
   R   R   t   utilR   t
   TablesTestR   R7   t   TestBaseRH   (    (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt   <module>   s    ?,