@@ -533,6 +533,40 @@ class mydialect(csv.Dialect):
533533 self .assertRaises (csv .Error , mydialect )
534534
535535
536+ class TestSniffer (unittest .TestCase ):
537+ sample1 = """\
538+ Harry's, Arlington Heights, IL, 2/1/03, Kimi Hayes
539+ Shark City, Glendale Heights, IL, 12/28/02, Prezence
540+ Tommy's Place, Blue Island, IL, 12/28/02, Blue Sunday/White Crow
541+ Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back
542+ """
543+ sample2 = """\
544+ 'Harry''s':'Arlington Heights':'IL':'2/1/03':'Kimi Hayes'
545+ 'Shark City':'Glendale Heights':'IL':'12/28/02':'Prezence'
546+ 'Tommy''s Place':'Blue Island':'IL':'12/28/02':'Blue Sunday/White Crow'
547+ 'Stonecutters Seafood and Chop House':'Lemont':'IL':'12/19/02':'Week Back'
548+ """
549+
550+ header = '''\
551+ "venue","city","state","date","performers"
552+ '''
553+ def test_has_header (self ):
554+ sniffer = csv .Sniffer ()
555+ self .assertEqual (sniffer .has_header (self .sample1 ), False )
556+ self .assertEqual (sniffer .has_header (self .header + self .sample1 ), True )
557+
558+ def test_sniff (self ):
559+ sniffer = csv .Sniffer ()
560+ dialect = sniffer .sniff (self .sample1 )
561+ self .assertEqual (dialect .delimiter , "," )
562+ self .assertEqual (dialect .quotechar , '"' )
563+ self .assertEqual (dialect .skipinitialspace , True )
564+
565+ dialect = sniffer .sniff (self .sample2 )
566+ self .assertEqual (dialect .delimiter , ":" )
567+ self .assertEqual (dialect .quotechar , "'" )
568+ self .assertEqual (dialect .skipinitialspace , False )
569+
536570if not hasattr (sys , "gettotalrefcount" ):
537571 if verbose : print "*** skipping leakage tests ***"
538572else :
0 commit comments