ó
¿b›]c           @   sQ  d  d l  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
 d l m Z d
 d l m Z d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j e j f d „  ƒ  YZ d S(   iÿÿÿÿNi   (   t   config(   t   engines(   t   fixtures(   t   eq_(   t   requirements(   t   Column(   t   Tablei   (   t   DateTime(   t   func(   t   Integer(   t   select(   t   sql(   t   String(   t   testing(   t   textt   RowFetchTestc           B   sb   e  Z e Z e d  „  ƒ Z e d „  ƒ Z d „  Z d „  Z d „  Z	 e
 j d „  ƒ Z d „  Z RS(   c         C   s`   t  d | t d t d t ƒt d t d ƒ ƒ ƒ t  d | t d t d t ƒt d t ƒ ƒ d  S(   Nt   plain_pkt   idt   primary_keyt   datai2   t	   has_datest   today(   R   R   R	   t   TrueR   R   (   t   clst   metadata(    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   define_tables   s    c      
   C   sž   t  j j |  j j j ƒ  i d d 6d d 6i d d 6d d 6i d d 6d d 6g ƒ t  j j |  j j j ƒ  i d d 6t j d	 d
 d d d d ƒ d 6g ƒ d  S(   Ni   R   t   d1R   i   t   d2i   t   d3iÖ  i   i   i    R   (   R    t   dbt   executet   tablesR   t   insertR   t   datetime(   R   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   insert_data&   s    		c         C   s_   t  j j |  j j j ƒ  j |  j j j j ƒ ƒ j	 ƒ  } t
 | d d ƒ t
 | d d ƒ d  S(   NR   i   R   R   (   R    R   R   R   R   R
   t   order_byt   cR   t   firstR   (   t   selft   row(    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_via_string6   s    	0c         C   s_   t  j j |  j j j ƒ  j |  j j j j ƒ ƒ j	 ƒ  } t
 | d d ƒ t
 | d d ƒ d  S(   Ni    i   R   (   R    R   R   R   R   R
   R#   R$   R   R%   R   (   R&   R'   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_via_int>   s    	0c         C   sw   t  j j |  j j j ƒ  j |  j j j j ƒ ƒ j	 ƒ  } t
 | |  j j j j d ƒ t
 | |  j j j j d ƒ d  S(   Ni   R   (   R    R   R   R   R   R
   R#   R$   R   R%   R   R   (   R&   R'   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_via_col_objectF   s    	0c         C   sŠ   t  j j t |  j j j j |  j j j j j d ƒ g ƒ j	 |  j j j j
 ƒ ƒ } | j ƒ  } t | j ƒ  d d g ƒ t | d ƒ d  S(   NR   R   (   R   R   (   R    R   R   R
   R   R   R$   R   t   labelR#   R   R%   R   t   keys(   R&   t   resultR'   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_row_with_dupe_namesN   s    	!c      	   C   s–   |  j  j } t | j d ƒ j j g ƒ j ƒ  } t | j j | j d ƒ g ƒ } t	 j
 j | ƒ j ƒ  } t | d t j d d d d d d ƒ ƒ d S(   sý   test that a scalar select as a column is returned as such
        and that type conversion works OK.

        (this is half a SQLAlchemy Core test and half to catch database
        backends that may have unusual behavior with scalar selects.)

        t   xt	   somelabeliÖ  i   i   i    N(   R   R   R
   t   aliasR$   R   t	   as_scalarR   R+   R    R   R   R%   R   R!   (   R&   t	   datetablet   st   s2R'   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_row_w_scalar_select\   s
    $!(   t   __name__t
   __module__R   t   __backend__t   classmethodR   R"   R(   R)   R*   R   t%   duplicate_names_in_cursor_descriptionR.   R6   (    (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyR      s   			t   PercentSchemaNamesTestc           B   sD   e  Z d  Z d Z e Z e d „  ƒ Z d „  Z d „  Z	 d „  Z
 RS(   sÜ   tests using percent signs, spaces in table and column names.

    This is a very fringe use case, doesn't work for MySQL
    or PostgreSQL.  the requirement, "percent_schema_names",
    is marked "skip" by default.

    t   percent_schema_namesc         C   s^   t  d | t d t ƒ t d t ƒ ƒ |  j _ t j d t j d ƒ t j d ƒ ƒ |  j _ d  S(   Ns   percent%tables   percent%s   spaces % more spaces(	   R   R   R	   R   t   percent_tableR   t   tablet   columnt   lightweight_percent_table(   R   R   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyR   y   s    c         C   sˆ   |  j  j } xk i d d 6d d 6i d d 6d d 6i d d 6d d 6i d d 6d d 6g D] } t j j | j ƒ  | ƒ qW W|  j ƒ  d  S(	   Ni   s   percent%i   s   spaces % more spacesi   i   i	   i
   (   R   R>   R    R   R   R    t   _assert_table(   R&   R>   t   params(    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_single_roundtrip‡   s    c         C   s   |  j  j } t j j | j ƒ  i d d 6d d 6ƒ t j j | j ƒ  i d d 6d d 6i d d 6d d 6i d d 6d d 6g ƒ |  j ƒ  d  S(	   Ni   s   percent%i   s   spaces % more spacesi   i   i	   i
   (   R   R>   R    R   R   R    RB   (   R&   R>   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_executemany_roundtrip’   s    			c         C   sÎ  |  j  j } |  j  j } xA| | j ƒ  | | j ƒ  f D]!} t t t j j | j	 ƒ  j
 | j d ƒ ƒ ƒ d
 d d d g ƒ t t t j j | j	 ƒ  j | j d j d d g ƒ ƒ j
 | j d ƒ ƒ ƒ d d g ƒ t j j | j	 ƒ  j
 | j d ƒ ƒ j ƒ  } t | d d ƒ t | d d ƒ t | | j d d ƒ t | | j d d ƒ q7 Wt j j | j ƒ  j i d	 | j d 6ƒ ƒ t t t j j | j	 ƒ  j
 | j d ƒ ƒ ƒ d d d d g ƒ d  S(   Ns   percent%i   i   i   i   i	   i
   s   spaces % more spacesi   (   i   i   (   i   i   (   i	   i
   (   i   i	   (   i	   i
   (   i   i	   (   i   i   (   i   i   (   i	   i   (   i   i   (   R   R>   RA   R1   R   t   listR    R   R   R
   R#   R$   t   wheret   in_R%   t   updatet   values(   R&   R>   RA   R?   R'   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyRB   ¡   sD    				%		(   R=   (   R7   R8   t   __doc__t   __requires__R   R9   R:   R   RD   RE   RB   (    (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyR<   l   s   		t   ServerSideCursorsTestc           B   s¶   e  Z d Z 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 d „  Z e j d „  ƒ Z RS(   t   server_side_cursorsc         C   sŒ   |  j  j j d k r | j S|  j  j j d k rP t d ƒ j j } t | | ƒ S|  j  j j d k r„ t d ƒ j j } t | | ƒ St Sd  S(   Nt   psycopg2t   pymysqls   pymysql.cursorst   mysqldbs   MySQLdb.cursors(	   t   enginet   dialectt   drivert   namet
   __import__t   cursorst   SSCursort
   isinstancet   False(   R&   t   cursort   sscursor(    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   _is_server_sideâ   s    c         C   s#   t  j d i | d 6ƒ |  _ |  j S(   Nt   optionsRN   (   R   t   testing_engineRR   (   R&   RN   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   _fixtureî   s    	c         C   s   t  j j ƒ  |  j j ƒ  d  S(   N(   R   t   testing_reapert	   close_allRR   t   dispose(   R&   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   tearDownô   s    c         C   s:   |  j  t ƒ } | j d ƒ } |  j | j ƒ s6 t ‚ d  S(   Ns   select 1(   R`   R   R   R]   R[   t   AssertionError(   R&   RR   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_global_stringø   s    c         C   s@   |  j  t ƒ } | j t d ƒ ƒ } |  j | j ƒ s< t ‚ d  S(   Ns   select 1(   R`   R   R   R   R]   R[   Re   (   R&   RR   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_global_textý   s    c         C   sC   |  j  t ƒ } | j t d g ƒ ƒ } |  j | j ƒ s? t ‚ d  S(   Ni   (   R`   R   R   R
   R]   R[   Re   (   R&   RR   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_global_expr  s    c         C   sA   |  j  t ƒ } | j t d ƒ ƒ } |  j | j ƒ s= t ‚ d  S(   Ns   select 1(   R`   RZ   R   R   R]   R[   Re   (   R&   RR   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_global_off_explicit  s    c         C   sU   |  j  t ƒ } t d g ƒ j d t ƒ } | j | ƒ } |  j | j ƒ sQ t ‚ d  S(   Ni   t   stream_results(	   R`   RZ   R
   t   execution_optionsR   R   R]   R[   Re   (   R&   RR   R4   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_stmt_option  s    c         C   sL   |  j  t ƒ } | j ƒ  j d t ƒ j d ƒ } |  j | j ƒ sH t ‚ d  S(   NRj   s   select 1(	   R`   RZ   t   connectRk   R   R   R]   R[   Re   (   R&   RR   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_conn_option  s
    		c         C   sh   |  j  t ƒ } t d g ƒ j d t ƒ } | j ƒ  j d t ƒ j | ƒ } |  j | j ƒ sd t	 ‚ d  S(   Ni   Rj   (
   R`   RZ   R
   Rk   R   Rm   R   R]   R[   Re   (   R&   RR   R4   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt&   test_stmt_enabled_conn_option_disabled$  s    !c         C   sV   |  j  t ƒ } t d g ƒ j d t ƒ } | j | ƒ } |  j | j ƒ sR t ‚ d  S(   Ni   Rj   (	   R`   R   R
   Rk   RZ   R   R]   R[   Re   (   R&   RR   R4   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_stmt_option_disabled/  s    c         C   s˜   |  j  t ƒ } t d g ƒ j d t ƒ j ƒ  } | j | ƒ } |  j | j ƒ sW t	 ‚ t d g d | ƒ} | j | ƒ } |  j | j ƒ s” t	 ‚ d  S(   Ni   Rj   t   from_obj(
   R`   RZ   R
   Rk   R   R1   R   R]   R[   Re   (   R&   RR   t   s1R-   R5   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_aliases_and_ss5  s    !c         C   sO   |  j  t ƒ } t d g ƒ j ƒ  } | j | ƒ } |  j | j ƒ sK t ‚ d  S(   Ni   (   R`   R   R
   t   with_for_updateR   R]   R[   Re   (   R&   RR   Rr   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_for_update_exprA  s    c         C   s:   |  j  t ƒ } | j d ƒ } |  j | j ƒ s6 t ‚ d  S(   Ns   SELECT 1 FOR UPDATE(   R`   R   R   R]   R[   Re   (   R&   RR   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_for_update_stringG  s    c         C   sG   |  j  t ƒ } t d ƒ } | j | ƒ } |  j | j ƒ sC t ‚ d  S(   Ns	   select 42(   R`   RZ   R   R   R]   R[   Re   (   R&   RR   R4   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_text_no_ssL  s    c         C   sR   |  j  t ƒ } t d ƒ j d t ƒ } | j | ƒ } |  j | j ƒ sN t ‚ d  S(   Ns	   select 42Rj   (	   R`   RZ   R   Rk   R   R   R]   R[   Re   (   R&   RR   R4   R-   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_text_ss_optionR  s    c         C   sj  |  j  } |  j t ƒ t d | t d t d t ƒt d t d ƒ ƒ ƒ } | j d t ƒ | j ƒ  j	 d d ƒ | j ƒ  j	 d d ƒ t
 | j ƒ  j | j j ƒ j	 ƒ  j ƒ  d d g ƒ | j ƒ  j | j j d
 k ƒ j d | j j d ƒ j	 ƒ  t
 | j ƒ  j | j j ƒ j	 ƒ  j ƒ  d d g ƒ | j ƒ  j	 ƒ  t
 t t j d ƒ g ƒ j | ƒ j ƒ  d ƒ d  S(   Nt
   test_tableR   R   R   i2   t
   checkfirstt   data1t   data2i   i   s    updateds   data2 updatedt   *i    (   i   R{   (   i   R|   (   i   R{   (   i   s   data2 updated(   R   R`   R   R   R   R	   R   t   createR    R   R   R
   R#   R$   R   t   fetchallRI   RG   RJ   R   t   deleteR   t   countt   select_fromt   scalar(   R&   t   mdRy   (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   test_roundtripX  s(    	$$$(   RN   (   R7   R8   RL   R   R9   R]   R`   Rd   Rf   Rg   Rh   Ri   Rl   Rn   Ro   Rp   Rs   Ru   Rv   Rw   Rx   R   t   provide_metadataR…   (    (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyRM   Ú   s&   								
								(   R!   t    R    R   R   t
   assertionsR   R   t   schemaR   R   R   R   R	   R
   R   R   R   R   t
   TablesTestR   R<   t   TestBaset   AssertsExecutionResultsRM   (    (    (    sD   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt   <module>   s&   Xn