m %UIc@sdkZdkZdkZdklZdkZdkZdkZdklZdei fdYZ dei fdYZ dei fdYZ d e fd YZ d eifd YZd e fdYZdeifdYZde fdYZdei fdYZdei fdYZdei fdYZdei fdYZeedpeio dGHqn-dfdYZdei fd YZd!Zed"jo endS(#N(sStringIO(s test_supporttTest_CsvcBstZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZRS(s Test the underlying C csv parser in ways that are not appropriate from the high level interface. Further tests of this nature are done in TestDialectRegistry. cCs|itti|ittid|ittigdd|ititigddfdY}|it tig||ittigddfdY}|ittig|dS(Ntbad_attritfootBadClasscBstZdZRS(NcCs tdS(N(tIOError(tself((t*/data/zmath/lib/python2.4/test/test_csv.pyt__init__s(t__name__t __module__R(((RRst BadDialectcBstZdZRS(Ni(RR R(((RR s( Rt assertRaisest TypeErrortcsvtreadertNonetAttributeErrortErrorRRR (RR R((Rttest_reader_arg_validscCsL|itti|ittid|ittitdddS(NRi(RR R R twriterRRtStringIO(R((Rttest_writer_arg_valid"scCs|i|iidd|i_|i|iid|itt|id|itt|iddd|i_ |i|ii d|itt|id|itt|iddt i |i_ |i|ii t i dS(Nt,s t delimitertlineterminatortquoting(Rt assertEqualtobjtdialectRR R tdelattrtsetattrRt escapecharR t QUOTE_MINIMALR(RR((Rt _test_attrs's   cCs|itigdS(N(RR!R R(R((Rttest_reader_attrs5scCs|ititdS(N(RR!R RR(R((Rttest_writer_attrs8scKsti\}}ti|d}zPti||}|i ||i d|i|i||iiWd|iti|XdS(Nsw+bi(ttempfiletmkstemptfdtnametostfdopentfileobjR RtkwargstwriterowtfieldstseekRRtreadtexpectRRtclosetunlink(RR-R0R+R'RR&R*((Rt _write_test;s   cCs|iti|idd|ifd|idgd|iti|idgddtidfdY}|it|i|ddfdY}|it|i|gddS(Nts""RtBadListcBstZdZdZRS(NcCsdS(Ni ((R((Rt__len__PscCs|djo tndS(Ni(tiR(RR7((Rt __getitem__Rs (RR R6R8(((RR5Os tBadItemcBstZdZRS(NcCs tdS(N(R(R((Rt__str__Ws(RR R:(((RR9Vs( RR R RR3Rt QUOTE_NONER5RR9(RR9R5((Rttest_write_arg_validHscCs.dd}|i||gd||fdS(NtXiPs%s,%s(t bigstringRR3(RR>((Rttest_write_bigfield[s cCs|idddgd|iti|idddgddti|idddgddti|idddgddti|idddgddtidS(Ntat1sp,qs a,1,"p,q"Rs "a",1,"p,q"s "a","1","p,q"( RR3R R RR;R tQUOTE_NONNUMERICt QUOTE_ALL(R((Rttest_write_quotingas    cCsK|idddgddd|idddgddddtidS( NR@RAsp,qs a,1,"p,q"Rs\sa,1,p\,qR(RR3R R;(R((Rttest_write_escapens cCsdfdY}ti|}|it|idggti\}}t i |d}zkti|}|it|id|iddgddgg|id|i|id Wd|it i|XdS( Nt BrokenFilecBstZdZRS(NcCs tdS(N(R(Rtbuf((Rtwriteys(RR RH(((RRFxsR@sw+btbtctdis a,b c,d (RFR RRR Rt writerowsR$R%R&R'R(R)R*R RR.RR/R1R2(RRFR'RR&R*((Rttest_writerowsws  cKs2ti||}t|}|i||dS(N( R RtinputR+tlisttresultRRR0(RRNR0R+RRP((Rt _read_tests cCs|igg|idggg|iti|idgddd|iti|idgddd|idgdggdddS( NR4s"ab"ctstrictitabctabct doublequotei(RRQR R RR(R((Rttest_read_oddinputsscCs|idgddgg|idgddgg|idgddgg|idgddgg|iti|idgg|iti|idgg|iti|id ggdS( Nsa,bR@RIsa,b sa,b sa,b sa,b c,dsa,b c,dsa,b c,d(RRQR R R(R((Rt test_read_eolscCs|idgdddggdd|idgddggdd|id gddggdd|id gdd ggdd|id gdd ggdd|idgddggdddS(Nsa,\b,cR@s\bRJRs\sa,b\,csb,csa,"b\,c"sa,"b,\c"sb,\cs a,"b,c\""sb,c"sa,"b,c"\sb,c\(RRQ(R((Rttest_read_escapes %""""cCs:dd}d||f}|i|g||ggdS(NR=iPs%s,%s(R>tbiglineRRQ(RRYR>((Rttest_read_bigfields (RR t__doc__RRR!R"R#R3R<R?RDRERMRQRVRWRXRZ(((RRs"           tTestDialectRegistrycBs>tZdZdZdZdZdZdZRS(NcCs|ittid|itti|ititid|ititid|itti|ititid|ititid|itti d|itti dd|itti dddfdY}|it ti d|dS(NtnonesuchtboguscBstZdZRS(NcCs tdS(N(tKeyError(R((RRs(RR R(((RR^s( RR R R t list_dialectsRt get_dialectRtunregister_dialecttregister_dialectR^R_(RR^((Rttest_registry_badargsscCsdtifdY}d}ti|g}|iti||zI|i t ti ||ti}|i|i ||Wdti|XdS(Nt myexceltsvcBstZdZRS(Ns (RR R(((RRes(R texcelReR'R`texpected_dialectstsortRcRt failUnlesst isinstanceRat got_dialectsRRb(RR'ReRkRg((Rt test_registrys   cCs0dtifdY}|iti|dS(NRecBstZdZRS(Ns (RR R(((RRes(R tDialectReRR R(RRe((Rttest_incomplete_dialectscCsdtifdY}ti\}}ti|d}zn|i d|i dti |d|}|i|iddg|i|id d gWd|iti|XdS( NtspacecBstZdZeiZdZRS(Nt s\(RR RR R;RR(((RRos sw+bsabc def c1ccccc1 benzene iRRTtdeftc1ccccc1tbenzene(R RfRoR$R%R&R'R(R)R*RHR.RtrdrRRtnextR1R2(RR'RoRtR&R*((Rttest_space_dialects    cCsIdtifdY}dtifdY}dtifdY}tid|zti\}}t i |d}zLti |}|idd d g|id |i|id Wd|it i|Xti\}}t i |d}zOti ||}|idd d g|id |i|id Wd|it i|Xti\}}t i |d}zUti |d|}|idd d g|id |i|idWd|it i|Xti\}}t i |d}zRti |dd}|idd d g|id |i|idWd|it i|Xti\}}t i |d}zXti |d|dd}|idd d g|id |i|idWd|it i|XWdtidXdS(NttestAcBstZdZRS(Ns (RR R(((RRwsttestBcBstZdZRS(Nt:(RR R(((RRxsttestCcBstZdZRS(Nt|(RR R(((RRzssw+biiiis1,2,3 s1 2 3 Rs1:2:3 s1|2|3 Rt;s1;2;3 (R RfRwRxRzRcR$R%R&R'R(R)R*RR,R.RRR/R1R2Rb(RR'RRwRzRxR&R*((Rttest_dialect_applysr          cCst|ittigdd|ittigdd|ittigdd|ittigdddS(NRiRRiid(RR RR RR R(R((Rttest_bad_dialect*s(RR RdRlRnRvR}R~(((RR\s      Dt TestCsvBasecBstZdZdZRS(NcCsti\}}ti|d}zR|i||i dt i |d|i }t|}|i||Wd|iti|XdS(Nsw+biR(R$R%R&R'R(R)R*RHRNR.R RRRROR-Rtexpected_resultR1R2(RRNRR'R-R&R*R((RtreaderAssertEqual3s    cCsti\}}ti|d}zLti|d|i }|i ||i d|i|i|Wd|iti|XdS(Nsw+bRi(R$R%R&R'R(R)R*R RRRRLRNR.RR/RR1R2(RRNRR'RR&R*((RtwriterAssertEqual@s   (RR RR(((RR2s tTestDialectExcelcBstZdZdZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdZdZdZdZdZdZdZdZdZRS(NRfcCs|iddggdS(NRT(RR(R((Rt test_singleOscCs&|iddddddggdS(Ns 1,2,3,4,5RAt2t3t4t5(RR(R((Rt test_simpleRscCs|idgdS(NR4(RR(R((Rttest_blanklineUscCs|idddggdS(NRR4(RR(R((Rttest_empty_fieldsXscCs|iddggdS(Ns""R4(RR(R((Rttest_singlequoted[scCs|idddggdS(Ns"",R4(RR(R((Rttest_singlequoted_left_empty^scCs|idddggdS(Ns,""R4(RR(R((Rttest_singlequoted_right_emptyascCs|iddggdS(Ns""""t"(RR(R((Rttest_single_quoted_quotedscCs|iddggdS(Ns""""""s""(RR(R((Rttest_quoted_quotesgscCs|iddggdS(Nsa""b(RR(R((Rttest_inline_quotejscCs|iddggdS(Nsa"b"c(RR(R((Rttest_inline_quotesmscCs|iddggdS(Ns"a"btab(RR(R((Rttest_quotes_and_morepscCs|iddggdS(Nsa"b(RR(R((Rttest_lone_quotesscCs|iddggdS(Ns"a" "b"sa "b"(RR(R((Rttest_quote_and_quotevscCs|iddggdS(Ns "a"(RR(R((Rttest_space_and_quoteyscCs)|idddddddggdS(Ns#1,2,3,"I think, therefore I am",5,6RARRsI think, therefore I amRt6(RR(R((Rt test_quoted|s cCs&|iddddddggdS(NsJ1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw"RARRs"I see," said the blind mans"as he picked up his hammer and saw(RR(R((Rttest_quoted_quotes cCs;d}|i|dddddgddd d ggdS( NsR1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw" 9,8,7,6RARRs"I see," said the blind mans"as he picked up his hammer and sawt9t8t7R(RNRR(RRN((Rttest_quoted_nls cCs#|idddddggdS(Ns 12,12,1",t12s1"R4(RR(R((Rttest_dubious_quotescCs|igddS(NR4(RR(R((Rt test_nullscCs|idggddS(NRTsabc (RR(R((RRscCs&|idddddggddS(NiiRTiis 1,2,abc,3,4 (RR(R((RRscCs&|idddddggddS(Niisa"bc"iis1,2,"a""bc""",3,4 (RR(R((Rt test_quotesscCs|idggddS(Nsabc,defs "abc,def" (RR(R((Rttest_quote_fieldsepscCs&|idddddggddS(Niisa bciis1,2,"a bc",3,4 (RR(R((Rt test_newliness(RR RRRRRRRRRRRRRRRRRRRRRRRR(((RRLs4                       t EscapedExcelcBstZeiZdZRS(Ns\(RR R R;RR(((RRs tTestEscapedExcelcBs#tZeZdZdZRS(NcCs|idggddS(Nsabc,defs abc\,def (RR(R((Rttest_escape_fieldsepscCs|iddggdS(Ns abc\,def sabc,def(RR(R((Rttest_read_escape_fieldseps(RR RRRR(((RRs  tQuotedEscapedExcelcBstZeiZdZRS(Ns\(RR R RBRR(((RRs tTestQuotedEscapedExcelcBs#tZeZdZdZRS(NcCs|idggddS(Nsabc,defs "abc,def" (RR(R((Rttest_write_escape_fieldsepscCs|iddggdS(Ns "abc\,def" sabc,def(RR(R((RRs(RR RRRR(((RRs  tTestDictFieldscBsktZdZdZdZdZdZdZdZdZ d Z d Z d Z RS( NcCsti\}}ti|d}zdti|ddddg}|i hdd<dd<|i d|i |id Wd|iti|XdS( Nsw+bt fieldnamestf1tf2tf3i RTis 10,,abc (R$R%R&R'R(R)R*R t DictWriterRR,R.RRR/R1R2(RR'RR&R*((Rttest_write_simple_dicts  cCs#t}|itti|dS(N(RR*RR R R R(RR*((Rttest_write_no_fieldss cCsti\}}ti|d}zm|id|idt i |ddddg}|i |ihdd<dd <dd <Wd|iti|XdS( Nsw+bs 1,2,abc iRRRRRARRT(R$R%R&R'R(R)R*RHR.R t DictReaderRRRRuR1R2(RR'R&R*R((Rttest_read_dict_fieldss   5 cCsti\}}ti|d}z^|id|idt i |}|i |ihdd<dd<dd <Wd|iti|XdS( Nsw+bsf1,f2,f3 1,2,abc iRRARRRRT(R$R%R&R'R(R)R*RHR.R RRRRRuR1R2(RR'R&R*R((Rttest_read_dict_no_fieldnamess  5 c Csti\}}ti|d}zv|id|idt i |dddg}|i |ihdd<dd<dd d d d g<Wd|iti|XdS( Nsw+bs1,2,abc,4,5,6 iRRRRARRTRRR(R$R%R&R'R(R)R*RHR.R RRRRRuRR1R2(RR'R&R*R((Rttest_read_longs   A c Csti\}}ti|d}z||id|idt i |dddgdd}|i |ihdd <dd <dd d d dg<Wd|iti|XdS(Nsw+bs1,2,abc,4,5,6 iRRRtrestkeyt_restRARRTRRR(R$R%R&R'R(R)R*RHR.R RRRRRuR1R2(RR'R&R*R((Rttest_read_long_with_rests   A c Csti\}}ti|d}zp|id|idt i |dd}|i |ihdd<dd <dd d d d g<Wd|iti|XdS(Nsw+bsf1,f2 1,2,abc,4,5,6 iRRRRARRRTRRR(R$R%R&R'R(R)R*RHR.R RRRRRuR1R2(RR'R&R*R((Rt&test_read_long_with_rest_no_fieldnames s  A cCsti\}}ti|d}z|id|idt i |ddi dd}|i|ihdd<d d <d d <d d <d d <dd<|i|ihdd<d d <d d <d d<d d<dd<Wd|iti|XdS(Nsw+bs1,2,abc,4,5,6 1,2,abc iRs 1 2 3 4 5 6trestvaltDEFAULTRARRRTRRR(R$R%R&R'R(R)R*RHR.R RtsplitRRRRuR1R2(RR'R&R*R((Rttest_read_shorts     LP cCsqdddg}ti|ddi}|i|ihdd<dd <d d <d d <dd<dS(Ns2147483648,43.0e12,17,abc,def s147483648,43.0e2,17,abc,def s47483648,43.0,170,abc,def Rsi1 float i2 s1 s2ti1t 2147483648tfloats43.0e12ti2t17ts1RTts2Rq(tsampleR RRRRRRu(RRR((Rttest_read_multi*s cCstidddgddi}|i|ihdd<dd<dd<d d <d d <d d <|i|ihdd<dd<dd<d d <d d <d d <dS( Ns1,2,abc,4,5,6 s Rs 1 2 3 4 5 6RARRRTRRR(R RRRRRRu(RR((Rttest_read_with_blanks9sLcCsttidgddidd}|i|ihdd<dd<dd <d d <d d <d d <dS( Ns1;2;abc;4;5;6 Rs 1 2 3 4 5 6RR|RARRRTRRR(R RRRRRRu(RR((Rttest_read_semi_sepBs   ( RR RRRRRRRRRRR(((RRs      tTestArrayWritescBs,tZdZdZdZdZRS(Nc Csdk} g}tdD]}|d|q~} | id| }ti\}}t i |d}z}t i|dd}|i|dig}|D]}|t|q~d}|id|i|i|Wd|it i|XdS( NiR7sw+bRRfRs i(tarrayt_[1]trangeR7tcontentsR@R$R%R&R'R(R)R*R RR,tjointstrtexpectedR.RRR/R1R2( RR@R'R7RRR&R*RRR((Rttest_int_writeJs + 4  c Cs dk} g}tdD]}|d|dq~} | id| }ti\}}t i |d}z}t i|dd}|i|dig}|D]}|t|q~d}|id |i|i|Wd|it i|XdS( Nif0.10000000000000001RKsw+bRRfRs i(RRRR7RR@R$R%R&R'R(R)R*R RR,RRRR.RRR/R1R2( RR@R'R7RRR&R*RRR((Rttest_double_write[s / 4  c Cs dk} g}tdD]}|d|dq~} | id| }ti\}}t i |d}z}t i|dd}|i|dig}|D]}|t|q~d}|id |i|i|Wd|it i|XdS( Nif0.10000000000000001tfsw+bRRfRs i(RRRR7RR@R$R%R&R'R(R)R*R RR,RRRR.RRR/R1R2( RR@R'R7RRR&R*RRR((Rttest_float_writeks / 4  c Csdk}dk}|id|i}ti\}}ti |d}z\t i |dd}|i |di|d}|id|i|i|Wd|iti|XdS(NRJsw+bRRfRs i(RtstringtlettersR@R$R%R&R'R(R)R*R RR,RRR.RRR/R1R2( RR@R'RR&R*RRR((Rttest_char_write{s   (RR RRRR(((RRIs   tTestDialectValiditycBs#tZdZdZdZRS(NcCsdtifdY}|}d|_|iti|ti |_d|_ |iti|t |_ ti |_d|_|}d|_|iti|d|_|iti|dS(Nt mydialectcBs/tZdZdZeZeZdZe i Z RS(NR|s\s ( RR RRtFalseRUtTruetskipinitialspaceRR R;R(((RRs Rs''i(R RmRRKRRRR RR;RRRURCt quotechar(RRKR((Rt test_quotings          cCs^dtifdY}|}d|_|iti|d|_|iti|dS(NRcBs/tZdZdZeZeZdZe i Z RS(NR|s\s ( RR RRRRURRRR R;R(((RRs s:::i(R RmRRKRRR R(RRRK((Rttest_delimiters    cCsTdtifdY}|}d|_|}d|_|iti|dS(NRcBs/tZdZdZeZeZdZe i Z RS(NR|s\s ( RR RRRRURRRR R;R(((RRs s:::i(R RmRRKRRR R(RRRK((Rttest_lineterminators     (RR RRR(((RRs  t TestSniffercBsGtZdZdZdZdZdZdZdZdZ d Z RS( NsHarry's, Arlington Heights, IL, 2/1/03, Kimi Hayes Shark City, Glendale Heights, IL, 12/28/02, Prezence Tommy's Place, Blue Island, IL, 12/28/02, Blue Sunday/White Crow Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back s'Harry''s':'Arlington Heights':'IL':'2/1/03':'Kimi Hayes' 'Shark City':'Glendale Heights':'IL':'12/28/02':'Prezence' 'Tommy''s Place':'Blue Island':'IL':'12/28/02':'Blue Sunday/White Crow' 'Stonecutters Seafood and Chop House':'Lemont':'IL':'12/19/02':'Week Back' s+"venue","city","state","date","performers" s05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03 05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03 05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03 sT2147483648;43.0e12;17;abc;def 147483648;43.0e2;17;abc;def 47483648;43.0;170;abc;def saaa bbb AAA BBB cCsOti}|i|i|it|i|i|i|it dS(N( R tSniffertsnifferRRt has_headertsample1RtheaderR(RR((Rttest_has_headers cCsti}|i|i}|i|id|i|i d|i|i t |i|i }|i|id|i|i d|i|i t dS(NRRRyt'(R RRtsniffRRRRRRRRtsample2R(RRR((Rt test_sniffs cCsti}|i|i}|i|i|ij|i|idd}|i |id|i|idd}|i |id|i|i }|i |id|i|i }|i |iddS(Nt delimiterss?,t?s/,t/R|s ( R RRRRtsample3Rtassert_RRtsample4tsample5(RRR((Rttest_delimiterss ( RR RRRRRRRRR(((RRs  tgettotalrefcounts*** skipping leakage tests ***tNULcBstZdZeZRS(NcGsdS(N((tstargs((RRH s(RR RHt writelines(((RR s t TestLeakscBs,tZdZdZdZdZRS(NcCsd}ti}x}tdD]o}ti|i ti gti}t i dgt i dgt i dg||}|}qW|i |djtdS(Niisa,b,c i(tdeltatsysRtlastrctxrangeR7tgctcollectRRtgarbagetrcR RR(RR7RRR((Rttest_create_reads      cCsd}ti}t}xttdD]f}ti |i ti gti}ti|ti|ti|||}|}q(W|i |djtdS(Niii(RRRRRRRR7RRRRRRR RR(RR7RRRR((Rttest_create_write s          cCsd}dgd}ti}xmtdD]_}ti|i ti gti}t i|}x|D]}qqW||}|}q,W|i |djtdS(Nisa,b,c ii(RtrowsRRRRR7RRRRRRR RRttrowR(RRRtR7RRRR((Rt test_read0s       c Csd}dddggd}t}ti}xztdD]l}t i |i t i gti}ti|}x|D]}|i|qW||}|}q>W|i |djtdS(Niiiiii(RRRRRRRRR7RRRRRRR RRR,R( RRR7RRRRRR((Rt test_write@s        (RR RRR R (((RRs   cCs\tit}tig}t|D]*}|i do|t ||q$q$~dS(NtTest( RtmodulesRtmodt test_supportt run_unittestRtdirR't startswithtgetattr(RR'R ((Rt test_main`s t__main__(RR(tunittestRR$R RttestRtTestCaseRR\RRRfRRRRRRRRthasattrtverboseRRRR(RRRRRRRR$RRRR RRRRRRRR\RRR(((RRs6        ]  A>@ P