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

Source Code for Module Martel.test.test_LAX

 1  import string 
 2   
 3  import Martel 
 4  from Martel import LAX 
 5   
6 -def test1():
7 fields = ( ["Andrew", "Dalke", "12"], 8 ["Liz", "Nelson", "22"], 9 ["Mandrake", "Moose", "23"], 10 ["Lisa", "Marie", "91"], ) 11 text = "" 12 for line in fields: 13 text = text + string.join(line, " ") + "\n" 14 15 format = Martel.Rep1( 16 Martel.Group("line", 17 Martel.Word("name", {"type": "first"}) + \ 18 Martel.Spaces() + \ 19 Martel.Word("name", {"type": "last"}) + \ 20 Martel.Spaces() + \ 21 Martel.Integer("age") + \ 22 Martel.AnyEol() 23 )) 24 iterator = format.make_iterator("line") 25 i = 0 26 for record in iterator.iterateString(text, LAX.LAX()): 27 assert record["name"] == fields[i][:2], (record["name"], fields[i][:2]) 28 assert record["age"] == fields[i][2:3], (record["age"], fields[i][2:3]) 29 i = i + 1 30 31 i = 0 32 for record in iterator.iterateString(text, LAX.LAXAttrs()): 33 assert [x[0] for x in record["name"]] == fields[i][:2], \ 34 ([x[0] for x in record["name"]], fields[i][:2]) 35 assert [x[0] for x in record["age"]] == fields[i][2:3], \ 36 ([x[0] for x in record["age"]], fields[i][2:3]) 37 assert record["name"][0][1]["type"] == "first" 38 assert record["name"][1][1]["type"] == "last" 39 assert record["age"][0][1].keys() == [] 40 i = i + 1
41
42 -def test_filter():
43 # 8 stretches of "a"s 44 # 10 stretches of "b"s 45 # 4 stretches of "c"s 46 data = "ababcbaaaababbbabccbaabcabcba" 47 format = Martel.Re("((?P<a>a+)|(?P<b>b+)|(?P<c>c+))+") 48 parser = format.make_parser() 49 lax = LAX.LAX(["b", "c"]) 50 parser.setContentHandler(lax) 51 parser.parseString(data) 52 assert lax.has_key("a") == 0 53 assert len(lax["b"]) == 10 54 assert len(lax["c"]) == 4
55 56
57 -def test():
58 test1() 59 test_filter()
60 61 if __name__ == "__main__": 62 test() 63