From ed42c1a47bc96f6453bb50008481d3467e9254e6 Mon Sep 17 00:00:00 2001 From: Eddy Pedroni Date: Sun, 5 Jun 2022 16:45:32 +0200 Subject: Refactored SDS1000X-E unit tests --- lab_control/test/sds1000xe_unittest.py | 61 ++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 lab_control/test/sds1000xe_unittest.py (limited to 'lab_control/test/sds1000xe_unittest.py') diff --git a/lab_control/test/sds1000xe_unittest.py b/lab_control/test/sds1000xe_unittest.py new file mode 100644 index 0000000..ce87a6e --- /dev/null +++ b/lab_control/test/sds1000xe_unittest.py @@ -0,0 +1,61 @@ +import pytest + +from lab_control.sds1000xe import SDS1000XE +from lab_control.connection.direct_connection import DirectConnection as MockConnection +from lab_control.test.mock_sds1000xe_device import MockSDS1000XEDevice + +@pytest.fixture +def mockDevice(): + return MockSDS1000XEDevice() + +@pytest.fixture +def mockConnection(mockDevice): + return MockConnection(mockDevice._handleRequest) + +@pytest.fixture +def uut(mockConnection): + return SDS1000XE("", overrideConnection=mockConnection) + +def checkFloatMeasurement(testValues, setValue, measureValue): + for channel in SDS1000XE.AVAILABLE_CHANNELS: + for value in testValues: + setValue(channel, value) + measuredValue = measureValue(channel) + assert measuredValue == value + +def test_amplitudeMeasurement(uut, mockDevice): + testValues = [16.23987, 0.0, -0.0164, 10.1] + checkFloatMeasurement(testValues, mockDevice.setAmplitude, uut.measureAmplitude) + +def test_peakToPeakMeasurement(uut, mockDevice): + testValues = [16.23987, 0.0, -0.0164, 10.1] + checkFloatMeasurement(testValues, mockDevice.setPeakToPeak, uut.measurePeakToPeak) + +def test_RMSMeasurement(uut, mockDevice): + testValues = [16.23987, 0.0, -0.0164, 10.1] + checkFloatMeasurement(testValues, mockDevice.setRMS, uut.measureRMS) + +def test_frequencyMeasurement(uut, mockDevice): + testValues = [16.23987, 0.0, -0.0164, 93489.15] + checkFloatMeasurement(testValues, mockDevice.setFrequency, uut.measureFrequency) + +def test_invalidChannel(uut, mockDevice): + # Channel is checked by the UUT before the request is sent + testCases = [-1, 0, 5, None] + testMethods = [uut.measureAmplitude, uut.measurePeakToPeak, uut.measureRMS, uut.measureFrequency] + + for t in testCases: + for m in testMethods: + with pytest.raises(AssertionError): + m(t) + +def test_setVoltsPerDivision(uut, mockDevice): + testValues = [5e-3, 50e-3, 1e0, 5e0, 10e0, 100e0] + + for channel in SDS1000XE.AVAILABLE_CHANNELS: + assert mockDevice.getVoltsPerDivision(channel) is None + + for value in testValues: + uut.setVoltsPerDivision(channel, value) + assert mockDevice.getVoltsPerDivision(channel) == value + -- cgit v1.2.3