Package Martel :: Package test :: Module test_delimiter
[hide private]
[frames] | no frames]

Source Code for Module Martel.test.test_delimiter

 1  import os 
 2  from xml.sax import handler 
 3   
 4  import Martel 
 5  from testformats import delimiter 
 6   
 7  sample_dir = "samples" 
 8   
 9  expected_records = [ 
10      ["Name", "Language"], 
11      ["Andrew", "Python"], 
12      ["Jeff", "Python"], 
13      ["Ewan", "Perl"], 
14      ["Jason", "Java"], 
15  ] 
16   
17 -class CatchFields(handler.ContentHandler):
18 - def __init__(self):
19 handler.ContentHandler.__init__(self) 20 self._records = None 21 self._fields = None 22 self._text = None
23
24 - def startElement(self, name, attrs):
25 if name == "delimited": 26 self._records = [] 27 elif name == "record": 28 self._fields = [] 29 elif name == "field": 30 self._text = ""
31
32 - def characters(self, s):
33 if self._text is not None: 34 self._text = self._text + s
35
36 - def endElement(self, name):
37 if name == "field": 38 self._fields.append(self._text) 39 self._text = None 40 elif name == "record": 41 self._records.append(self._fields) 42 self._fields = None
43
44 -def do_test(format, infile):
45 parser = format.make_parser() 46 catch = CatchFields() 47 parser.setContentHandler(catch) 48 parser.parseFile(infile) 49 assert expected_records == catch._records
50
51 -def test():
52 infile = open(os.path.join(sample_dir, "sample.tab")) 53 do_test(delimiter.tabformat, infile) 54 55 infile = open(os.path.join(sample_dir, "sample.comma")) 56 do_test(delimiter.commaformat, infile)
57 58 if __name__ == "__main__": 59 test() 60