Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Révision | 719f51fc5c87629725514f8b5caf3a2e81c32c3c (tree) |
---|---|
l'heure | 2023-09-28 23:51:22 |
Auteur | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
ASIS/BUSY: Protocol-with-parms: draft rendering
@@ -16,7 +16,6 @@ | ||
16 | 16 | pytst/writers/RPy/test_1_EventIndexes.py \ |
17 | 17 | # |
18 | 18 | rPY_CURRENT = \ |
19 | - pytst/aigr/test_2b_protocol.py \ | |
20 | 19 | pytst/writers/RPy/test_2_ProtocolDataStructures.py \ |
21 | 20 | |
22 | 21 | # |
@@ -7,19 +7,23 @@ | ||
7 | 7 | |
8 | 8 | {#GAM Note: do not put {% block ... inside the loop - does not work#} |
9 | 9 | |
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? | |
14 | 18 | {% 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)}} | |
17 | 21 | events = []) {#- filled in below -- see design notes // limitation #} |
18 | 22 | |
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) }} )) | |
23 | 27 | {% endfor %} {#- event #} |
24 | 28 | |
25 | 29 | {% endfor %} {# protocols #} |
@@ -12,8 +12,6 @@ | ||
12 | 12 | |
13 | 13 | protoData_PreFix = "cc_P_" #Keep in sync with implementation |
14 | 14 | |
15 | -@pytest.mark.skip("XXX ToDo:: The MockProtocol should go") | |
16 | -def test_ToDo(): pass | |
17 | 15 | |
18 | 16 | @pytest.fixture |
19 | 17 | def p_1e(): |
@@ -62,10 +60,39 @@ | ||
62 | 60 | |
63 | 61 | assert_marker(protoData_PreFix + 'P2', out, 1+2*2) |
64 | 62 | |
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 | + | |
66 | 83 | 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 | + | |
69 | 96 | |
70 | 97 | |
71 | 98 | def test_ProtocolDataStructures_in_protocol(T_Protocol, p_1e, p_2e_1i): |