• R/O
  • SSH

Commit

Tags
Aucun tag

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

Révision719f51fc5c87629725514f8b5caf3a2e81c32c3c (tree)
l'heure2023-09-28 23:51:22
AuteurAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Message de Log

ASIS/BUSY: Protocol-with-parms: draft rendering

Change Summary

Modification

diff -r 4a6cf7249f77 -r 719f51fc5c87 Makefile
--- a/Makefile Thu Sep 28 15:15:48 2023 +0200
+++ b/Makefile Thu Sep 28 16:51:22 2023 +0200
@@ -16,7 +16,6 @@
1616 pytst/writers/RPy/test_1_EventIndexes.py \
1717 #
1818 rPY_CURRENT = \
19- pytst/aigr/test_2b_protocol.py \
2019 pytst/writers/RPy/test_2_ProtocolDataStructures.py \
2120
2221 #
diff -r 4a6cf7249f77 -r 719f51fc5c87 castle/writers/RPy/templates/ProtocolDataStructures.jinja2
--- a/castle/writers/RPy/templates/ProtocolDataStructures.jinja2 Thu Sep 28 15:15:48 2023 +0200
+++ b/castle/writers/RPy/templates/ProtocolDataStructures.jinja2 Thu Sep 28 16:51:22 2023 +0200
@@ -7,19 +7,23 @@
77
88 {#GAM Note: do not put {% block ... inside the loop - does not work#}
99
10-{% for p in protocols %}
11- {{- m.ProtocolName(p.name) }} = buildin.CC_B_Protocol(name="{{ p.name }}",
12- {% if p.typedParameters %}
13- parameters= XXX {{ p.typedParameters }}
10+{% for proto in protocols %}
11+ {{- m.ProtocolName(proto.name) }} = buildin.CC_B_Protocol(name="{{ proto.name }}",
12+ {% if proto.typedParameters %}
13+ parameters=(
14+ {%- for parm in proto.typedParameters -%}
15+ ({{ parm.name}} , {{parm.type}}),
16+ {%- endfor -%}
17+ ), # XXX ToDo: parms: (seq of] typle, namedType, strings?
1418 {% endif %}
15- kind=buildin.{{p.kind}},
16- inherit_from={{m.ProtocolName(p.based_on.name)}}
19+ kind=buildin.{{proto.kind}},
20+ inherit_from={{m.ProtocolName(proto.based_on.name)}}
1721 events = []) {#- filled in below -- see design notes // limitation #}
1822
19- {% for e in p.events %}
20- {{- m.ProtocolName(p.name) }}.events.append(buildin.CC_B_P_EventID(name="{{- e.name -}}",
21- seqNo={{- m.EventIndexName(p.name, e.name) }},
22- part_of={{ m.ProtocolName(p.name) }} ))
23+ {% for e in proto.events %}
24+ {{- m.ProtocolName(proto.name) }}.events.append(buildin.CC_B_P_EventID(name="{{- e.name -}}",
25+ seqNo={{- m.EventIndexName(proto.name, e.name) }},
26+ part_of={{ m.ProtocolName(proto.name) }} ))
2327 {% endfor %} {#- event #}
2428
2529 {% endfor %} {# protocols #}
diff -r 4a6cf7249f77 -r 719f51fc5c87 pytst/writers/RPy/test_2_ProtocolDataStructures.py
--- a/pytst/writers/RPy/test_2_ProtocolDataStructures.py Thu Sep 28 15:15:48 2023 +0200
+++ b/pytst/writers/RPy/test_2_ProtocolDataStructures.py Thu Sep 28 16:51:22 2023 +0200
@@ -12,8 +12,6 @@
1212
1313 protoData_PreFix = "cc_P_" #Keep in sync with implementation
1414
15-@pytest.mark.skip("XXX ToDo:: The MockProtocol should go")
16-def test_ToDo(): pass
1715
1816 @pytest.fixture
1917 def p_1e():
@@ -62,10 +60,39 @@
6260
6361 assert_marker(protoData_PreFix + 'P2', out, 1+2*2)
6462
65-@pytest.mark.skip("Need to test AIGR.protocols:: parameters first")
63+
64+def test_protocol_with_NoParms_a(T_ProtocolDataStructures):
65+ "An (event) protocol without parameters does not render the parameter line"
66+ out = T_ProtocolDataStructures.render(protocols=[EventProtocol(name="NoParms_", events=[])])
67+ assert 'parameters' not in out
68+
69+def test_protocol_with_NoParms_b(T_ProtocolDataStructures):
70+ out = T_ProtocolDataStructures.render(protocols=[EventProtocol(name="NoParms",
71+ events=[],
72+ typedParameters=[])])
73+ assert 'parameters' not in out
74+
75+def test_protocol_with_1parm(T_ProtocolDataStructures):
76+ out = T_ProtocolDataStructures.render(protocols=[EventProtocol(name="With_1_Parm",
77+ events=[],
78+ typedParameters=[TypedParameter(name='a_parm', type="A_Type")])])
79+ logger.debug("\n---------- out:: ------------------------\n%s\n--------------------------------", out)
80+ assert 'parameters=' in out
81+ assert False, "check rendering"
82+
6683 def test_protocol_with_parms(T_ProtocolDataStructures):
67- "An (event) protocol can have parameters itself (see SlowStart)"
68- assert False
84+ out = T_ProtocolDataStructures.render(protocols=[EventProtocol(name="WithParms",
85+ events=[],
86+ typedParameters=[
87+ TypedParameter(name='a_parm', type="A_Type"),
88+ TypedParameter(name='b_parm', type=int),
89+ TypedParameter(name='c_parm', type=float),
90+ TypedParameter(name='1', type=int)
91+ ])])
92+ logger.debug("\n---------- out:: ------------------------\n%s\n--------------------------------", out)
93+ assert 'parameters=' in out
94+ assert False, "check rendering"
95+
6996
7097
7198 def test_ProtocolDataStructures_in_protocol(T_Protocol, p_1e, p_2e_1i):