diff options
Diffstat (limited to 'lab_control/test/frequency_response_test.py')
-rw-r--r-- | lab_control/test/frequency_response_test.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/lab_control/test/frequency_response_test.py b/lab_control/test/frequency_response_test.py new file mode 100644 index 0000000..014b4f6 --- /dev/null +++ b/lab_control/test/frequency_response_test.py @@ -0,0 +1,56 @@ +import pytest + +from lab_control.test.mock_lab import MockLab +from lab_control.frequency_response import FrequencyResponseMeasurement +from lab_control.measurement import getLinearRange + +@pytest.fixture +def mockLab(): + return MockLab() + +@pytest.fixture +def uut(mockLab): + return FrequencyResponseMeasurement() + +def prepareRampResponse(uut, mockLab): + # Expect a ramp response from 0.5 to 1.5 * input amplitude + inputAmplitude = 2.0 + minScale = 0.5 + maxScale = 1.5 + + def testFunction(f: float) -> float: + assert f >= uut.minFrequency and f <= uut.maxFrequency + frequencyPu = (f - uut.minFrequency) / (uut.maxFrequency - uut.minFrequency) + return minScale + maxScale * frequencyPu + + mockLab.connectChannels(uut.functionGeneratorChannel, uut.oscilloscopeChannel) + mockLab.setTestFunction(uut.oscilloscopeChannel, testFunction) + mockLab.setAmplitude(uut.functionGeneratorChannel, inputAmplitude) + mockLab.setOn(uut.functionGeneratorChannel) + + return [(f, testFunction(f) * inputAmplitude) for f in getLinearRange(uut.minFrequency, uut.maxFrequency, uut.steps)] + +def test_frequencyResponseDefaults(uut): + assert uut.minFrequency == 20e0 + assert uut.maxFrequency == 16e3 + assert uut.steps == 50 + assert uut.functionGeneratorChannel == 1 + assert uut.oscilloscopeChannel == 1 + +def test_frequencyResponseRamp(mockLab, uut): + uut.minFrequency = 100.0 + uut.maxFrequency = 200.0 + uut.steps = 11 + uut.functionGeneratorChannel = 1 + uut.oscilloscopeChannel = 1 + + expectedData = prepareRampResponse(uut, mockLab) + + assert not uut.measurementDone + assert uut.data == None + + response = uut.measure(mockLab, mockLab) + + assert uut.measurementDone + assert uut.data == expectedData + |