• 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évision1cfd23275f8624db2017ae7eaf94690020c909eb (tree)
l'heure2023-09-29 01:04:14
AuteurAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Message de Log

ASIS/BUSY: Protocol-with-parms: rendering with types seems oke - more tests needed (and a bit of design

Change Summary

Modification

diff -r 719f51fc5c87 -r 1cfd23275f86 castle/writers/RPy/templates/ProtocolDataStructures.jinja2
--- a/castle/writers/RPy/templates/ProtocolDataStructures.jinja2 Thu Sep 28 16:51:22 2023 +0200
+++ b/castle/writers/RPy/templates/ProtocolDataStructures.jinja2 Thu Sep 28 18:04:14 2023 +0200
@@ -7,14 +7,22 @@
77
88 {#GAM Note: do not put {% block ... inside the loop - does not work#}
99
10+{%- macro Str_or_Type(t) -%}
11+ {%- if t is string -%}
12+ "{{t}}"
13+ {%- else -%}
14+ {{t.__name__}}
15+ {%- endif -%}
16+{%- endmacro -%}
17+
1018 {% for proto in protocols %}
1119 {{- m.ProtocolName(proto.name) }} = buildin.CC_B_Protocol(name="{{ proto.name }}",
1220 {% if proto.typedParameters %}
1321 parameters=(
14- {%- for parm in proto.typedParameters -%}
15- ({{ parm.name}} , {{parm.type}}),
16- {%- endfor -%}
17- ), # XXX ToDo: parms: (seq of] typle, namedType, strings?
22+ {% for parm in proto.typedParameters %}
23+ ('{{ parm.name}}' , {{ Str_or_Type(parm.type) }}),
24+ {% endfor %}
25+ ), ### XXX ToDo: parms: tuple, namedType, strings, ... (see event -- use macro?)
1826 {% endif %}
1927 kind=buildin.{{proto.kind}},
2028 inherit_from={{m.ProtocolName(proto.based_on.name)}}
diff -r 719f51fc5c87 -r 1cfd23275f86 pytst/writers/RPy/test_2_ProtocolDataStructures.py
--- a/pytst/writers/RPy/test_2_ProtocolDataStructures.py Thu Sep 28 16:51:22 2023 +0200
+++ b/pytst/writers/RPy/test_2_ProtocolDataStructures.py Thu Sep 28 18:04:14 2023 +0200
@@ -72,28 +72,42 @@
7272 typedParameters=[])])
7373 assert 'parameters' not in out
7474
75+
7576 def test_protocol_with_1parm(T_ProtocolDataStructures):
7677 out = T_ProtocolDataStructures.render(protocols=[EventProtocol(name="With_1_Parm",
7778 events=[],
7879 typedParameters=[TypedParameter(name='a_parm', type="A_Type")])])
7980 logger.debug("\n---------- out:: ------------------------\n%s\n--------------------------------", out)
80- assert 'parameters=' in out
81- assert False, "check rendering"
8281
82+ assert 'parameters=(' in out
83+ assert 'a_parm' in out
84+ assert 'A_T' in out
85+
86+sQUOTE="'"
87+dQUOTE='"'
8388 def test_protocol_with_parms(T_ProtocolDataStructures):
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- ])])
89+ p= EventProtocol(name="WithParms",
90+ events=[],
91+ typedParameters=[
92+ TypedParameter(name='a_parm', type="A_Type"),
93+ TypedParameter(name='b_parm', type=int),
94+ TypedParameter(name='c_parm', type=float),
95+ TypedParameter(name='foo', type=int)
96+ ])
97+ out = T_ProtocolDataStructures.render(protocols=[p])
9298 logger.debug("\n---------- out:: ------------------------\n%s\n--------------------------------", out)
93- assert 'parameters=' in out
94- assert False, "check rendering"
99+ assert 'parameters=(' in out
100+ assert "'a_parm'" in out
101+ for parm in p.typedParameters:
102+ assert sQUOTE + parm.name + sQUOTE in out
103+ type_val = (dQUOTE + parm.type + dQUOTE) if isinstance(parm.type, str) else parm.type.__name__
104+ assert type_val in out
95105
96106
107+@pytest.mark.skip("Later: assert on types of the TypedParameter -- see note in ``ProtocolDataStructures.jinja2``")
108+def test_todo_with_parms():
109+ assert False
110+
97111
98112 def test_ProtocolDataStructures_in_protocol(T_Protocol, p_1e, p_2e_1i):
99113 out = T_Protocol.render(protocols=[p_1e, p_2e_1i])