import pytest from lab_control.jds6600 import JDS6600 from lab_control.test.mock_jds6600_device import MockJDS6600Device AVAILABLE_CHANNELS = [1, 2] @pytest.fixture def mockDevice(): d = MockJDS6600Device() yield d d.stop() @pytest.fixture def uut(mockDevice): uut = JDS6600(mockDevice.getPortName()) yield uut uut.closePort() def checkNumericalParameter(testValues, writeValue, valueInMock, expectValid=True): for ch in AVAILABLE_CHANNELS: assert valueInMock(ch) == None for value in testValues: writeValue(ch, value) expectedValue = value if expectValid else None assert valueInMock(ch) == expectedValue def test_serialConfiguration(mockDevice): with pytest.raises(AssertionError): mockDevice.checkPortConfiguration() uut = JDS6600(mockDevice.getPortName()) mockDevice.checkPortConfiguration() def test_channelOnAndOff(uut, mockDevice): for ch in AVAILABLE_CHANNELS: assert not mockDevice.isOn(ch) uut.setOn(ch) assert mockDevice.isOn(ch) uut.setOff(ch) assert not mockDevice.isOn(ch) def disabled_test_setFrequency(uut, mockDevice): checkNumericalParameter([0.0, 100.0, 100000.0], uut.setFrequency, mockDevice.getFrequency) def test_setInvalidFrequency(uut, mockDevice): checkNumericalParameter([-10.0, 60000000.1, None], uut.setFrequency, mockDevice.getFrequency, expectValid=False) def test_setAmplitude(uut, mockDevice): checkNumericalParameter([0.0, 0.1, 1.0, 10.0, 20.0], uut.setAmplitude, mockDevice.getAmplitude) def test_setInvalidAmplitude(uut, mockDevice): checkNumericalParameter([-0.1, -10.0, 20.1, None], uut.setAmplitude, mockDevice.getAmplitude, expectValid=False) def test_setFunction(uut, mockDevice): checkNumericalParameter(range(0, 17), uut.setFunction, mockDevice.getFunction) def test_setInvalidFunction(uut, mockDevice): checkNumericalParameter([-1, -10, 17, 20, None], uut.setFunction, mockDevice.getFunction, expectValid=False)