API
zaberStage_test.cpp
Go to the documentation of this file.
1 /** \file zaberStage_test.cpp
2  * \brief Catch2 tests for the zaberStage in the zaberLowLevel app
3  * \author Jared R. Males (jaredmales@gmail.com)
4  *
5  * History:
6  */
7 #include "../../../tests/catch2/catch.hpp"
8 
9 #include "../zaberLowLevel.hpp"
10 
11 extern "C"
12 {
13  #include "../za_serial.c" //to allow test to compile
14 }
15 
16 using namespace MagAOX::app;
17 
18 namespace zaberStage_test
19 {
20 
21 SCENARIO( "Parsing the warnings response", "[zaberStage]" )
22 {
23  GIVEN("A valid response to the warnings query")
24  {
25  int rv;
26 
27  WHEN("Valid response, no warnings")
28  {
29  zaberLowLevel zll;
30 
31  zaberStage<zaberLowLevel> zstg(&zll);
32 
33  std::string tstr = "00";
34 
35  rv = zstg.parseWarnings(tstr);
36 
37  REQUIRE(rv == 0);
38  REQUIRE(zstg.warningState() == false);
39  REQUIRE(zstg.warnFD() == false);
40  REQUIRE(zstg.warnFQ() == false);
41  REQUIRE(zstg.warnFS() == false);
42  REQUIRE(zstg.warnFT() == false);
43  REQUIRE(zstg.warnFB() == false);
44  REQUIRE(zstg.warnFP() == false);
45  REQUIRE(zstg.warnFE() == false);
46  REQUIRE(zstg.warnWH() == false);
47  REQUIRE(zstg.warnWL() == false);
48  REQUIRE(zstg.warnWP() == false);
49  REQUIRE(zstg.warnWV() == false);
50  REQUIRE(zstg.warnWT() == false);
51  REQUIRE(zstg.warnWM() == false);
52  REQUIRE(zstg.warnWR() == false);
53  REQUIRE(zstg.warnNC() == false);
54  REQUIRE(zstg.warnNI() == false);
55  REQUIRE(zstg.warnND() == false);
56  REQUIRE(zstg.warnNU() == false);
57  REQUIRE(zstg.warnNJ() == false);
58  REQUIRE(zstg.warnUNK()== false);
59  }
60 
61  WHEN("Valid response, one warning")
62  {
63  zaberLowLevel zll;
64 
65  zaberStage<zaberLowLevel> zstg(&zll);
66 
67  std::string tstr = "01 WR";
68 
69  rv = zstg.parseWarnings(tstr);
70 
71  REQUIRE(rv == 0);
72  REQUIRE(zstg.warningState() == true);
73  REQUIRE(zstg.warnFD() == false);
74  REQUIRE(zstg.warnFQ() == false);
75  REQUIRE(zstg.warnFS() == false);
76  REQUIRE(zstg.warnFT() == false);
77  REQUIRE(zstg.warnFB() == false);
78  REQUIRE(zstg.warnFP() == false);
79  REQUIRE(zstg.warnFE() == false);
80  REQUIRE(zstg.warnWH() == false);
81  REQUIRE(zstg.warnWL() == false);
82  REQUIRE(zstg.warnWP() == false);
83  REQUIRE(zstg.warnWV() == false);
84  REQUIRE(zstg.warnWT() == false);
85  REQUIRE(zstg.warnWM() == false);
86  REQUIRE(zstg.warnWR() == true);
87  REQUIRE(zstg.warnNC() == false);
88  REQUIRE(zstg.warnNI() == false);
89  REQUIRE(zstg.warnND() == false);
90  REQUIRE(zstg.warnNU() == false);
91  REQUIRE(zstg.warnNJ() == false);
92  REQUIRE(zstg.warnUNK()== false);
93  }
94 
95  WHEN("Valid response, five warnings")
96  {
97  zaberLowLevel zll;
98 
99  zaberStage<zaberLowLevel> zstg(&zll);
100 
101  std::string tstr = "05 FD FQ FS FT FB";
102 
103  rv = zstg.parseWarnings(tstr);
104 
105  REQUIRE(rv == 0);
106  REQUIRE(zstg.warningState() == true);
107  REQUIRE(zstg.warnFD() == true);
108  REQUIRE(zstg.warnFQ() == true);
109  REQUIRE(zstg.warnFS() == true);
110  REQUIRE(zstg.warnFT() == true);
111  REQUIRE(zstg.warnFB() == true);
112  REQUIRE(zstg.warnFP() == false);
113  REQUIRE(zstg.warnFE() == false);
114  REQUIRE(zstg.warnWH() == false);
115  REQUIRE(zstg.warnWL() == false);
116  REQUIRE(zstg.warnWP() == false);
117  REQUIRE(zstg.warnWV() == false);
118  REQUIRE(zstg.warnWT() == false);
119  REQUIRE(zstg.warnWM() == false);
120  REQUIRE(zstg.warnWR() == false);
121  REQUIRE(zstg.warnNC() == false);
122  REQUIRE(zstg.warnNI() == false);
123  REQUIRE(zstg.warnND() == false);
124  REQUIRE(zstg.warnNU() == false);
125  REQUIRE(zstg.warnNJ() == false);
126  REQUIRE(zstg.warnUNK()== false);
127  }
128 
129  WHEN("Valid response, ten warnings")
130  {
131  zaberLowLevel zll;
132 
133  zaberStage<zaberLowLevel> zstg(&zll);
134 
135  std::string tstr = "10 FP FE WH WL WP WV WT WM WR NC";
136 
137  rv = zstg.parseWarnings(tstr);
138 
139  REQUIRE(rv == 0);
140  REQUIRE(zstg.warningState() == true);
141  REQUIRE(zstg.warnFD() == false);
142  REQUIRE(zstg.warnFQ() == false);
143  REQUIRE(zstg.warnFS() == false);
144  REQUIRE(zstg.warnFT() == false);
145  REQUIRE(zstg.warnFB() == false);
146  REQUIRE(zstg.warnFP() == true);
147  REQUIRE(zstg.warnFE() == true);
148  REQUIRE(zstg.warnWH() == true);
149  REQUIRE(zstg.warnWL() == true);
150  REQUIRE(zstg.warnWP() == true);
151  REQUIRE(zstg.warnWV() == true);
152  REQUIRE(zstg.warnWT() == true);
153  REQUIRE(zstg.warnWM() == true);
154  REQUIRE(zstg.warnWR() == true);
155  REQUIRE(zstg.warnNC() == true);
156  REQUIRE(zstg.warnNI() == false);
157  REQUIRE(zstg.warnND() == false);
158  REQUIRE(zstg.warnNU() == false);
159  REQUIRE(zstg.warnNJ() == false);
160  REQUIRE(zstg.warnUNK()== false);
161  }
162  WHEN("Valid response, 2 warnings")
163  {
164  zaberLowLevel zll;
165 
166  zaberStage<zaberLowLevel> zstg(&zll);
167 
168  std::string tstr = "02 NI ND";
169 
170  rv = zstg.parseWarnings(tstr);
171 
172  REQUIRE(rv == 0);
173  REQUIRE(zstg.warningState() == true);
174  REQUIRE(zstg.warnFD() == false);
175  REQUIRE(zstg.warnFQ() == false);
176  REQUIRE(zstg.warnFS() == false);
177  REQUIRE(zstg.warnFT() == false);
178  REQUIRE(zstg.warnFB() == false);
179  REQUIRE(zstg.warnFP() == false);
180  REQUIRE(zstg.warnFE() == false);
181  REQUIRE(zstg.warnWH() == false);
182  REQUIRE(zstg.warnWL() == false);
183  REQUIRE(zstg.warnWP() == false);
184  REQUIRE(zstg.warnWV() == false);
185  REQUIRE(zstg.warnWT() == false);
186  REQUIRE(zstg.warnWM() == false);
187  REQUIRE(zstg.warnWR() == false);
188  REQUIRE(zstg.warnNC() == false);
189  REQUIRE(zstg.warnNI() == true);
190  REQUIRE(zstg.warnND() == true);
191  REQUIRE(zstg.warnNU() == false);
192  REQUIRE(zstg.warnNJ() == false);
193  REQUIRE(zstg.warnUNK()== false);
194  }
195  WHEN("Valid response, 3 warnings")
196  {
197  zaberLowLevel zll;
198 
199  zaberStage<zaberLowLevel> zstg(&zll);
200 
201 
202  std::string tstr = "03 NU NJ UN";
203 
204  rv = zstg.parseWarnings(tstr);
205 
206  REQUIRE(rv == 0);
207  REQUIRE(zstg.warningState() == true);
208  REQUIRE(zstg.warnFD() == false);
209  REQUIRE(zstg.warnFQ() == false);
210  REQUIRE(zstg.warnFS() == false);
211  REQUIRE(zstg.warnFT() == false);
212  REQUIRE(zstg.warnFB() == false);
213  REQUIRE(zstg.warnFP() == false);
214  REQUIRE(zstg.warnFE() == false);
215  REQUIRE(zstg.warnWH() == false);
216  REQUIRE(zstg.warnWL() == false);
217  REQUIRE(zstg.warnWP() == false);
218  REQUIRE(zstg.warnWV() == false);
219  REQUIRE(zstg.warnWT() == false);
220  REQUIRE(zstg.warnWM() == false);
221  REQUIRE(zstg.warnWR() == false);
222  REQUIRE(zstg.warnNC() == false);
223  REQUIRE(zstg.warnNI() == false);
224  REQUIRE(zstg.warnND() == false);
225  REQUIRE(zstg.warnNU() == true);
226  REQUIRE(zstg.warnNJ() == true);
227  REQUIRE(zstg.warnUNK()== true);
228  }
229  }
230 }
231 
232 } //namespace zaberStage_test
#define GIVEN(desc)
Definition: catch.hpp:17763
#define WHEN(desc)
Definition: catch.hpp:17765
#define REQUIRE(...)
Definition: catch.hpp:17676
A class to manage the details of one stage in a Zaber system.
Definition: zaberStage.hpp:29
int parseWarnings(std::string &response)
Parse the warning response from the device.
bool warningState()
Get the warning state.
Definition: zaberStage.hpp:414
SCENARIO("Parsing the warnings response", "[zaberStage]")