a „oe!ã@s‚ddlZddlZddlZddlZddlZddlZddlmZmZm Z ddl m Z ddl m Z Gdd„dejƒZedkr~e ¡dS)éN)Ú TestSkippedÚ str2bytesÚ str2memory)Ú constants)ÚEnsureDispatchc@s eZdZdd„Zdd„Zd(dd„Zd)d d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'S)*Ú TestStuffc Cs$d|_d|_d|_|_ztjd}Wn’ty¸t ¡j d|_dD]0}zt d|ƒ}Wq‚WqHt j yvYqH0qHt dƒ‚| d¡}| |jtjtj¡}| ¡d|jf}Yn0t |¡|_|j ¡|_z|j d |j¡Wntjtjf�yYn0| |j d |j¡d ¡dS) NZpywin32test_usersZTEST_ODBC_CONNECTION_STRINGz.mdb)z.36z.35z.30z DAO.DBEnginezCan't find a DB enginerz:Driver={Microsoft Access Driver (*.mdb)};dbq=%s;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ÚtempfileZNamedTemporaryFileÚnamerÚ pythoncomZ com_errorrZ WorkspacesZCreateDatabaserZ dbLangGeneralZ dbEncryptÚCloseÚodbcZcursorÚexecuteÚerrorÚ progErrorÚ assertEqual)ÚselfZconn_strÚsuffixZdbeZ workspaceZnewdb©rú5C:\Program Files\Certbot\pkgs\win32\test\test_odbc.pyÚsetUpsH      ÿÿ    õÿñzTestStuff.setUpc Csº|jdurnz|j d|j¡Wn<tjtjfy\}ztd|j|ƒWYd}~n d}~00|j ¡d|_|jdurˆ|j ¡d|_|j dur¶zt   |j ¡Wnt y´Yn0dS)NrzFailed to delete test table %s) r rr rrrÚprintÚcloser r rÚunlinkÚOSError)rÚwhyrrrÚtearDownPs &     zTestStuff.tearDownÚFrankú Frank MillmancCsh| |j d|j||g¡d¡| |j d|j| ¡g¡d¡| |j d|j| ¡g¡d¡dS)Nz:insert into %s (userid, username) values (?,?)éú-select * from %s where userid = ?rú/select * from %s where username = ?©rr rr Úlower©rZuseridÚusernamerrrÚtest_insert_selectbs6þüù þüù þüùzTestStuff.test_insert_selectcCsh| |j d|j||g¡d¡| |j d|j| ¡g¡d¡| |j d|j| ¡g¡d¡dS)Nz9insert into %s (userid, username) values (?,?)r'r(rr)r*r,rrrÚtest_insert_select_unicodes6þüù þüù þüùz$TestStuff.test_insert_select_unicodecCsd}d}| ||¡dS)Nut-àòutest-àò name)r/r,rrrÚtest_insert_select_unicode_extœsz(TestStuff.test_insert_select_unicode_extcCs”tdƒD]†}|j d|j¡| |j d|j|fd|g¡d¡|j d||jfdg¡|j ¡}| dt|ƒ¡|d}| |d|¡qdS)Nédz#delete from %s where userid='Frank'z(insert into %s (userid, %s) values (?,?)r%r'z"select %s from %s where userid = ?r)Úranger rr rZ fetchmanyÚlen)rZ fieldNameÚvalueÚxZrowsÚrowrrrÚ _test_val¡s& ÿýú þ zTestStuff._test_valcCs| dd¡| dd¡dS)NZbitfieldr'r©r7©rrrrÚtestBitµs zTestStuff.testBitcCsL| dd¡| dd¡z tj}Wnty:tj}Yn0| d|¡dS)NZintfieldr'r)r7ÚsysÚmaxsizeÚAttributeErrorZmaxint)rZbigrrrÚtestInt¹s     zTestStuff.testIntcCs| dd¡| dd¡dS)NZ floatfieldg)\�Âõ(ð?rr8r9rrrÚ testFloatÂs zTestStuff.testFloatcCs| dd¡dS)Nr-Zfoor8r9rrrÚ testVarcharÆszTestStuff.testVarcharcCs| ddd¡dS)zETest a long text field in excess of internal cursor data size (65536)Z longtextfieldÚabcépNr8r9rrrÚtestLongVarcharËszTestStuff.testLongVarcharcCs| dtddƒ¡dS)zDTest a long raw field in excess of internal cursor data size (65536)ZlongbinaryfieldzrBN©r7rr9rrrÚtestLongBinaryÏszTestStuff.testLongBinarycCs| dtdƒ¡dS)NZrawfieldz \8rDr9rrrÚtestRawÓszTestStuff.testRawcCs| dd¡dS)z˜Test a unicode character that would be mangled if bound as plain character. For example, previously the below was returned as ascii 'a' r-uÄ�Nr8r9rrrÚ test_widechar×szTestStuff.test_widecharcCs,ddl}dD]}|j|Ž}| d|¡q dS)Nr))ilé ééé'é;Z datefield)Údatetimer7)rrMÚvÚdrrrÚ testDatesÝs zTestStuff.testDatescCsv| |j d|jddg¡d¡| |j d|jdg¡d¡| |j d|j¡d¡| t|j ¡dƒd¡dS) Nú-insert into %s (userid,username) values (?,?)r%r&r'zupdate %s set username = ?úselect * from %sré©rr rr r3Úfetchoner9rrrÚtest_set_nonzero_lengthäsþûþz!TestStuff.test_set_nonzero_lengthcCs\| |j d|jtdƒdg¡d¡| |j d|j¡d¡| t|j ¡dƒd¡dS©NrQr%Úr'rRr)rr rr rr3rUr9rrrÚtest_set_zero_lengthós þûzTestStuff.test_set_zero_lengthcCsX| |j d|jddg¡d¡| |j d|j¡d¡| t|j ¡dƒd¡dSrWrTr9rrrÚtest_set_zero_length_unicodeþsþûz&TestStuff.test_set_zero_length_unicodeN)r%r&)r%r&)Ú__name__Ú __module__Ú __qualname__rr$r.r/r0r7r:r>r?r@rCrErFrGrPrVrYrZrrrrrs$?    rÚ__main__)rr;rZunittestrrZpywin32_testutilrrrZwin32com.clientrZwin32com.client.gencacherZTestCaserr[ÚmainrrrrÚs  {