20 #define THM1176_PROMPT_TIME 10 // s
21 #define THM1176_BOOT_N_SCAN_TIME 15000 // ms
22 #define THM1176_CONNECT_TIME 5000 // ms
23 #define THM1176_CHANGE_PARM_TIME 1000 // ms
24 #define THM1176_RESET_TIME 1000 // ms
25 #define THM1176_MEASURE_TIME 20000 // ms
26 #define THM1176_CALIBRATE_TIME 10000 // ms
38 std::string l_Space = (
"" == Prompt) ?
"" :
" ";
39 std::string l_Message =
">>> " + Prompt + l_Space +
"(Will continue in " + std::to_string(
THM1176_PROMPT_TIME) +
" seconds) <<<";
41 QWARN(l_Message.c_str());
62 QList<QVariant> m_Arguments;
89 void initTestCase(
void);
92 void cleanupTestCase(
void);
95 void TestSetOperatingMode_Immediate(
void);
98 void TestSetOperatingMode_Triggered(
void);
101 void TestSetOperatingMode_Timed(
void);
104 void TestSetOperatingMode_TimedLong(
void);
107 void TestSetOperatingMode_ImmediateContinuous(
void);
110 void TestSetOperatingMode_TimedContinuous(
void);
113 void TestSetOperatingMode_TriggeredContinuous(
void);
116 void TestSetOperatingMode_CalibrateRestore(
void);
119 void TestUtilities(
void);
139 void THM1176IM_Test02_Measure::initTestCase(
void)
141 QList<QVariant> m_Arguments;
148 QSignalSpy l_NotifyCurrentInstrumentSpy(&
Manager, SIGNAL(NotifyCurrentInstrument(
tResourceName)));
150 QSignalSpy l_NotifyIdentificationSpy(&
Manager, SIGNAL(NotifyIdentification(
sIdentifier)));
151 QSignalSpy l_NotifyRangeListSpy(&
Manager, SIGNAL(NotifyRangeList(
CFluxList)));
161 QSignalSpy l_NotifySleepParmSpy(&
Manager, SIGNAL(NotifySleepParm(
bool)));
172 QCOMPARE(l_NotifyInstrumentListSpy.count(), 1);
173 m_Arguments = l_NotifyInstrumentListSpy.takeFirst();
174 m_ResourceList = qvariant_cast<CResourceList>(m_Arguments.at(0));
175 QCOMPARE(m_ResourceList.size(), 1ul);
178 m_THM1176Selected = m_ResourceList[0];
183 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
184 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
185 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
189 QCOMPARE(l_NotifyCurrentInstrumentSpy.count(), 1);
190 m_Arguments = l_NotifyCurrentInstrumentSpy.takeFirst();
191 m_THM1176Selected = qvariant_cast<tResourceName>(m_Arguments.at(0));
192 QCOMPARE(m_THM1176Selected, m_ResourceList[0]);
195 QCOMPARE(l_NotifyIdentificationSpy.count(), 1);
196 m_Arguments = l_NotifyIdentificationSpy.takeFirst();
197 m_Identification = qvariant_cast<sIdentifier>(m_Arguments.at(0));
198 QVERIFY(!m_Identification.Manufacturer.empty() && !m_Identification.Model.empty() && m_Identification.SerialNumber != 0);
200 QCOMPARE(l_NotifyRangeListSpy.count(), 1);
201 m_Arguments = l_NotifyRangeListSpy.takeFirst();
202 m_RangeList = qvariant_cast<CFluxList>(m_Arguments.at(0));
203 QVERIFY(!m_RangeList.empty());
205 QCOMPARE(l_NotifyUnitsListSpy.count(), 1);
206 m_Arguments = l_NotifyUnitsListSpy.takeFirst();
207 m_UnitsList = qvariant_cast<CTHM1176UnitsList>(m_Arguments.at(0));
208 QVERIFY(!m_UnitsList.empty());
210 QCOMPARE(l_NotifyDivisorListSpy.count(), 1);
211 m_Arguments = l_NotifyDivisorListSpy.takeFirst();
212 m_DivisorList = qvariant_cast<CDivisorList>(m_Arguments.at(0));
213 QVERIFY(!m_DivisorList.empty());
215 QCOMPARE(l_NotifyAveragingParmBoundsSpy.count(), 1);
216 m_Arguments = l_NotifyAveragingParmBoundsSpy.takeFirst();
217 m_AveragingBounds = qvariant_cast<sAveraging<sBoundedParm>>(m_Arguments.at(0));
218 QVERIFY(m_AveragingBounds.NoPoints.Val != 0 && m_AveragingBounds.NoPoints.Min != 0 &&
219 m_AveragingBounds.NoPoints.Max != 0 && m_AveragingBounds.NoPoints.Def != 0);
221 QCOMPARE(l_NotifyTriggerParmBoundsSpy.count(), 1);
222 m_Arguments = l_NotifyTriggerParmBoundsSpy.takeFirst();
223 m_TriggerBounds = qvariant_cast<sInputTrigger<sBoundedParm>>(m_Arguments.at(0));
224 QVERIFY(m_TriggerBounds.Period_s.Val != 0 && m_TriggerBounds.Period_s.Min != 0 &&
225 m_TriggerBounds.Period_s.Max != 0 && m_TriggerBounds.Period_s.Def != 0 &&
226 m_TriggerBounds.Count.Val != 0 && m_TriggerBounds.Count.Min != 0 &&
227 m_TriggerBounds.Count.Max != 0 && m_TriggerBounds.Count.Def != 0);
229 QCOMPARE(l_NotifyRangeParmBoundsSpy.count(), 1);
230 m_Arguments = l_NotifyRangeParmBoundsSpy.takeFirst();
231 m_RangeBounds = qvariant_cast<sRange<sBoundedParm>>(m_Arguments.at(0));
232 QVERIFY(m_RangeBounds.Range.Val != 0 && m_RangeBounds.Range.Min != 0 &&
233 m_RangeBounds.Range.Max != 0 && m_RangeBounds.Range.Def != 0);
236 QCOMPARE(l_NotifyAveragingParmsSpy.count(), 1);
237 m_Arguments = l_NotifyAveragingParmsSpy.takeFirst();
238 m_AveragingParms = qvariant_cast<sAveraging<uParm>>(m_Arguments.at(0));
239 QVERIFY(m_AveragingParms.NoPoints > 0);
241 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 1);
242 m_Arguments = l_NotifyTriggerParmsSpy.takeFirst();
243 m_Trigger = qvariant_cast<sInputTrigger<uParm>>(m_Arguments.at(0));
244 QVERIFY(m_Trigger.Period_s > 0. && m_Trigger.Count > 0);
246 QCOMPARE(l_NotifyOutputSelectSpy.count(), 1);
247 m_Arguments = l_NotifyOutputSelectSpy.takeFirst();
248 m_OutputSelect = qvariant_cast<sArbitraryMeasurements>(m_Arguments.at(0));
250 QCOMPARE(l_NotifySleepParmSpy.count(), 1);
251 m_Arguments = l_NotifySleepParmSpy.takeFirst();
252 m_SleepParm = qvariant_cast<bool>(m_Arguments.at(0));
254 QCOMPARE(l_NotifyUnitsSpy.count(), 1);
255 m_Arguments = l_NotifyUnitsSpy.takeFirst();
256 m_Units = qvariant_cast<eTHM1176Units>(m_Arguments.at(0));
258 QCOMPARE(l_NotifyRangeParmsSpy.count(), 1);
259 m_Arguments = l_NotifyRangeParmsSpy.takeFirst();
260 m_RangeParms = qvariant_cast<sRange<uParm>>(m_Arguments.at(0));
262 QCOMPARE(l_NotifyCommFormatSpy.count(), 1);
263 m_Arguments = l_NotifyCommFormatSpy.takeFirst();
264 m_CommFormat = qvariant_cast<eCommunicationFormat>(m_Arguments.at(0));
267 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
269 std::cout <<
"- Connected to " + m_Identification.Model +
", S/N " + std::to_string(m_Identification.SerialNumber) << std::endl;
273 void THM1176IM_Test02_Measure::cleanupTestCase(
void)
296 void THM1176IM_Test02_Measure::TestSetOperatingMode_Immediate(
void)
308 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
309 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
310 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
312 if (l_NotifyOperatingModeSpy.count() <= 0)
315 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
317 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
318 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
329 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
338 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
347 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
348 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
349 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
351 if (l_NotifyOperatingModeSpy.count() <= 0)
354 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
356 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
357 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
360 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
361 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
362 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
363 QCOMPARE(m_Measurement.Bx.size(), 1ul);
364 QCOMPARE(m_Measurement.By.size(), 1ul);
365 QCOMPARE(m_Measurement.Bz.size(), 1ul);
366 QCOMPARE(m_Measurement.Units,
MTL::kT);
367 QVERIFY(m_Measurement.Temp != 0);
368 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
369 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
370 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
371 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
373 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
374 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
375 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
376 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
377 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
378 QCOMPARE(m_Measurement.Warnings.size(), 0ul);
380 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
382 std::cout <<
"- Measured Immediate,1: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
383 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] << std::endl;
388 m_Trigger.Count = 10;
392 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
396 m_OutputSelect.Bx =
true;
397 m_OutputSelect.By =
false;
398 m_OutputSelect.Bz =
true;
399 m_OutputSelect.Temperature =
false;
400 m_OutputSelect.Timestamp =
true;
401 m_OutputSelect.NoMeasurements = 10;
405 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
414 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
415 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
416 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
418 if (l_NotifyOperatingModeSpy.count() <= 0)
421 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
423 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
424 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
427 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
428 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
429 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
430 QCOMPARE(m_Measurement.Bx.size(), 10ul);
431 QCOMPARE(m_Measurement.By.size(), 0ul);
432 QCOMPARE(m_Measurement.Bz.size(), 10ul);
433 QCOMPARE(m_Measurement.Units,
MTL::kT);
434 QVERIFY(m_Measurement.Temp == 0);
435 QCOMPARE(m_Measurement.TimestampList.size(), 10ul);
436 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
437 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
438 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
440 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
441 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
442 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
443 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
444 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
445 QCOMPARE(m_Measurement.Warnings.size(), 1ul);
448 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
450 std::cout <<
"- Measured Immediate,10: B[] = (" << m_Measurement.Bx[0] <<
"..., N/A , " << m_Measurement.Bz[0] <<
"...) [T], "
451 "Temp = N/A , Timestamp = " << m_Measurement.TimestampList[0] << std::endl;
488 void THM1176IM_Test02_Measure::TestSetOperatingMode_Triggered(
void)
500 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
501 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
502 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
504 if (l_NotifyOperatingModeSpy.count() <= 0)
507 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
509 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
510 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
521 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
530 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
538 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
539 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
540 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
543 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
549 QThread::currentThread()->msleep(100);
553 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
554 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
555 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
558 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
559 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
560 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
561 QCOMPARE(m_Measurement.Bx.size(), 1ul);
562 QCOMPARE(m_Measurement.By.size(), 1ul);
563 QCOMPARE(m_Measurement.Bz.size(), 1ul);
564 QCOMPARE(m_Measurement.Units,
MTL::kT);
565 QVERIFY(m_Measurement.Temp != 0);
566 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
567 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
568 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
569 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
570 QCOMPARE(m_Measurement.TriggerParms.Period_s, 0.);
571 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
572 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
573 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
574 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
575 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
576 QCOMPARE(m_Measurement.Warnings.size(), 0ul);
578 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
580 std::cout <<
"- Measured Triggered,1: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
581 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] << std::endl;
586 m_Trigger.Count = 10;
590 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
594 m_OutputSelect.Bx =
true;
595 m_OutputSelect.By =
false;
596 m_OutputSelect.Bz =
true;
597 m_OutputSelect.Temperature =
false;
598 m_OutputSelect.Timestamp =
true;
599 m_OutputSelect.NoMeasurements = 10;
603 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
611 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
612 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
613 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
616 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
622 QThread::currentThread()->msleep(100);
623 for (
int i = 0; i < 10; i++)
626 QThread::currentThread()->msleep(100);
630 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
631 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
632 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
635 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
636 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
637 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
638 QCOMPARE(m_Measurement.Bx.size(), 10ul);
639 QCOMPARE(m_Measurement.By.size(), 0ul);
640 QCOMPARE(m_Measurement.Bz.size(), 10ul);
641 QCOMPARE(m_Measurement.Units,
MTL::kT);
642 QVERIFY(m_Measurement.Temp == 0);
643 QCOMPARE(m_Measurement.TimestampList.size(), 10ul);
644 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
645 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
646 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
647 QVERIFY(m_Measurement.TriggerParms.Period_s > 80e-3 && m_Measurement.TriggerParms.Period_s < 120e-3);
648 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
649 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
650 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
651 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
652 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
653 QCOMPARE(m_Measurement.Warnings.size(), 1ul);
656 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
658 std::cout <<
"- Measured Triggered,10: B[] = (" << m_Measurement.Bx[0] <<
"..., N/A , " << m_Measurement.Bz[0] <<
"...) [T], "
659 "Temp = N/A , TimestampList = " << m_Measurement.TimestampList[0] <<
"..." << std::endl;
662 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
670 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
671 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
672 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
675 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
681 QThread::currentThread()->msleep(100);
682 for (
int i = 0; i < 5; i++)
685 QThread::currentThread()->msleep(100);
690 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
691 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
692 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
695 QCOMPARE(l_NotifyMeasurementSpy.count(), 0);
696 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
698 std::cout <<
"- Measured Triggered,10, sent 5 triggers, and aborted" << std::endl;
702 QThread::currentThread()->msleep(100);
706 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
707 m_Arguments = l_NotifyErrorListSpy.takeFirst();
708 m_LatestErrors = qvariant_cast<CErrorList>(m_Arguments.at(0));
709 QCOMPARE(m_LatestErrors.size(), 1ul);
711 std::cout <<
"- Sending spurious trigger returned error: "
712 << m_LatestErrors[0].Code <<
", "
713 << m_LatestErrors[0].Context <<
": "
714 << m_LatestErrors[0].Description << std::endl;
736 void THM1176IM_Test02_Measure::TestSetOperatingMode_Timed(
void)
748 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
749 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
750 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
752 if (l_NotifyOperatingModeSpy.count() <= 0)
755 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
757 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
758 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
769 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
774 m_Trigger.Period_s = 0.1;
779 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
788 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
789 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
790 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
792 if (l_NotifyOperatingModeSpy.count() <= 0)
795 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
797 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
798 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
801 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
802 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
803 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
804 QCOMPARE(m_Measurement.Bx.size(), 1ul);
805 QCOMPARE(m_Measurement.By.size(), 1ul);
806 QCOMPARE(m_Measurement.Bz.size(), 1ul);
807 QCOMPARE(m_Measurement.Units,
MTL::kT);
808 QVERIFY(m_Measurement.Temp != 0);
809 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
810 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
811 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
812 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
813 QCOMPARE(m_Measurement.TriggerParms.Period_s, m_Trigger.Period_s);
814 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
815 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
816 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
817 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
818 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
819 QCOMPARE(m_Measurement.Warnings.size(), 0ul);
821 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
823 std::cout <<
"- Measured Timed,0.1,1: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
824 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] << std::endl;
829 m_Trigger.Period_s = 0.1;
830 m_Trigger.Count = 10;
834 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
838 m_OutputSelect.Bx =
true;
839 m_OutputSelect.By =
false;
840 m_OutputSelect.Bz =
true;
841 m_OutputSelect.Temperature =
false;
842 m_OutputSelect.Timestamp =
true;
843 m_OutputSelect.NoMeasurements = 10;
847 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
856 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
857 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
858 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
860 if (l_NotifyOperatingModeSpy.count() <= 0)
863 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
865 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
866 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
869 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
870 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
871 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
872 QCOMPARE(m_Measurement.Bx.size(), 10ul);
873 QCOMPARE(m_Measurement.By.size(), 0ul);
874 QCOMPARE(m_Measurement.Bz.size(), 10ul);
875 QCOMPARE(m_Measurement.Units,
MTL::kT);
876 QVERIFY(m_Measurement.Temp == 0);
877 QCOMPARE(m_Measurement.TimestampList.size(), 10ul);
878 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
879 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
880 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
881 QCOMPARE(m_Measurement.TriggerParms.Period_s, m_Trigger.Period_s);
882 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
883 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
884 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
885 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
886 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
887 QCOMPARE(m_Measurement.Warnings.size(), 1ul);
890 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
892 std::cout <<
"- Measured Timed,0.1,10: B[] = (" << m_Measurement.Bx[0] <<
"..., N/A , " << m_Measurement.Bz[0] <<
"...) [T], "
893 "Temp = N/A , TimestampList[] = " << m_Measurement.TimestampList[0] <<
"..." << std::endl;
912 void THM1176IM_Test02_Measure::TestSetOperatingMode_TimedLong(
void)
924 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
925 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
926 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
928 if (l_NotifyOperatingModeSpy.count() <= 0)
931 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
933 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
934 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
945 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
950 m_Trigger.Period_s = 0.0005;
951 m_Trigger.Count = 4000;
955 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
959 m_AveragingParms.NoPoints = 1;
963 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
967 m_OutputSelect.Bx =
true;
968 m_OutputSelect.By =
true;
969 m_OutputSelect.Bz =
true;
970 m_OutputSelect.Temperature =
true;
971 m_OutputSelect.Timestamp =
true;
972 m_OutputSelect.NoMeasurements = 4000;
976 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
984 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
991 auto l_StartTime = std::chrono::high_resolution_clock::now();
995 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
996 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
997 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
999 if (l_NotifyOperatingModeSpy.count() <= 0)
1002 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1004 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1005 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1008 auto l_StopTime = std::chrono::high_resolution_clock::now();
1010 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
1011 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
1012 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
1013 QCOMPARE(m_Measurement.Bx.size(), 4000ul);
1014 QCOMPARE(m_Measurement.By.size(), 4000ul);
1015 QCOMPARE(m_Measurement.Bz.size(), 4000ul);
1016 QCOMPARE(m_Measurement.Units,
MTL::kT);
1017 QVERIFY(m_Measurement.Temp > 0);
1018 QCOMPARE(m_Measurement.TimestampList.size(), 4000ul);
1019 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
1020 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
1021 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
1022 QCOMPARE(m_Measurement.TriggerParms.Period_s, m_Trigger.Period_s);
1023 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
1024 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
1025 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
1026 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
1027 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
1028 QCOMPARE(m_Measurement.Warnings.size(), 0ul);
1030 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1032 auto l_TimeElapsed = std::chrono::duration_cast<std::chrono::milliseconds>(l_StopTime - l_StartTime).count();
1033 QVERIFY(l_TimeElapsed > 2000 && l_TimeElapsed < 4000);
1035 std::cout <<
"- Measured Timed,0.0005,4000 B[] = (" << m_Measurement.Bx[0] <<
"..., " << m_Measurement.By[0] <<
"..., " << m_Measurement.Bz[0] <<
"...) [T], "
1036 "Temp = " << m_Measurement.Temp <<
", TimestampList[] = " << m_Measurement.TimestampList[0] <<
"..." << std::endl;
1053 void THM1176IM_Test02_Measure::TestSetOperatingMode_ImmediateContinuous(
void)
1065 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1066 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1067 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1069 if (l_NotifyOperatingModeSpy.count() <= 0)
1072 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1074 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1075 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1086 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1091 m_Trigger.Period_s = 0.1;
1092 m_Trigger.Count = 1;
1096 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1105 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1106 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1107 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1110 for (
int i = 0; i < 10; i++)
1113 QVERIFY(l_NotifyMeasurementSpy.count() > 0);
1114 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
1115 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
1116 QCOMPARE(m_Measurement.Bx.size(), 1ul);
1117 QCOMPARE(m_Measurement.By.size(), 1ul);
1118 QCOMPARE(m_Measurement.Bz.size(), 1ul);
1119 QCOMPARE(m_Measurement.Units,
MTL::kT);
1120 QVERIFY(m_Measurement.Temp != 0);
1121 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
1122 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
1123 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
1124 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
1126 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
1127 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
1128 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
1129 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
1130 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
1132 std::cout <<
"- Measured Immediate,1,Continuous: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
1133 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] <<
", " <<
1134 m_Measurement.Warnings.size() <<
" Warnings" << std::endl;
1137 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1145 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1146 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1147 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1150 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1167 void THM1176IM_Test02_Measure::TestSetOperatingMode_TimedContinuous(
void)
1179 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1180 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1181 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1183 if (l_NotifyOperatingModeSpy.count() <= 0)
1186 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1188 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1189 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1200 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1205 m_Trigger.Period_s = 0.1;
1206 m_Trigger.Count = 1;
1210 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1219 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1220 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1221 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1224 for (
int i = 0; i < 10; i++)
1227 QThread::currentThread()->msleep(100);
1229 QVERIFY(l_NotifyMeasurementSpy.count() > 0);
1230 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
1231 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
1232 QCOMPARE(m_Measurement.Bx.size(), 1ul);
1233 QCOMPARE(m_Measurement.By.size(), 1ul);
1234 QCOMPARE(m_Measurement.Bz.size(), 1ul);
1235 QCOMPARE(m_Measurement.Units,
MTL::kT);
1236 QVERIFY(m_Measurement.Temp != 0);
1237 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
1238 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
1239 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
1240 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
1241 QCOMPARE(m_Measurement.TriggerParms.Period_s, m_Trigger.Period_s);
1242 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
1243 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
1244 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
1245 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
1246 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
1248 std::cout <<
"- Measured Timed,0.1,1,Continuous: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
1249 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] <<
", " <<
1250 m_Measurement.Warnings.size() <<
" Warnings" << std::endl;
1253 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1261 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1262 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1263 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1266 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1284 void THM1176IM_Test02_Measure::TestSetOperatingMode_TriggeredContinuous(
void)
1296 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1297 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1298 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1300 if (l_NotifyOperatingModeSpy.count() <= 0)
1303 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1305 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1306 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1317 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1322 m_Trigger.Period_s = 0.1;
1323 m_Trigger.Count = 1;
1327 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1334 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1335 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1336 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1342 QThread::currentThread()->msleep(100);
1343 for (
int i = 0; i < 10; i++)
1346 QThread::currentThread()->msleep(100);
1349 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
1350 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
1351 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
1352 QCOMPARE(m_Measurement.Bx.size(), 1ul);
1353 QCOMPARE(m_Measurement.By.size(), 1ul);
1354 QCOMPARE(m_Measurement.Bz.size(), 1ul);
1355 QCOMPARE(m_Measurement.Units,
MTL::kT);
1356 QVERIFY(m_Measurement.Temp != 0);
1357 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
1358 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
1359 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
1360 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
1361 QCOMPARE(m_Measurement.TriggerParms.Period_s, 0.);
1362 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
1363 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
1364 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
1365 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
1366 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
1368 std::cout <<
"- Measured Triggered,1,Continuous: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
1369 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] <<
", " <<
1370 m_Measurement.Warnings.size() <<
" Warnings" << std::endl;
1372 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1381 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1382 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1383 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1386 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1398 void THM1176IM_Test02_Measure::TestSetOperatingMode_CalibrateRestore(
void)
1410 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1411 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1412 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1414 if (l_NotifyOperatingModeSpy.count() <= 0)
1417 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1419 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1420 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1423 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1425 std::cout <<
"- Performed zero calibration " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1435 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1436 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1437 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1439 if (l_NotifyOperatingModeSpy.count() <= 0)
1442 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1444 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1445 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1448 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1449 m_Arguments = l_NotifyErrorListSpy.takeFirst();
1450 m_LatestErrors = qvariant_cast<CErrorList>(m_Arguments.at(0));
1451 QCOMPARE(m_LatestErrors.size(), 1ul);
1453 std::cout <<
"- Trying to calibrate 'prohibited' model returned error: "
1454 << m_LatestErrors[0].Code <<
", "
1455 << m_LatestErrors[0].Context <<
": "
1456 << m_LatestErrors[0].Description << std::endl;
1464 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1465 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1466 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1468 if (l_NotifyOperatingModeSpy.count() <= 0)
1471 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1473 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1474 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1477 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1479 std::cout <<
"- Restored zero calibration " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1490 void THM1176IM_Test02_Measure::TestUtilities(
void)
1497 F64 l_Period1, l_Period2, l_Period3;
1500 Q_ASSERT(
true == l_Result);
1503 Q_ASSERT(
true == l_Result);
1506 Q_ASSERT(
true == l_Result);
1507 QVERIFY(abs((l_Period2 - l_Period1) - (l_Period3 - l_Period2)) < 1E-8);
1513 Q_ASSERT(
true == l_Result);
1514 QVERIFY(l_Timestamp.
seconds() > (std::time(NULL) - 24l*60l*60l) &&
1515 l_Timestamp.
seconds() < std::time(NULL));
1519 QDateTime l_MfrDate, l_CalDate;
1521 Q_ASSERT(
true == l_Result);
1522 QVERIFY(2008 < l_MfrDate.date().year());
1523 QVERIFY((QDateTime::currentDateTime().date().year() - 3) < l_CalDate.date().year() &&
1524 QDateTime::currentDateTime().date().year() >= l_CalDate.date().year());
1532 #include "THM1176IM_Test02_Measure.moc"