Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Revisión | 0f02fa2da3fc63e95423c2af5b573ea97ada3658 (tree) |
---|---|
Tiempo | 2022-01-31 02:08:35 |
Autor | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
AST-2-XML serialization :: Rules added
@@ -18,10 +18,6 @@ | ||
18 | 18 | assert_xml_Element(txt, tag='.//StrTerm',value=self.v2) |
19 | 19 | assert_xml_Element(txt, tag='.//RegExpTerm', value=self.v3) |
20 | 20 | |
21 | -@pytest.fixture | |
22 | -def xml_serialize(): | |
23 | - return serialization.Serialize('xml').serialize | |
24 | - | |
25 | 21 | |
26 | 22 | def assert_xml_Element(txt, tag, |
27 | 23 | version="0.0", |
@@ -38,6 +34,13 @@ | ||
38 | 34 | assert found.attrib[attrib] == value |
39 | 35 | |
40 | 36 | |
37 | + | |
38 | +@pytest.fixture | |
39 | +def xml_serialize(): | |
40 | + return serialization.Serialize('xml').serialize | |
41 | + | |
42 | + | |
43 | + | |
41 | 44 | def test_ID(xml_serialize): |
42 | 45 | txt = xml_serialize(peg.ID(name='demo_ID')) |
43 | 46 | assert_xml_Element(txt, tag='ID', name='demo_ID') |
@@ -93,7 +96,7 @@ | ||
93 | 96 | assert_xml_Element(txt, tag='Rule', name=rule_name) |
94 | 97 | seq.assert_xml_Element(txt) |
95 | 98 | |
96 | -@pytest.mark.xfail(reason="Not yet done") | |
99 | + | |
97 | 100 | def test_Rules(xml_serialize): |
98 | 101 | r1 = peg.Rule(name='rule_1', expr=peg.Sequence(value=[peg.ID(name='id1')])) |
99 | 102 | r2 = peg.Rule(name='rule_2', expr=peg.Sequence(value=[peg.StrTerm(value='str2')])) |
@@ -101,5 +104,10 @@ | ||
101 | 104 | txt = xml_serialize(peg.Rules(children=[r1,r2])) |
102 | 105 | logger.debug(f'XML:: {txt}') |
103 | 106 | |
104 | - assert False, "not yet done" | |
107 | + tree = ET.fromstring(txt) | |
108 | + assert len(tree.findall('.//Rule')) == 2 | |
109 | + assert len(tree.findall('.//ID')) == 1 | |
110 | + assert len(tree.findall('.//StrTerm')) == 1 | |
105 | 111 | |
112 | + assert tree.findall('.//Rule[1]')[0].attrib['name'] == 'rule_1' | |
113 | + assert tree.findall('.//Rule[2]//StrTerm')[0].attrib['value'] == 'str2' |