Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Revision | b128e4fff750b070f5edb105c5bb644e0bd6b8e1 (tree) |
---|---|
Zeit | 2022-02-26 00:21:30 |
Autor | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
Refactored (AST2XML) tests: keep localverify-function local
@@ -45,21 +45,3 @@ | ||
45 | 45 | |
46 | 46 | if child_count: |
47 | 47 | assert len(found) == child_count, f"The number of children of '{tag}' is {len(found)}, which does not match the specified child_count={child_count}" |
48 | - | |
49 | - | |
50 | - | |
51 | -def verify_QuantityGroup(xml_serialize, pegGrp, tagName): | |
52 | - seq = StdSequence_withAsserts() | |
53 | - txt = xml_serialize(pegGrp(expr=seq.seq)) | |
54 | - logger.debug(f'XML:: {txt}') | |
55 | - | |
56 | - assert_xml_Element(txt, tagName) | |
57 | - seq.assert_xml_Element(txt) | |
58 | - | |
59 | - | |
60 | -def verify_QuantityID(xml_serialize, pegGrp, tagName, id_name='JustAName'): | |
61 | - txt = xml_serialize(pegGrp(expr=peg.ID(name=id_name))) | |
62 | - logger.debug(f'XML:: {txt}') | |
63 | - | |
64 | - assert_xml_Element(txt, tagName) | |
65 | - assert_xml_Element(txt, tag='.//ID', name=id_name) |
@@ -4,7 +4,7 @@ | ||
4 | 4 | |
5 | 5 | from castle.ast import peg, serialization |
6 | 6 | |
7 | -from . import StdSequence_withAsserts, assert_xml_Element, verify_QuantityGroup, verify_QuantityID | |
7 | +from . import StdSequence_withAsserts, assert_xml_Element | |
8 | 8 | |
9 | 9 | |
10 | 10 | @pytest.fixture |
@@ -84,17 +84,35 @@ | ||
84 | 84 | assert tree.findall('.//Rule[2]//StrTerm')[0].attrib['value'] == 'str2' |
85 | 85 | |
86 | 86 | |
87 | + | |
88 | +def verify_QuantityGroup(xml_serialize, pegGrp, tagName): | |
89 | + seq = StdSequence_withAsserts() | |
90 | + txt = xml_serialize(pegGrp(expr=seq.seq)) | |
91 | + logger.debug(f'XML:: {txt}') | |
92 | + | |
93 | + assert_xml_Element(txt, tagName) | |
94 | + seq.assert_xml_Element(txt) | |
95 | + | |
87 | 96 | def test_OptionalSeq(xml_serialize): verify_QuantityGroup(xml_serialize, peg.Optional, 'Optional') ## ` ( ...)? ` |
88 | 97 | def test_ZeroOrMoreSeq(xml_serialize): verify_QuantityGroup(xml_serialize, peg.ZeroOrMore, 'ZeroOrMore') ## ` ( ...)* ` |
89 | 98 | def test_OneOrMoreSeq(xml_serialize): verify_QuantityGroup(xml_serialize, peg.OneOrMore, 'OneOrMore') ## ` ( ...)+ ` |
90 | 99 | def test_UnorderedGroup(xml_serialize): verify_QuantityGroup(xml_serialize, peg.UnorderedGroup, 'UnorderedGroup') ## ` ( ...)# ` # Only useful for a group/sequence!! |
91 | 100 | |
101 | + | |
102 | +def verify_QuantityID(xml_serialize, pegGrp, tagName, id_name='JustAName'): | |
103 | + txt = xml_serialize(pegGrp(expr=peg.ID(name=id_name))) | |
104 | + logger.debug(f'XML:: {txt}') | |
105 | + | |
106 | + assert_xml_Element(txt, tagName) | |
107 | + assert_xml_Element(txt, tag='.//ID', name=id_name) | |
108 | + | |
92 | 109 | def test_OptionalID(xml_serialize): verify_QuantityID(xml_serialize, peg.Optional, 'Optional') |
93 | 110 | def test_ZeroOrMoreID(xml_serialize): verify_QuantityID(xml_serialize, peg.ZeroOrMore, 'ZeroOrMore') |
94 | 111 | def test_OneOrMoreID(xml_serialize): verify_QuantityID(xml_serialize, peg.OneOrMore, 'OneOrMore') |
95 | 112 | def test_UnorderedID(xml_serialize): verify_QuantityID(xml_serialize, peg.UnorderedGroup, 'UnorderedGroup', 'strange') ## A bit uncommon: an unordered group of ONE! But it should work. |
96 | 113 | |
97 | 114 | |
115 | + | |
98 | 116 | def test_OC3(xml_serialize): # e1 | e2 | e2 |
99 | 117 | e1, e2, e3 = peg.ID(name='ID_1'), peg.StrTerm(value='str_2'), peg.RegExpTerm(value='regexp_3') |
100 | 118 | txt = xml_serialize(peg.OrderedChoice(children=[e1,e2,e3])) |
@@ -178,3 +196,6 @@ | ||
178 | 196 | assert len(tree.findall('.//Setting')) == 2 |
179 | 197 | assert len(tree.findall('.//ID')) == 2 |
180 | 198 | |
199 | + | |
200 | + | |
201 | + |