
    r@;j!                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	  G d dej
                  Zedk    r ej                     dS dS )    N)	constants)EnsureDispatchc                   ~    e Zd Zd Zd ZddZd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S )	TestStuffc                    d| _         d | _        d x| _        | _        	 t          j        d         }n# t          $ r t          j                    j	        dz   | _        dD ]+}	 t          d|z             } n)# t          j        $ r Y (w xY wt          j        d          |                    d          }|                    | j        t"          j        t"          j                  }|                                 d                    | j                  }Y nw xY wt-          j        |          | _        | j                                        | _        	 | j                            d	| j         z             n!# t,          j        t,          j        f$ r Y nw xY w|                     | j                            d
| j         z            d           d S )Npywin32test_usersTEST_ODBC_CONNECTION_STRINGz.mdb)z.36z.35z.30zDAO.DBEnginezCan't find a DB enginer   z<Driver={{Microsoft Access Driver (*.mdb)}};dbq={};Uid=;Pwd=;drop table %sa  create table %s (
                    userid varchar(25),
                    username varchar(25),
                    bitfield bit,
                    intfield integer,
                    floatfield float,
                    datefield datetime,
                    rawfield varbinary(100),
                    longtextfield memo,
                    longbinaryfield image
            ))	tablenamedb_filenameconncurosenvironKeyErrortempfileNamedTemporaryFilenamer   	pythoncom	com_errorunittestSkipTest
WorkspacesCreateDatabaser   dbLangGeneral	dbEncryptCloseformatodbccursorexecuteerror	progErrorassertEqual)selfconn_strsuffixdbe	workspacenewdbs         bC:\Users\Administrator\AppData\Local\Temp\2\pip-target-b0z114gj\lib\python\win32/test/test_odbc.pysetUpzTestStuff.setUp   s   ,##	DH	z"?@HH 	 	 	':<<AFJD 0 B B(&)@AACE *   D '(@AAAq))I,, )"99;N E KKMMM OUU$  HH-	8 Ih''	9##%%	H04>ABBBB
DN+ 	 	 	D	 	H
 .!  	
 	
 	
 	
 	
sF   1 .D A42D4BDBB
DD"E1 1FFc                    | j         	 | j                             d| j        z             n@# t          j        t          j        f$ r"}t          d| j        z  |           Y d }~nd }~ww xY w| j                                          d | _         | j         | j                                         d | _        | j	        -	 t          j        | j	                   d S # t          $ r Y d S w xY wd S )Nr
   zFailed to delete test table %s)r   r"   r   r    r#   r$   printcloser   r   r   unlinkOSError)r&   whys     r,   tearDownzTestStuff.tearDownQ   s   8N  !4t~!EFFFFJ/ N N N6GMMMMMMMMN HNNDH9 IOODI'	$*+++++    ('s'   ", A)A$$A);C 
