a oe!@sddlZddlZddlZddlZddlZddlZddlmZmZm Z ddl m Z ddl m Z GdddejZedkr~edS)N) TestSkipped str2bytes str2memory) constants)EnsureDispatchc@seZdZddZddZd(ddZd)d d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'S)* TestStuffc Cs$d|_d|_d|_|_ztjd}Wntytj d|_dD]0}zt d|}WqWqHt j yvYqH0qHt d|d}||jtjtj}|d|jf}Yn0t||_|j|_z|jd |jWntjtjfyYn0||jd |jd 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 %sacreate 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_filenameconncurosenvironKeyErrortempfileZNamedTemporaryFilenamer pythoncomZ com_errorrZ WorkspacesZCreateDatabaserZ dbLangGeneralZ dbEncryptCloseodbcZcursorexecuteerror progError assertEqual)selfZconn_strsuffixZdbeZ workspaceZnewdbr5C:\Program Files\Certbot\pkgs\win32\test\test_odbc.pysetUpsH          zTestStuff.setUpc Cs|jdurnz|jd|jWn<tjtjfy\}ztd|j|WYd}~n d}~00|jd|_|jdur|jd|_|j durzt |j Wnt yYn0dS)NrzFailed to delete test table %s) r rr rrrprintcloser r runlinkOSError)rwhyrrrtearDownPs &     zTestStuff.tearDownFrank Frank MillmancCsh||jd|j||gd||jd|j|gd||jd|j|gddS)Nz:insert into %s (userid, username) values (?,?)-select * from %s where userid = ?r/select * from %s where username = ?rr rr lowerrZuseridusernamerrrtest_insert_selectbs6  zTestStuff.test_insert_selectcCsh||jd|j||gd||jd|j|gd||jd|j|gddS)Nz9insert into %s (userid, username) values (?,?)r'r(rr)r*r,rrrtest_insert_select_unicodes6  z$TestStuff.test_insert_select_unicodecCsd}d}|||dS)Nut-àòutest-àò name)r/r,rrrtest_insert_select_unicode_extsz(TestStuff.test_insert_select_unicode_extcCstdD]}|jd|j||jd|j|fd|gd|jd||jfdg|j}|dt||d}||d|qdS)Ndz#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 fetchmanylen)rZ fieldNamevaluexZrowsrowrrr _test_vals&   zTestStuff._test_valcCs|dd|dddS)NZbitfieldr'rr7rrrrtestBits zTestStuff.testBitcCsL|dd|ddz tj}Wnty:tj}Yn0|d|dS)NZintfieldr'r)r7sysmaxsizeAttributeErrorZmaxint)rZbigrrrtestInts     zTestStuff.testIntcCs|dd|dddS)NZ floatfieldg)\(?rr8r9rrr testFloats zTestStuff.testFloatcCs|dddS)Nr-Zfoor8r9rrr testVarcharszTestStuff.testVarcharcCs|ddddS)zETest a long text field in excess of internal cursor data size (65536)Z longtextfieldabcpNr8r9rrrtestLongVarcharszTestStuff.testLongVarcharcCs|dtdddS)zDTest a long raw field in excess of internal cursor data size (65536)ZlongbinaryfieldzrBNr7rr9rrrtestLongBinaryszTestStuff.testLongBinarycCs|dtddS)NZrawfieldz \8rDr9rrrtestRawszTestStuff.testRawcCs|dddS)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āNr8r9rrr test_widecharszTestStuff.test_widecharcCs,ddl}dD]}|j|}|d|q dS)Nr))il ';Z datefield)datetimer7)rrMvdrrr testDatess zTestStuff.testDatescCsv||jd|jddgd||jd|jdgd||jd|jd|t|jdddS) N-insert into %s (userid,username) values (?,?)r%r&r'zupdate %s set username = ?select * from %srrr rr r3fetchoner9rrrtest_set_nonzero_lengthsz!TestStuff.test_set_nonzero_lengthcCs\||jd|jtddgd||jd|jd|t|jdddSNrQr%r'rRr)rr rr rr3rUr9rrrtest_set_zero_lengths zTestStuff.test_set_zero_lengthcCsX||jd|jddgd||jd|jd|t|jdddSrWrTr9rrrtest_set_zero_length_unicodesz&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[mainrrrrs  {