ChimeraTK-ApplicationCore 04.06.00
Loading...
Searching...
No Matches
testPythonReadAnyGroup.py
Go to the documentation of this file.
1import sys
2import os
3import os.path
4import numpy as np
5import traceback
6
7# fmt: off
8# Hack to insert the python path for the locally compiled module in the
9# test script
10sys.path.insert(0, os.path.abspath(os.path.join(os.curdir, "..")))
11import PyApplicationCore as ac # NOQA
12from PyApplicationCore import DataType as dt # NOQA
13# fmt: on
14
15
16class ReadAnyGroupMod1(ac.ApplicationModule):
17
18 def __init__(self, owner, name, description):
19 super().__init__(owner, name, description)
20
21 self.input1 = ac.ScalarPushInput(dt.int32, self, "in1", "", "")
22 self.input2 = ac.ArrayPushInput(dt.int32, self, "in2", "", 4, "")
23 self.input3 = ac.ScalarPushInput(dt.int32, self, "in3", "", "")
24 self.output = ac.ScalarOutput(dt.string, self, "output", "", "")
25 self.testError = ac.ScalarOutput(dt.string, self, "testError", "", "")
26
27 def mainLoop(self):
28 try:
29 # Manually create a ReadAnyGroup from two of the three inputs
30 foo = [self.input1, self.input2]
31 group = ac.ReadAnyGroup()
32 group.add(self.input1)
33 group.add(self.input2)
34 group.finalise()
35
36 id = group.readAny()
37 assert id == self.input1.getId()
38 assert self.input1.get() == 12
39 self.output.setAndWrite("step1")
40
41 id = group.readAny()
42 assert id == self.input2.getId()
43 assert (self.input2.get() == [24, 24, 24, 24]).all()
44 self.output.setAndWrite("step2")
45
46 assert self.input3.readAndGet() == 36
47 assert not group.readAnyNonBlocking().isValid()
48
49 self.output.setAndWrite("step3")
50
51 group.readUntil(self.input1)
52 self.output.setAndWrite("step4")
53
54 group.readUntil(self.input2)
55 self.output.setAndWrite("step5")
56
57 group.readUntilAll(*foo)
58 self.output.setAndWrite("step6")
59
60 group.readUntil(self.input1.getId())
61 self.output.setAndWrite("step7")
62
63 except AssertionError as e:
64 self.testError.setAndWrite("\n".join(traceback.format_exception(e)))
65 self.output.setAndWrite("error")
66
67
68ac.app.readAnyGroupMod1 = ReadAnyGroupMod1(ac.app, "UserModule", "Test Module for ReadAnyGroup")
__init__(self, owner, name, description)
void mainLoop() override