Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Révision | 59fa4cf9641095cbb58c4a0f8577b53976ca2a68 (tree) |
---|---|
l'heure | 2023-10-03 23:42:37 |
Auteur | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
Added SimpleSieve to protocol-rendering
@@ -6,15 +6,18 @@ | ||
6 | 6 | import pytest |
7 | 7 | |
8 | 8 | StartSieve = EventProtocol('StartSieve', |
9 | - events=[ | |
9 | + events=[ | |
10 | 10 | Event(name='runTo', return_type=None, typedParameters=(TypedParameter(name='max', type=int),)), |
11 | 11 | Event(name='newMax', return_type=None, typedParameters=(TypedParameter(name='max', type=int),))]) |
12 | 12 | |
13 | - | |
14 | 13 | SlowStart = EventProtocol('SlowStart', |
15 | 14 | typedParameters=(TypedParameter(name='queue_max', type=int),), |
16 | 15 | events=[ |
17 | - Event(name='setMax', return_type=None, typedParameters=(TypedParameter(name='queue_max', type=int),))], | |
18 | - ) | |
16 | + Event(name='setMax', return_type=None, typedParameters=(TypedParameter(name='queue_max', type=int),))]) | |
17 | + | |
18 | +SimpleSieve = EventProtocol('SimpleSieve', | |
19 | + based_on=SlowStart, # parm=1 | |
20 | + events=[ | |
21 | + Event(name='input', return_type=None, typedParameters=(TypedParameter(name='try', type=int),))]) | |
19 | 22 | |
20 | 23 |
@@ -0,0 +1,28 @@ | ||
1 | +# -*- python -*- | |
2 | +# Generated (R)Python file | |
3 | +# (C) Albert Mietus, 2023. Part of Castle/CCastle project | |
4 | + | |
5 | +#### | |
6 | +from CC import buildin | |
7 | +from CC import base | |
8 | + | |
9 | +#Put the Castle/generated imports here | |
10 | + | |
11 | + | |
12 | + | |
13 | +## | |
14 | +## EventIndexes (All 1 events of SimpleSieve) | |
15 | +## | |
16 | + | |
17 | +CC_P_SimpleSieve_input = 1 | |
18 | + | |
19 | + | |
20 | +cc_P_SimpleSieve = buildin.CC_B_Protocol(name="SimpleSieve", | |
21 | + kind=buildin.ProtocolKind.Event, | |
22 | + inherit_from=cc_P_SlowStart, | |
23 | + events=[]) | |
24 | + | |
25 | +cc_P_SimpleSieve.events.append(buildin.CC_B_P_EventID(name="input", | |
26 | + seqNo=CC_P_SimpleSieve_input, | |
27 | + part_of=cc_P_SimpleSieve)) | |
28 | + |
@@ -42,7 +42,7 @@ | ||
42 | 42 | class TstDoubles(): |
43 | 43 | _top = Path('TestDoubles') |
44 | 44 | _ref = Path('reference') |
45 | - #_ref = Path('_generated') #Not used anymore | |
45 | + _gen = Path('_generated') | |
46 | 46 | |
47 | 47 | def __init__(self, base_name): |
48 | 48 | self.base_name = Path(base_name) |
@@ -51,15 +51,27 @@ | ||
51 | 51 | def ref_file(self, ext='.rpy'): |
52 | 52 | return self._top / self._ref / self.base_name.with_suffix(ext) |
53 | 53 | |
54 | - #@property | |
55 | - #def gen_file(self, ext='.rpy'): | |
56 | - # return self._top / self._gen / self.base_name.with_suffix(ext) | |
54 | + @property | |
55 | + def gen_file(self, ext='.rpy'): | |
56 | + return self._top / self._gen / self.base_name.with_suffix(ext) | |
57 | 57 | |
58 | 58 | |
59 | 59 | @pytest.fixture |
60 | 60 | def generatedProtocol_verifier(T_Protocol): |
61 | - def matcher(aigr_mock, td): | |
61 | + def matcher(aigr_mock, td, save_file=False): | |
62 | 62 | out = T_Protocol.render(protocols=(aigr_mock,)) |
63 | + logger.debug("---------- out: (%s)----------\n%s", aigr_mock, out) | |
64 | + if save_file: | |
65 | + with open(td.gen_file, 'w') as f: | |
66 | + f.write(out) | |
67 | + logger.info("Saved rendered protocol in: %s", td.gen_file) | |
63 | 68 | ref = open(td.ref_file).read() |
64 | - assert out == ref | |
69 | + logger.debug("---------- ref: ----------\n%s\n==========================", out) | |
70 | + | |
71 | + #assert line by line: gives better feedback when they do not match | |
72 | + for n, (o,r) in enumerate(zip(out.splitlines(keepends=True), ref.splitlines(keepends=True), strict=True)): | |
73 | + assert o == r, "line %s does not match: >>%s<< != <<%s>>" % (n, o.strip('\n'), r.strip('\n')) | |
74 | + assert out == ref #Should be needed | |
65 | 75 | return matcher |
76 | + | |
77 | + |
@@ -13,9 +13,6 @@ | ||
13 | 13 | def test_02_SlowStart(generatedProtocol_verifier): |
14 | 14 | generatedProtocol_verifier(aigr_mock=Sieve.SlowStart, td=TstDoubles('protocols/SlowStart')) |
15 | 15 | |
16 | - | |
16 | +def test_03_SimpleSieve(generatedProtocol_verifier): | |
17 | + generatedProtocol_verifier(aigr_mock=Sieve.SimpleSieve, td=TstDoubles('protocols/SimpleSieve'), save_file=True) | |
17 | 18 | |
18 | -@pytest.mark.skip("After SlowStart") | |
19 | -def test_03_SimpleSieve(generatedProtocol_verifier): | |
20 | - generatedProtocol_verifier(aigr_mock=Sieve.SimpleSieve, td=TstDoubles('protocols/SimpleSieve')) | |
21 | - |