C$#C$FrankFrank Millmanc                    |                      | j                            d| j        z  ||g          d           |                      | j                            d| j        z  |                                g          d           |                      | j                            d| j        z  |                                g          d           d S )Nz:insert into %s (userid, username)             values (?,?)   -select * from %s             where userid = ?r   /select * from %s             where username = ?r%   r   r"   r   lowerr&   useridusernames      r,   test_insert_selectzTestStuff.test_insert_selectc       H.! "	  	
 	
 	
 	H.!  	  	
 	
 	
 	H .! !!"	  	
 	
 	
 	
 	
    c                    |                      | j                            d| j        z  ||g          d           |                      | j                            d| j        z  |                                g          d           |                      | j                            d| j        z  |                                g          d           d S )Nz9insert into %s (userid, username)            values (?,?)r8   r9   r   r:   r;   r=   s      r,   test_insert_select_unicodez$TestStuff.test_insert_select_unicode   rA   rB   c                 :    d}d}|                      ||           d S )Nu   t-àòu   test-àò name)rD   r=   s      r,   test_insert_select_unicode_extz(TestStuff.test_insert_select_unicode_ext   s(    '''99999rB   c           
         t          d          D ]}| j                            d| j        z             |                     | j                            d| j         d| dd|g          d           | j                            d| d	| j         d
dg           | j                                        }|                     dt          |                     |d         }|                     |d         |           d S )Nd   z#delete from %s where userid='Frank'zinsert into z
 (userid, z) values (?,?)r5   r8   zselect z from z where userid = ?r   )ranger   r"   r   r%   	fetchmanylen)r&   	fieldNamevaluexrowsrows         r,   	_test_valzTestStuff._test_val   s!   s 	, 	,AHBT^STTT  V4>VVYVVVe$     HL)LL4>LLL	   8%%''DQD		***q'CSVU++++!	, 	,rB   c                 ^    |                      dd           |                      dd           d S )Nbitfieldr8   r   rQ   r&   s    r,   testBitzTestStuff.testBit   s0    z1%%%z1%%%%%rB   c                     |                      dd           |                      dd           |                      dt          j                   d S )Nintfieldr8   r   )rQ   sysmaxsizerU   s    r,   testIntzTestStuff.testInt   sF    z1%%%z1%%%z3;/////rB   c                 ^    |                      dd           |                      dd           d S )N
floatfieldg)\(?r   rT   rU   s    r,   	testFloatzTestStuff.testFloat   s0    |T***|Q'''''rB   c                 2    |                      dd           d S )Nr?   foorT   rU   s    r,   testVarcharzTestStuff.testVarchar   s     	z5)))))rB   c                 8    |                      dddz             dS )zETest a long text field in excess of internal cursor data size (65536)longtextfieldabcp NrT   rU   s    r,   testLongVarcharzTestStuff.testLongVarchar   s     66666rB   c                 R    |                      dt          ddz                       dS )zDTest a long raw field in excess of internal cursor data size (65536)longbinaryfields    re   NrQ   
memoryviewrU   s    r,   testLongBinaryzTestStuff.testLongBinary   s*    (*Y5F*G*GHHHHHrB   c                 L    |                      dt          d                     d S )Nrawfields    ri   rU   s    r,   testRawzTestStuff.testRaw   s%    z:.A#B#BCCCCCrB   c                 2    |                      dd           dS )zTest a unicode character that would be mangled if bound as plain character.
        For example, previously the below was returned as ascii 'a'
        r?   u   āNrT   rU   s    r,   test_widecharzTestStuff.test_widechar   s     	z8,,,,,rB   c                 X    dd l }dD ]"} |j         | }|                     d|           #d S )Nr   ))il           '   ;   	datefield)datetimerQ   )r&   rx   vds       r,   	testDateszTestStuff.testDates   sJ    . 	+ 	+A!!1%ANN;****	+ 	+rB   c                    |                      | j                            d| j        z  ddg          d           |                      | j                            d| j        z  dg          d           |                      | j                            d| j        z            d           |                      t	          | j                                        d                   d           d S )	N-insert into %s (userid,username) values (?,?)r5   r6   r8   zupdate %s set username = ?select * from %sr      r%   r   r"   r   rK   fetchonerU   s    r,   test_set_nonzero_lengthz!TestStuff.test_set_nonzero_length   s    H?$.P/*  	
 	
 	
 	H9DNJWIVV	
 	
 	
 	))*<t~*MNNPQRRRTX..00344a88888rB   c                 d   |                      | j                            d| j        z  ddg          d           |                      | j                            d| j        z            d           |                      t	          | j                                        d                   d           d S )Nr}   s   Frank r8   r~   r   r   rU   s    r,   test_set_zero_lengthzTestStuff.test_set_zero_length   s    H?$.P2  	
 	
 	
 	))*<t~*MNNPQRRRTX..00344a88888rB   c                 d   |                      | j                            d| j        z  ddg          d           |                      | j                            d| j        z            d           |                      t	          | j                                        d                   d           d S )Nr}   r5   r   r8   r~   r   r   rU   s    r,   test_set_zero_length_unicodez&TestStuff.test_set_zero_length_unicode   s    H?$.P"  	
 	
 	
 	))*<t~*MNNPQRRRTX..00344a88888rB   N)r5   r6   )__name__
__module____qualname__r-   r4   r@   rD   rF   rQ   rV   r[   r^   ra   rf   rk   rn   rp   r{   r   r   r    rB   r,   r   r      s3       ?
 ?
 ?
B  $
 
 
 
:
 
 
 
:: : :
, , ,&& & &0 0 0
( ( (* * *
7 7 7I I ID D D- - -+ + +9 9 9	9 	9 	9	9 	9 	9 	9 	9rB   r   __main__)r   rY   r   r   r    r   win32com.clientr   win32com.client.gencacher   TestCaser   r   mainr   rB   r,   <module>r      s    				 



        % % % % % % 4 3 3 3 3 3t9 t9 t9 t9 t9! t9 t9 t9n zHMOOOOO rB   