19#define THM1176_PROMPT_TIME 10
20#define THM1176_BOOT_N_SCAN_TIME 15000
21#define THM1176_CONNECT_TIME 5000
22#define THM1176_CHANGE_PARM_TIME 1000
23#define THM1176_RESET_TIME 1000
24#define THM1176_MEASURE_TIME 2000
33 std::string l_Space = (
"" == Prompt) ?
"" :
" ";
34 std::string l_Message =
">>> " + Prompt + l_Space +
"(Will continue in " + std::to_string(
THM1176_PROMPT_TIME) +
" seconds) <<<";
36 QWARN(l_Message.c_str());
53 QList<QVariant> m_Arguments;
77 bool m_UseCalibration;
84 void initTestCase(
void);
87 void cleanupTestCase(
void);
90 void TestGetEqualsInitialNotify(
void);
93 void TestSetEqualsNotifyAndGet(
void);
96 void TestNotifyAndGetAfterReset(
void);
99 void TestGetAfterSetError(
void);
102 void TestSetTriggerDuringContinuousMeasurement(
void);
105 void TestSetAndGetAfterDisconnect(
void);
125void THM1176IM_Test03_Parameters::initTestCase(
void)
127 QList<QVariant> m_Arguments;
134 QSignalSpy l_NotifyCurrentInstrumentSpy(&
Manager, SIGNAL(NotifyCurrentInstrument(
tResourceName)));
136 QSignalSpy l_NotifyIdentificationSpy(&
Manager, SIGNAL(NotifyIdentification(
sIdentifier)));
137 QSignalSpy l_NotifyRangeListSpy(&
Manager, SIGNAL(NotifyRangeList(
CFluxList)));
147 QSignalSpy l_NotifySleepParmSpy(&
Manager, SIGNAL(NotifySleepParm(
bool)));
158 QCOMPARE(l_NotifyInstrumentListSpy.count(), 1);
159 m_Arguments = l_NotifyInstrumentListSpy.takeFirst();
160 m_ResourceList = qvariant_cast<CResourceList>(m_Arguments.at(0));
161 QCOMPARE(m_ResourceList.size(), 1ul);
164 Manager.SetCurrentInstrument(m_ResourceList[0]);
168 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
169 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
170 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
174 QCOMPARE(l_NotifyCurrentInstrumentSpy.count(), 1);
175 m_Arguments = l_NotifyCurrentInstrumentSpy.takeFirst();
176 m_THM1176Selected = qvariant_cast<tResourceName>(m_Arguments.at(0));
177 QCOMPARE(m_THM1176Selected, m_ResourceList[0]);
180 QCOMPARE(l_NotifyIdentificationSpy.count(), 1);
181 m_Arguments = l_NotifyIdentificationSpy.takeFirst();
182 m_Identification = qvariant_cast<sIdentifier>(m_Arguments.at(0));
185 QCOMPARE(l_NotifyRangeListSpy.count(), 1);
186 m_Arguments = l_NotifyRangeListSpy.takeFirst();
187 m_RangeList = qvariant_cast<CFluxList>(m_Arguments.at(0));
188 QVERIFY(!m_RangeList.empty());
190 QCOMPARE(l_NotifyUnitsListSpy.count(), 1);
191 m_Arguments = l_NotifyUnitsListSpy.takeFirst();
192 m_UnitsList = qvariant_cast<CTHM1176UnitsList>(m_Arguments.at(0));
193 QVERIFY(!m_UnitsList.empty());
195 QCOMPARE(l_NotifyDivisorListSpy.count(), 1);
196 m_Arguments = l_NotifyDivisorListSpy.takeFirst();
197 m_DivisorList = qvariant_cast<CDivisorList>(m_Arguments.at(0));
198 QVERIFY(!m_DivisorList.empty());
200 QCOMPARE(l_NotifyAveragingParmBoundsSpy.count(), 1);
201 m_Arguments = l_NotifyAveragingParmBoundsSpy.takeFirst();
202 m_AveragingBounds = qvariant_cast<sAveraging<sBoundedParm>>(m_Arguments.at(0));
206 QCOMPARE(l_NotifyTriggerParmBoundsSpy.count(), 1);
207 m_Arguments = l_NotifyTriggerParmBoundsSpy.takeFirst();
208 m_TriggerBounds = qvariant_cast<sInputTrigger<sBoundedParm>>(m_Arguments.at(0));
214 QCOMPARE(l_NotifyRangeParmBoundsSpy.count(), 1);
215 m_Arguments = l_NotifyRangeParmBoundsSpy.takeFirst();
216 m_RangeBounds = qvariant_cast<sRange<sBoundedParm>>(m_Arguments.at(0));
221 QCOMPARE(l_NotifyAveragingParmsSpy.count(), 1);
222 m_Arguments = l_NotifyAveragingParmsSpy.takeFirst();
223 m_AveragingParms = qvariant_cast<sAveraging<uParm>>(m_Arguments.at(0));
224 QVERIFY(m_AveragingParms.
NoPoints > 0);
226 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 1);
227 m_Arguments = l_NotifyTriggerParmsSpy.takeFirst();
228 m_Trigger = qvariant_cast<sInputTrigger<uParm>>(m_Arguments.at(0));
231 QCOMPARE(l_NotifyOutputSelectSpy.count(), 1);
232 m_Arguments = l_NotifyOutputSelectSpy.takeFirst();
233 m_OutputSelect = qvariant_cast<sArbitraryMeasurements>(m_Arguments.at(0));
235 QCOMPARE(l_NotifySleepParmSpy.count(), 1);
236 m_Arguments = l_NotifySleepParmSpy.takeFirst();
237 m_SleepParm = qvariant_cast<bool>(m_Arguments.at(0));
239 QCOMPARE(l_NotifyUnitsSpy.count(), 1);
240 m_Arguments = l_NotifyUnitsSpy.takeFirst();
241 m_Units = qvariant_cast<eTHM1176Units>(m_Arguments.at(0));
243 QCOMPARE(l_NotifyRangeParmsSpy.count(), 1);
244 m_Arguments = l_NotifyRangeParmsSpy.takeFirst();
245 m_RangeParms = qvariant_cast<sRange<uParm>>(m_Arguments.at(0));
247 QCOMPARE(l_NotifyCommFormatSpy.count(), 1);
248 m_Arguments = l_NotifyCommFormatSpy.takeFirst();
249 m_CommFormat = qvariant_cast<eCommunicationFormat>(m_Arguments.at(0));
251 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
253 std::cout <<
"- Connected to " << m_Identification.
Model <<
", S/N " << m_Identification.
SerialNumber << std::endl;
257void THM1176IM_Test03_Parameters::cleanupTestCase(
void)
264void THM1176IM_Test03_Parameters::TestGetEqualsInitialNotify(
void)
268 QVERIFY(l_ResourceList_temp == m_ResourceList);
270 QVERIFY(l_THM1176Selected_temp == m_THM1176Selected);
272 QVERIFY(l_OperatingMode_temp == m_OperatingMode);
274 QVERIFY(l_Measurement_temp == m_Measurement);
276 QVERIFY(l_LatestErrors_temp == m_LatestErrors);
280 QVERIFY(l_Identification_temp == m_Identification);
282 QVERIFY(l_RangeList_temp == m_RangeList);
284 QVERIFY(l_UnitsList_temp == m_UnitsList);
286 QVERIFY(l_DivisorList_temp == m_DivisorList);
288 QVERIFY(l_AveragingBounds_temp == m_AveragingBounds);
290 QVERIFY(l_TriggerBounds_temp == m_TriggerBounds);
292 QVERIFY(l_RangeBounds_temp == m_RangeBounds);
296 QVERIFY(l_AveragingParms_temp == m_AveragingParms);
298 QVERIFY(l_Trigger_temp == m_Trigger);
300 QVERIFY(l_OutputSelect_temp == m_OutputSelect);
302 QVERIFY(l_SleepParm_temp == m_SleepParm);
304 QVERIFY(l_Units_temp == m_Units);
306 QVERIFY(l_RangeParms_temp == m_RangeParms);
308 QVERIFY(l_CommFormat_temp == m_CommFormat);
314void THM1176IM_Test03_Parameters::TestSetEqualsNotifyAndGet(
void)
319 QSignalSpy l_NotifyAveragingParmsSpy(&
Manager, SIGNAL(NotifyAveragingParms(sAveraging<uParm>)));
320 QSignalSpy l_NotifyTriggerParmsSpy(&
Manager, SIGNAL(NotifyTriggerParms(sInputTrigger<uParm>)));
321 QSignalSpy l_NotifyOutputSelectSpy(&
Manager, SIGNAL(NotifyOutputSelect(sArbitraryMeasurements)));
322 QSignalSpy l_NotifySleepParmSpy(&
Manager, SIGNAL(NotifySleepParm(
bool)));
324 QSignalSpy l_NotifyRangeParmsSpy(&
Manager, SIGNAL(NotifyRangeParms(sRange<uParm>)));
327 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
333 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
334 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
335 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
337 if (l_NotifyOperatingModeSpy.count() <= 0)
340 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
342 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
343 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
347 l_NotifyAveragingParmsSpy.clear();
348 l_NotifyTriggerParmsSpy.clear();
349 l_NotifyOutputSelectSpy.clear();
350 l_NotifySleepParmSpy.clear();
351 l_NotifyUnitsSpy.clear();
352 l_NotifyRangeParmsSpy.clear();
353 l_NotifyCommFormatSpy.clear();
356 sAveraging<uParm> l_AveragingParms_temp = { 123 };
360 QCOMPARE(l_NotifyAveragingParmsSpy.count(), 1);
361 m_Arguments = l_NotifyAveragingParmsSpy.takeFirst();
362 m_AveragingParms = qvariant_cast<sAveraging<uParm>>(m_Arguments.at(0));
363 QVERIFY(l_AveragingParms_temp == m_AveragingParms);
366 QVERIFY(l_AveragingParms_temp == m_AveragingParms);
368 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
375 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 1);
376 m_Arguments = l_NotifyTriggerParmsSpy.takeFirst();
377 m_Trigger = qvariant_cast<sInputTrigger<uParm>>(m_Arguments.at(0));
378 QVERIFY(l_Trigger_temp == m_Trigger);
381 QVERIFY(l_Trigger_temp == m_Trigger);
383 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
386 sArbitraryMeasurements l_OutputSelect_temp = {
false,
true,
false,
true,
false, 123 };
390 QCOMPARE(l_NotifyOutputSelectSpy.count(), 1);
391 m_Arguments = l_NotifyOutputSelectSpy.takeFirst();
392 m_OutputSelect = qvariant_cast<sArbitraryMeasurements>(m_Arguments.at(0));
393 QVERIFY(l_OutputSelect_temp == m_OutputSelect);
396 QVERIFY(l_OutputSelect_temp == m_OutputSelect);
398 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
401 bool l_SleepParm_temp = !m_SleepParm;
405 QCOMPARE(l_NotifySleepParmSpy.count(), 1);
406 m_Arguments = l_NotifySleepParmSpy.takeFirst();
407 m_SleepParm = qvariant_cast<bool>(m_Arguments.at(0));
408 QVERIFY(l_SleepParm_temp == m_SleepParm);
411 QVERIFY(l_SleepParm_temp == m_SleepParm);
413 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
420 QCOMPARE(l_NotifyUnitsSpy.count(), 1);
421 m_Arguments = l_NotifyUnitsSpy.takeFirst();
422 m_Units = qvariant_cast<eTHM1176Units>(m_Arguments.at(0));
423 QVERIFY(l_Units_temp == m_Units);
426 QVERIFY(l_Units_temp == m_Units);
428 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
431 sRange<uParm> l_RangeParms_temp = { !m_RangeParms.Auto, m_RangeList.front()};
435 QCOMPARE(l_NotifyRangeParmsSpy.count(), 1);
436 m_Arguments = l_NotifyRangeParmsSpy.takeFirst();
437 m_RangeParms = qvariant_cast<sRange<uParm>>(m_Arguments.at(0));
438 QVERIFY(l_RangeParms_temp == m_RangeParms);
441 QVERIFY(l_RangeParms_temp == m_RangeParms);
443 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
450 QCOMPARE(l_NotifyCommFormatSpy.count(), 1);
451 m_Arguments = l_NotifyCommFormatSpy.takeFirst();
452 m_CommFormat = qvariant_cast<eCommunicationFormat>(m_Arguments.at(0));
453 QVERIFY(l_CommFormat_temp == m_CommFormat);
456 QVERIFY(l_CommFormat_temp == m_CommFormat);
458 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
464void THM1176IM_Test03_Parameters::TestNotifyAndGetAfterReset(
void)
469 QSignalSpy l_NotifyAveragingParmsSpy(&
Manager, SIGNAL(NotifyAveragingParms(sAveraging<uParm>)));
470 QSignalSpy l_NotifyTriggerParmsSpy(&
Manager, SIGNAL(NotifyTriggerParms(sInputTrigger<uParm>)));
471 QSignalSpy l_NotifyOutputSelectSpy(&
Manager, SIGNAL(NotifyOutputSelect(sArbitraryMeasurements)));
472 QSignalSpy l_NotifySleepParmSpy(&
Manager, SIGNAL(NotifySleepParm(
bool)));
474 QSignalSpy l_NotifyRangeParmsSpy(&
Manager, SIGNAL(NotifyRangeParms(sRange<uParm>)));
477 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
483 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
484 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
485 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
487 if (l_NotifyOperatingModeSpy.count() <= 0)
490 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
492 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
493 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
497 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
500 sAveraging<uParm> l_AveragingParms_temp = { 1 };
501 if (l_AveragingParms_temp != m_AveragingParms)
503 QCOMPARE(l_NotifyAveragingParmsSpy.count(), 1);
504 m_Arguments = l_NotifyAveragingParmsSpy.takeFirst();
505 m_AveragingParms = qvariant_cast<sAveraging<uParm>>(m_Arguments.at(0));
506 QVERIFY(l_AveragingParms_temp == m_AveragingParms);
509 QVERIFY(l_AveragingParms_temp == m_AveragingParms);
513 if (l_Trigger_temp != m_Trigger)
515 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 1);
516 m_Arguments = l_NotifyTriggerParmsSpy.takeFirst();
517 m_Trigger = qvariant_cast<sInputTrigger<uParm>>(m_Arguments.at(0));
518 QVERIFY(l_Trigger_temp == m_Trigger);
521 QVERIFY(l_Trigger_temp == m_Trigger);
524 sArbitraryMeasurements l_OutputSelect_temp = {
true,
true,
true,
true,
true, 1 };
525 if (l_OutputSelect_temp != m_OutputSelect)
527 QCOMPARE(l_NotifyOutputSelectSpy.count(), 1);
528 m_Arguments = l_NotifyOutputSelectSpy.takeFirst();
529 m_OutputSelect = qvariant_cast<sArbitraryMeasurements>(m_Arguments.at(0));
530 QVERIFY(l_OutputSelect_temp == m_OutputSelect);
533 QVERIFY(l_OutputSelect_temp == m_OutputSelect);
536 bool l_SleepParm_temp =
false;
537 if (l_SleepParm_temp != m_SleepParm)
539 QCOMPARE(l_NotifySleepParmSpy.count(), 1);
540 m_Arguments = l_NotifySleepParmSpy.takeFirst();
541 m_SleepParm = qvariant_cast<bool>(m_Arguments.at(0));
542 QVERIFY(l_SleepParm_temp == m_SleepParm);
545 QVERIFY(l_SleepParm_temp == m_SleepParm);
549 if (l_Units_temp != m_Units)
551 QCOMPARE(l_NotifyUnitsSpy.count(), 1);
552 m_Arguments = l_NotifyUnitsSpy.takeFirst();
553 m_Units = qvariant_cast<eTHM1176Units>(m_Arguments.at(0));
554 QVERIFY(l_Units_temp == m_Units);
557 QVERIFY(l_Units_temp == m_Units);
560 sRange<uParm> l_RangeParms_temp = {
true, m_RangeList.back()};
561 if (l_RangeParms_temp != m_RangeParms)
563 QCOMPARE(l_NotifyRangeParmsSpy.count(), 1);
564 m_Arguments = l_NotifyRangeParmsSpy.takeFirst();
565 m_RangeParms = qvariant_cast<sRange<uParm>>(m_Arguments.at(0));
566 QVERIFY(l_RangeParms_temp == m_RangeParms);
569 QVERIFY(l_RangeParms_temp == m_RangeParms);
573 if (l_CommFormat_temp != m_CommFormat)
575 QCOMPARE(l_NotifyCommFormatSpy.count(), 1);
576 m_Arguments = l_NotifyCommFormatSpy.takeFirst();
577 m_CommFormat = qvariant_cast<eCommunicationFormat>(m_Arguments.at(0));
578 QVERIFY(l_CommFormat_temp == m_CommFormat);
581 QVERIFY(l_CommFormat_temp == m_CommFormat);
587void THM1176IM_Test03_Parameters::TestGetAfterSetError(
void)
592 QSignalSpy l_NotifyAveragingParmsSpy(&
Manager, SIGNAL(NotifyAveragingParms(sAveraging<uParm>)));
593 QSignalSpy l_NotifyTriggerParmsSpy(&
Manager, SIGNAL(NotifyTriggerParms(sInputTrigger<uParm>)));
594 QSignalSpy l_NotifyOutputSelectSpy(&
Manager, SIGNAL(NotifyOutputSelect(sArbitraryMeasurements)));
595 QSignalSpy l_NotifySleepParmSpy(&
Manager, SIGNAL(NotifySleepParm(
bool)));
597 QSignalSpy l_NotifyRangeParmsSpy(&
Manager, SIGNAL(NotifyRangeParms(sRange<uParm>)));
600 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
606 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
607 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
608 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
610 if (l_NotifyOperatingModeSpy.count() <= 0)
613 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
615 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
616 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
620 l_NotifyAveragingParmsSpy.clear();
621 l_NotifyTriggerParmsSpy.clear();
622 l_NotifyOutputSelectSpy.clear();
623 l_NotifySleepParmSpy.clear();
624 l_NotifyUnitsSpy.clear();
625 l_NotifyRangeParmsSpy.clear();
626 l_NotifyCommFormatSpy.clear();
627 l_NotifyErrorListSpy.clear();
639 sAveraging<uParm> l_AveragingParms_temp = { 0 };
642 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
643 l_NotifyErrorListSpy.clear();
644 QCOMPARE(l_NotifyAveragingParmsSpy.count(), 0);
646 QVERIFY(l_AveragingParms_temp == m_AveragingParms);
649 l_AveragingParms_temp = {
static_cast<U16>(m_AveragingBounds.NoPoints.Max + 1) };
652 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
653 l_NotifyErrorListSpy.clear();
654 QCOMPARE(l_NotifyAveragingParmsSpy.count(), 0);
656 QVERIFY(l_AveragingParms_temp == m_AveragingParms);
662 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
663 l_NotifyErrorListSpy.clear();
664 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 0);
666 QVERIFY(l_Trigger_temp == m_Trigger);
672 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
673 l_NotifyErrorListSpy.clear();
674 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 0);
676 QVERIFY(l_Trigger_temp == m_Trigger);
682 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
683 l_NotifyErrorListSpy.clear();
684 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 0);
686 QVERIFY(l_Trigger_temp == m_Trigger);
692 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
693 l_NotifyErrorListSpy.clear();
694 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 0);
696 QVERIFY(l_Trigger_temp == m_Trigger);
699 sArbitraryMeasurements l_OutputSelect_temp = {
false,
true,
false,
true,
false, 0 };
702 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
703 l_NotifyErrorListSpy.clear();
704 QCOMPARE(l_NotifyOutputSelectSpy.count(), 0);
706 QVERIFY(l_OutputSelect_temp == m_OutputSelect);
709 l_OutputSelect_temp = {
false,
true,
false,
true,
false, 2 };
712 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
713 l_NotifyErrorListSpy.clear();
714 QCOMPARE(l_NotifyOutputSelectSpy.count(), 0);
716 QVERIFY(l_OutputSelect_temp == m_OutputSelect);
720 std::set<eTHM1176Units> l_SupportedUnits;
721 for (
auto l_pUnits = m_UnitsList.begin(); l_pUnits < m_UnitsList.end(); l_pUnits++)
722 l_SupportedUnits.insert(*l_pUnits);
726 if (l_SupportedUnits.count(m_Units) == 0)
727 l_Units_temp = m_Units;
731 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
732 l_NotifyErrorListSpy.clear();
733 QCOMPARE(l_NotifyUnitsSpy.count(), 0);
735 QVERIFY(l_Units_temp == m_Units);
738 sRange<uParm> l_RangeParms_temp = {
false, 0.};
741 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
742 l_NotifyErrorListSpy.clear();
743 QCOMPARE(l_NotifyRangeParmsSpy.count(), 0);
745 QVERIFY(l_RangeParms_temp == m_RangeParms);
751void THM1176IM_Test03_Parameters::TestSetTriggerDuringContinuousMeasurement(
void)
754 QSignalSpy l_NotifyMeasurementSpy(&
Manager, SIGNAL(NotifyMeasurement(CMeasurement)));
756 QSignalSpy l_NotifyTriggerParmsSpy(&
Manager, SIGNAL(NotifyTriggerParms(sInputTrigger<uParm>)));
757 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
763 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
764 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
765 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
767 if (l_NotifyOperatingModeSpy.count() <= 0)
770 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
772 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
773 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
781 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 1);
782 m_Arguments = l_NotifyTriggerParmsSpy.takeFirst();
783 m_Trigger = qvariant_cast<sInputTrigger<uParm>>(m_Arguments.at(0));
784 QVERIFY(l_Trigger_temp == m_Trigger);
785 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
791 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
792 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
793 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
800 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 0);
801 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
808 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
809 l_NotifyErrorListSpy.clear();
810 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 0);
812 QVERIFY(l_Trigger_temp == m_Trigger);
818 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
819 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
820 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
823 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
829void THM1176IM_Test03_Parameters::TestSetAndGetAfterDisconnect(
void)
832 QSignalSpy l_NotifyCurrentInstrumentSpy(&
Manager, SIGNAL(NotifyCurrentInstrument(
tResourceName)));
835 QSignalSpy l_NotifyIdentificationSpy(&
Manager, SIGNAL(NotifyIdentification(sIdentifier)));
836 QSignalSpy l_NotifyRangeListSpy(&
Manager, SIGNAL(NotifyRangeList(CFluxList)));
837 QSignalSpy l_NotifyUnitsListSpy(&
Manager, SIGNAL(NotifyUnitsList(CTHM1176UnitsList)));
838 QSignalSpy l_NotifyDivisorListSpy(&
Manager, SIGNAL(NotifyDivisorList(CDivisorList)));
839 QSignalSpy l_NotifyAveragingParmBoundsSpy(&
Manager, SIGNAL(NotifyAveragingParmBounds(sAveraging<sBoundedParm>)));
840 QSignalSpy l_NotifyTriggerParmBoundsSpy(&
Manager, SIGNAL(NotifyTriggerParmBounds(sInputTrigger<sBoundedParm>)));
841 QSignalSpy l_NotifyRangeParmBoundsSpy(&
Manager, SIGNAL(NotifyRangeParmBounds(sRange<sBoundedParm>)));
843 QSignalSpy l_NotifyAveragingParmsSpy(&
Manager, SIGNAL(NotifyAveragingParms(sAveraging<uParm>)));
844 QSignalSpy l_NotifyTriggerParmsSpy(&
Manager, SIGNAL(NotifyTriggerParms(sInputTrigger<uParm>)));
845 QSignalSpy l_NotifyOutputSelectSpy(&
Manager, SIGNAL(NotifyOutputSelect(sArbitraryMeasurements)));
846 QSignalSpy l_NotifySleepParmSpy(&
Manager, SIGNAL(NotifySleepParm(
bool)));
848 QSignalSpy l_NotifyRangeParmsSpy(&
Manager, SIGNAL(NotifyRangeParms(sRange<uParm>)));
851 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
859 QCOMPARE(l_NotifyCommFormatSpy.count(), 1);
860 m_Arguments = l_NotifyCommFormatSpy.takeFirst();
861 m_CommFormat = qvariant_cast<eCommunicationFormat>(m_Arguments.at(0));
865 QCOMPARE(l_NotifyCurrentInstrumentSpy.count(), 1);
866 m_Arguments = l_NotifyCurrentInstrumentSpy.takeFirst();
867 m_THM1176Selected = qvariant_cast<tResourceName>(m_Arguments.at(0));
868 QVERIFY(m_THM1176Selected.empty());
870 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
871 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
872 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
875 QCOMPARE(l_NotifyIdentificationSpy.count(), 1);
876 m_Arguments = l_NotifyIdentificationSpy.takeFirst();
877 m_Identification = qvariant_cast<sIdentifier>(m_Arguments.at(0));
878 QVERIFY(m_Identification.Manufacturer.empty() && m_Identification.Model.empty() && m_Identification.SerialNumber == 0);
880 QCOMPARE(l_NotifyRangeListSpy.count(), 1);
881 m_Arguments = l_NotifyRangeListSpy.takeFirst();
882 m_RangeList = qvariant_cast<CFluxList>(m_Arguments.at(0));
883 QVERIFY(m_RangeList.empty());
885 QCOMPARE(l_NotifyUnitsListSpy.count(), 1);
886 m_Arguments = l_NotifyUnitsListSpy.takeFirst();
887 m_UnitsList = qvariant_cast<CTHM1176UnitsList>(m_Arguments.at(0));
888 QVERIFY(m_UnitsList.empty());
890 QCOMPARE(l_NotifyDivisorListSpy.count(), 1);
891 m_Arguments = l_NotifyDivisorListSpy.takeFirst();
892 m_DivisorList = qvariant_cast<CDivisorList>(m_Arguments.at(0));
893 QVERIFY(m_DivisorList.empty());
895 QCOMPARE(l_NotifyAveragingParmBoundsSpy.count(), 1);
896 m_Arguments = l_NotifyAveragingParmBoundsSpy.takeFirst();
897 m_AveragingBounds = qvariant_cast<sAveraging<sBoundedParm>>(m_Arguments.at(0));
898 QVERIFY(m_AveragingBounds.NoPoints.Val == 0 && m_AveragingBounds.NoPoints.Min == 0 &&
899 m_AveragingBounds.NoPoints.Max == 0 && m_AveragingBounds.NoPoints.Def == 0);
901 QCOMPARE(l_NotifyTriggerParmBoundsSpy.count(), 1);
902 m_Arguments = l_NotifyTriggerParmBoundsSpy.takeFirst();
903 m_TriggerBounds = qvariant_cast<sInputTrigger<sBoundedParm>>(m_Arguments.at(0));
904 QVERIFY(m_TriggerBounds.Period_s.Val == 0 && m_TriggerBounds.Period_s.Min == 0 &&
905 m_TriggerBounds.Period_s.Max == 0 && m_TriggerBounds.Period_s.Def == 0 &&
906 m_TriggerBounds.Count.Val == 0 && m_TriggerBounds.Count.Min == 0 &&
907 m_TriggerBounds.Count.Max == 0 && m_TriggerBounds.Count.Def == 0);
909 QCOMPARE(l_NotifyRangeParmBoundsSpy.count(), 1);
910 m_Arguments = l_NotifyRangeParmBoundsSpy.takeFirst();
911 m_RangeBounds = qvariant_cast<sRange<sBoundedParm>>(m_Arguments.at(0));
912 QVERIFY(m_RangeBounds.Range.Val == 0 && m_RangeBounds.Range.Min == 0 &&
913 m_RangeBounds.Range.Max == 0 && m_RangeBounds.Range.Def == 0);
915 QCOMPARE(l_NotifyAveragingParmsSpy.count(), 1);
916 m_Arguments = l_NotifyAveragingParmsSpy.takeFirst();
917 m_AveragingParms = qvariant_cast<sAveraging<uParm>>(m_Arguments.at(0));
918 QVERIFY(m_AveragingParms.NoPoints == 0);
920 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 1);
921 m_Arguments = l_NotifyTriggerParmsSpy.takeFirst();
922 m_Trigger = qvariant_cast<sInputTrigger<uParm>>(m_Arguments.at(0));
923 QVERIFY(m_Trigger.Period_s == 0. && m_Trigger.Count == 0);
925 QCOMPARE(l_NotifyOutputSelectSpy.count(), 1);
926 m_Arguments = l_NotifyOutputSelectSpy.takeFirst();
927 m_OutputSelect = qvariant_cast<sArbitraryMeasurements>(m_Arguments.at(0));
928 QVERIFY(m_OutputSelect.Bx && m_OutputSelect.By && m_OutputSelect.Bz &&
929 m_OutputSelect.Temperature && m_OutputSelect.Timestamp &&
930 m_OutputSelect.NoMeasurements == 1);
932 QCOMPARE(l_NotifySleepParmSpy.count(), 1);
933 m_Arguments = l_NotifySleepParmSpy.takeFirst();
934 m_SleepParm = qvariant_cast<bool>(m_Arguments.at(0));
935 QVERIFY(!m_SleepParm);
937 QCOMPARE(l_NotifyUnitsSpy.count(), 1);
938 m_Arguments = l_NotifyUnitsSpy.takeFirst();
939 m_Units = qvariant_cast<eTHM1176Units>(m_Arguments.at(0));
942 QCOMPARE(l_NotifyRangeParmsSpy.count(), 1);
943 m_Arguments = l_NotifyRangeParmsSpy.takeFirst();
944 m_RangeParms = qvariant_cast<sRange<uParm>>(m_Arguments.at(0));
945 QVERIFY(!m_RangeParms.Auto && m_RangeParms.Range == 0.f);
950 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
951 QVERIFY(l_THM1176Selected_temp.empty());
956 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
962 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
963 l_NotifyErrorListSpy.clear();
964 QCOMPARE(m_Measurement.Bx.size(), 0ul);
965 QCOMPARE(m_Measurement.By.size(), 0ul);
966 QCOMPARE(m_Measurement.Bz.size(), 0ul);
967 QCOMPARE(m_Measurement.Units,
MTL::kT);
968 QVERIFY(m_Measurement.Temp == 0);
969 QCOMPARE(m_Measurement.TimestampList.size(), 0ul);
970 QCOMPARE(m_Measurement.Warnings.size(), 0ul);
975 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
976 QCOMPARE(l_LatestErrors_temp.size(), 1ul);
981 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
982 l_NotifyErrorListSpy.clear();
983 QVERIFY(l_Identification_temp == m_Identification);
988 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
989 l_NotifyErrorListSpy.clear();
990 QVERIFY(l_RangeList_temp == m_RangeList);
995 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
996 l_NotifyErrorListSpy.clear();
997 QVERIFY(l_UnitsList_temp == m_UnitsList);
1002 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1003 l_NotifyErrorListSpy.clear();
1004 QVERIFY(l_DivisorList_temp == m_DivisorList);
1009 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1010 l_NotifyErrorListSpy.clear();
1011 QVERIFY(l_AveragingBounds_temp == m_AveragingBounds);
1016 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1017 l_NotifyErrorListSpy.clear();
1018 QVERIFY(l_TriggerBounds_temp == m_TriggerBounds);
1023 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1024 l_NotifyErrorListSpy.clear();
1025 QVERIFY(l_RangeBounds_temp == m_RangeBounds);
1028 sAveraging<uParm> l_AveragingParms_temp = { 1 };
1031 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1032 l_NotifyErrorListSpy.clear();
1033 QCOMPARE(l_NotifyAveragingParmsSpy.count(), 0);
1037 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1038 l_NotifyErrorListSpy.clear();
1039 QVERIFY(l_AveragingParms_temp == m_AveragingParms);
1045 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1046 l_NotifyErrorListSpy.clear();
1047 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 0);
1051 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1052 l_NotifyErrorListSpy.clear();
1053 QVERIFY(l_Trigger_temp == m_Trigger);
1056 sArbitraryMeasurements l_OutputSelect_temp = {
true,
true,
true,
true,
true, 1 };
1059 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1060 l_NotifyErrorListSpy.clear();
1061 QCOMPARE(l_NotifyOutputSelectSpy.count(), 0);
1065 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1066 l_NotifyErrorListSpy.clear();
1067 QVERIFY(l_OutputSelect_temp == m_OutputSelect);
1070 bool l_SleepParm_temp = !m_SleepParm;
1073 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1074 l_NotifyErrorListSpy.clear();
1075 QCOMPARE(l_NotifySleepParmSpy.count(), 0);
1079 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1080 l_NotifyErrorListSpy.clear();
1081 QVERIFY(l_SleepParm_temp == m_SleepParm);
1087 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1088 l_NotifyErrorListSpy.clear();
1089 QCOMPARE(l_NotifyUnitsSpy.count(), 0);
1093 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1094 l_NotifyErrorListSpy.clear();
1095 QVERIFY(l_Units_temp == m_Units);
1098 sRange<uParm> l_RangeParms_temp = {
true, 0};
1101 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1102 l_NotifyErrorListSpy.clear();
1103 QCOMPARE(l_NotifyRangeParmsSpy.count(), 0);
1107 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1108 l_NotifyErrorListSpy.clear();
1109 QVERIFY(l_RangeParms_temp == m_RangeParms);
1115 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1116 l_NotifyErrorListSpy.clear();
1117 QCOMPARE(l_NotifyCommFormatSpy.count(), 0);
1121 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1122 l_NotifyErrorListSpy.clear();
1123 QVERIFY(l_CommFormat_temp == m_CommFormat);
1132#include "THM1176IM_Test03_Parameters.moc"
Interface definition for Metrolab THM1176/TFM1186 Instrument Manager.
unsigned short U16
16-bit unsigned integer.
#define THM1176_PROMPT_TIME
static CTHM1176InstrumentManager Manager
#define THM1176_CONNECT_TIME
#define THM1176_BOOT_N_SCAN_TIME
#define THM1176_CHANGE_PARM_TIME
static CTHM1176InstrumentManager Manager
#define THM1176_CONNECT_TIME
#define THM1176_MEASURE_TIME
#define THM1176_RESET_TIME
static void PromptAndWait(std::string Prompt)
Data returned for one measurement.
THM1176 Instrument Manager class: public interface.
void SetAveragingParms(sAveraging< uParm > AveragingParms)
Set the averaging parameters.
CErrorList GetErrorList(void)
Get the current error list.
sArbitraryMeasurements GetOutputSelect(void)
Get the output selection parameters.
void SetSleepParm(bool SleepParm)
Set the sleep parameter.
eTHM1176Units GetUnits(void)
Get the measurement units.
eTHM1176OperatingMode GetOperatingMode(void)
Get the current operating mode.
sInputTrigger< sBoundedParm > GetTriggerParmBounds(void)
Get the bounds on trigger parameters.
void SetOutputSelect(sArbitraryMeasurements OutputSelect)
Set the output selection parameters.
CTHM1176UnitsList GetUnitsList(void)
Get the list of valid measurement units for this instrument model.
CMeasurement GetMeasurement(void)
Get the last set of measurements.
sInputTrigger< uParm > GetTriggerParms(void)
Get the trigger parameters.
eCommunicationFormat GetCommFormat(void)
Get the communication format parameters.
sAveraging< uParm > GetAveragingParms(void)
Get the averaging parameters.
sIdentifier GetIdentification(void)
Get the current instrument's identification information.
void SetRangeParms(sRange< uParm > RangeParms)
Set the range parameters.
bool GetSleepParm(void)
Get the sleep parameter.
void SetOperatingMode(eTHM1176OperatingMode OperatingMode)
Set a new operating mode, for example to start measuring.
CResourceList GetInstrumentList(void)
Get the list of connected instruments.
void SetTriggerParms(sInputTrigger< uParm > TriggerParms)
Set the trigger parameters.
void SetCommFormat(eCommunicationFormat CommFormat)
Set the communication format parameters.
tResourceName GetCurrentInstrument(void)
Get VISA resource name of currently connected instrument.
void Stop(void)
Shut down the THM1176 Instrument Manager.
sRange< uParm > GetRangeParms(void)
Get the range parameters.
sRange< sBoundedParm > GetRangeParmBounds(void)
Get the bounds on range parameters.
sAveraging< sBoundedParm > GetAveragingParmBounds(void)
Get the bounds on averaging parameters.
CDivisorList GetDivisorList(void)
Get the list of divisors associated with each measurement unit for this instrument model.
CFluxList GetRangeList(void)
Get list of valid ranges for this instrument model.
void SetUnits(eTHM1176Units Units)
Set the measurement units.
List of measurement units.
List of VISA resource names.
List of divisors, one per measurement unit.
List of errors returned by the instrument.
List of flux density values.
~THM1176IM_Test03_Parameters()
THM1176IM_Test03_Parameters()
eCommunicationFormat
Enumeration of possible formats for returned data.
@ kComFormatPacked1Byte
Binary packed: first field value as I32, remainder deltas as I8.
@ kComFormatAscii
Human-legible text.
@ kInputTrigSrcTimer
Timed trigger: start measurement at regular intervals.
@ kInputTrigSrcImmediate
Immediate trigger: start measurement immediately after previous one completes.
@ kInputTrigSrcBus
Bus trigger: start measurement upon USB trigger message.
std::string tResourceName
IEEE488 resource name.
eTHM1176OperatingMode
Operating modes used to initiate actions or provide status.
@ kTHM1176Reset
Reset instrument.
@ kTHM1176NotConnected
Disconnect instrument.
@ kTHM1176MeasureContinuously
Start a continuous measurement.
@ kTHM1176Idle
Place the instrument in idle mode.
eTHM1176Units
Enumeration of possible measurement units, including "ADC".
@ kMHzp
Equivalent proton NMR resonant frequency, in Mega-Hertz.
Specify the measurement data to be returned.
ParmType< U16 > NoPoints
Number of points in block average.
DataType Val
Current value.
DataType Def
Default value.
Instrument's identification string - parsed version.
std::string Manufacturer
Manufacturer name ("Metrolab Technology SA")
U32 SerialNumber
Serial number.
std::string Model
Model name (e.g. "THM1176-MF")
Measurement range parameter.
ParmType< tFlux > Range
Measurement range, if auto-ranging is not enabled.