• R/O
  • SSH

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2


Commit MetaInfo

Revisiónc88877e2c9a9a15ca06dfc68f5ad59946fb10c2f (tree)
Tiempo2022-02-07 01:34:07
AutorAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Log Message

renamed a (simple) test to show its about XML

Cambiar Resumen

Diferencia incremental

diff -r 6802c2cb6b62 -r c88877e2c9a9 pytst/ast/XML_serialization/test_1_simple.py
--- a/pytst/ast/XML_serialization/test_1_simple.py Sun Feb 06 17:31:08 2022 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
1-import pytest
2-from xml.etree import ElementTree as ET
3-import logging; logger = logging.getLogger(__name__)
4-
5-from castle.ast import peg, serialization
6-
7-
8-class Sequence:
9- def __init__(self):
10- self.n1, self.v2, self.v3 = 'ID_1', 'str_2', 'regexp_3'
11- e1 = peg.ID(name=self.n1)
12- e2 = peg.StrTerm(value=self.v2)
13- e3 = peg.RegExpTerm(value=self.v3)
14- self.seq = peg.Sequence(value=[e1, e2, e3])
15- def assert_xml_Element(self, txt):
16- assert_xml_Element(txt, tag='.//Sequence')
17- assert_xml_Element(txt, tag='.//ID', name=self.n1)
18- assert_xml_Element(txt, tag='.//StrTerm',value=self.v2)
19- assert_xml_Element(txt, tag='.//RegExpTerm', value=self.v3)
20-
21-
22-def assert_xml_Element(txt, tag,
23- version="0.0",
24- **attribs,):
25- tree = ET.fromstring(txt)
26- if version:
27- assert tree.attrib['version'] == version
28- founds = tree.findall(tag)
29- assert len(founds) == 1, f"Expected only one element; got: {len(founds)} :{founds}"
30- found = founds[0]
31- logger.debug(f'XXX1 tag={tag}:: found={found}')
32- for attrib, value in attribs.items():
33- logger.debug(f'XXX2 tag={tag}:: attrib={attrib}, value={value}')
34- assert found.attrib[attrib] == value
35-
36-
37-
38-@pytest.fixture
39-def xml_serialize():
40- return serialization.Serialize('xml').serialize
41-
42-
43-
44-def test_ID(xml_serialize):
45- txt = xml_serialize(peg.ID(name='demo_ID'))
46- assert_xml_Element(txt, tag='ID', name='demo_ID')
47-
48-
49-def test_StrTerm(xml_serialize):
50- txt = xml_serialize(peg.StrTerm(value='demo string'))
51- assert_xml_Element(txt, tag='StrTerm', value='demo string')
52-
53-
54-def test_RegExpTerm(xml_serialize):
55- txt = xml_serialize(peg.RegExpTerm(value='demo RegExp'))
56- assert_xml_Element(txt, tag='RegExpTerm', value='demo RegExp')
57-
58-
59-def test_Sequence_1(xml_serialize):
60- e1 = peg.ID(name='ID_1')
61- txt= xml_serialize(peg.Sequence(value=[e1]))
62- logger.debug(f'XML:: {txt}')
63- assert_xml_Element(txt, tag='Sequence')
64- assert_xml_Element(txt, tag='.//ID', name='ID_1')
65-
66-
67-
68-def test_Sequence_3(xml_serialize):
69- seq = Sequence()
70- txt= xml_serialize(seq.seq)
71- logger.debug(f'XML:: {txt}')
72-
73- assert_xml_Element(txt, tag='Sequence')
74- seq.assert_xml_Element(txt)
75-
76-
77-def test_Rule_1ID(xml_serialize):
78- rule_name = "RuleName"
79- xref = "cross_ref"
80- expr = peg.Sequence(value=[peg.ID(name=xref)])
81-
82- txt = xml_serialize(peg.Rule(name=peg.ID(name=rule_name), expr=expr))
83- logger.debug(f'XML:: {txt}')
84-
85- assert_xml_Element(txt, tag='Rule', name=rule_name)
86- assert_xml_Element(txt, tag='.//ID', name=xref)
87-
88-
89-def test_Rule_Sequence(xml_serialize):
90- rule_name = "Rule_Sequence"
91- seq = Sequence()
92-
93- txt = xml_serialize(peg.Rule(name=peg.ID(name=rule_name), expr=seq.seq))
94- logger.debug(f'XML:: {txt}')
95-
96- assert_xml_Element(txt, tag='Rule', name=rule_name)
97- seq.assert_xml_Element(txt)
98-
99-
100-def test_Rules(xml_serialize):
101- r1 = peg.Rule(name=peg.ID(name='rule_1'), expr=peg.Sequence(value=[peg.ID(name='id1')]))
102- r2 = peg.Rule(name=peg.ID(name='rule_2'), expr=peg.Sequence(value=[peg.StrTerm(value='str2')]))
103-
104- txt = xml_serialize(peg.Rules(children=[r1,r2]))
105- logger.debug(f'XML:: {txt}')
106-
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
111-
112- assert tree.findall('.//Rule[1]')[0].attrib['name'] == 'rule_1'
113- assert tree.findall('.//Rule[2]//StrTerm')[0].attrib['value'] == 'str2'
diff -r 6802c2cb6b62 -r c88877e2c9a9 pytst/ast/XML_serialization/test_1_simpleXML.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pytst/ast/XML_serialization/test_1_simpleXML.py Sun Feb 06 17:34:07 2022 +0100
@@ -0,0 +1,113 @@
1+import pytest
2+from xml.etree import ElementTree as ET
3+import logging; logger = logging.getLogger(__name__)
4+
5+from castle.ast import peg, serialization
6+
7+
8+class Sequence:
9+ def __init__(self):
10+ self.n1, self.v2, self.v3 = 'ID_1', 'str_2', 'regexp_3'
11+ e1 = peg.ID(name=self.n1)
12+ e2 = peg.StrTerm(value=self.v2)
13+ e3 = peg.RegExpTerm(value=self.v3)
14+ self.seq = peg.Sequence(value=[e1, e2, e3])
15+ def assert_xml_Element(self, txt):
16+ assert_xml_Element(txt, tag='.//Sequence')
17+ assert_xml_Element(txt, tag='.//ID', name=self.n1)
18+ assert_xml_Element(txt, tag='.//StrTerm',value=self.v2)
19+ assert_xml_Element(txt, tag='.//RegExpTerm', value=self.v3)
20+
21+
22+def assert_xml_Element(txt, tag,
23+ version="0.0",
24+ **attribs,):
25+ tree = ET.fromstring(txt)
26+ if version:
27+ assert tree.attrib['version'] == version
28+ founds = tree.findall(tag)
29+ assert len(founds) == 1, f"Expected only one element; got: {len(founds)} :{founds}"
30+ found = founds[0]
31+ logger.debug(f'XXX1 tag={tag}:: found={found}')
32+ for attrib, value in attribs.items():
33+ logger.debug(f'XXX2 tag={tag}:: attrib={attrib}, value={value}')
34+ assert found.attrib[attrib] == value
35+
36+
37+
38+@pytest.fixture
39+def xml_serialize():
40+ return serialization.Serialize('xml').serialize
41+
42+
43+
44+def test_ID(xml_serialize):
45+ txt = xml_serialize(peg.ID(name='demo_ID'))
46+ assert_xml_Element(txt, tag='ID', name='demo_ID')
47+
48+
49+def test_StrTerm(xml_serialize):
50+ txt = xml_serialize(peg.StrTerm(value='demo string'))
51+ assert_xml_Element(txt, tag='StrTerm', value='demo string')
52+
53+
54+def test_RegExpTerm(xml_serialize):
55+ txt = xml_serialize(peg.RegExpTerm(value='demo RegExp'))
56+ assert_xml_Element(txt, tag='RegExpTerm', value='demo RegExp')
57+
58+
59+def test_Sequence_1(xml_serialize):
60+ e1 = peg.ID(name='ID_1')
61+ txt= xml_serialize(peg.Sequence(value=[e1]))
62+ logger.debug(f'XML:: {txt}')
63+ assert_xml_Element(txt, tag='Sequence')
64+ assert_xml_Element(txt, tag='.//ID', name='ID_1')
65+
66+
67+
68+def test_Sequence_3(xml_serialize):
69+ seq = Sequence()
70+ txt= xml_serialize(seq.seq)
71+ logger.debug(f'XML:: {txt}')
72+
73+ assert_xml_Element(txt, tag='Sequence')
74+ seq.assert_xml_Element(txt)
75+
76+
77+def test_Rule_1ID(xml_serialize):
78+ rule_name = "RuleName"
79+ xref = "cross_ref"
80+ expr = peg.Sequence(value=[peg.ID(name=xref)])
81+
82+ txt = xml_serialize(peg.Rule(name=peg.ID(name=rule_name), expr=expr))
83+ logger.debug(f'XML:: {txt}')
84+
85+ assert_xml_Element(txt, tag='Rule', name=rule_name)
86+ assert_xml_Element(txt, tag='.//ID', name=xref)
87+
88+
89+def test_Rule_Sequence(xml_serialize):
90+ rule_name = "Rule_Sequence"
91+ seq = Sequence()
92+
93+ txt = xml_serialize(peg.Rule(name=peg.ID(name=rule_name), expr=seq.seq))
94+ logger.debug(f'XML:: {txt}')
95+
96+ assert_xml_Element(txt, tag='Rule', name=rule_name)
97+ seq.assert_xml_Element(txt)
98+
99+
100+def test_Rules(xml_serialize):
101+ r1 = peg.Rule(name=peg.ID(name='rule_1'), expr=peg.Sequence(value=[peg.ID(name='id1')]))
102+ r2 = peg.Rule(name=peg.ID(name='rule_2'), expr=peg.Sequence(value=[peg.StrTerm(value='str2')]))
103+
104+ txt = xml_serialize(peg.Rules(children=[r1,r2]))
105+ logger.debug(f'XML:: {txt}')
106+
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
111+
112+ assert tree.findall('.//Rule[1]')[0].attrib['name'] == 'rule_1'
113+ assert tree.findall('.//Rule[2]//StrTerm')[0].attrib['value'] == 'str2'