Skip to content

Commit

Permalink
Test wavelength input range
Browse files Browse the repository at this point in the history
  • Loading branch information
clade committed Jun 16, 2021
1 parent 5404039 commit d77ad7d
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 5 deletions.
8 changes: 8 additions & 0 deletions ThorlabsPM100/ThorlabsPM100.py
Original file line number Diff line number Diff line change
Expand Up @@ -804,6 +804,14 @@ class wavelength(GenericGetSetCommandClass):
full_acces = 'sense.correction.wavelength'
value = Argument(0, ["MINimum", "MAXimum", "<numeric_value>nm"])

@staticmethod
def additional_test(instrument, value):
mini = instrument.minimum_wavelength
maxi= instrument.maximum_wavelength
if not mini<=value<=maxi:
raise Exception('Wavelength is {}. It should be between {} and {}'.format(value, mini, maxi))



class SensePeakdetector(Group, with_metaclass(InstrumentMetaclass)):

Expand Down
11 changes: 9 additions & 2 deletions ThorlabsPM100/VISA_wrapper_metaclass.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ def get_val(self):
return get_val


def _generic_set_command(cmd_name, in_test=None, doc=None):
def _generic_set_command(cmd_name, in_test=None, doc=None, additional_test=None):
""" Create a method that will set the cmd_name
for example: _generic_set_command('CH1:IMPedance') will create the method
Expand All @@ -234,13 +234,19 @@ def _generic_set_command(cmd_name, in_test=None, doc=None):
"""
if in_test is None:
def set_val(self, value):
if additional_test is not None:
additional_test(self, value)
cmd_nameb = self._get_cmd_name(cmd_name)
self._write('%s %s' % (cmd_nameb, value))
else:
def set_val(self, args):
if isinstance(args, tuple):
if additional_test is not None:
additional_test(self, *args)
param = in_test(*args)
else:
if additional_test is not None:
additional_test(self, args)
param = in_test(args)
cmd_nameb = self._get_cmd_name(cmd_name)
self._write('%s %s' % (cmd_nameb, param))
Expand Down Expand Up @@ -374,11 +380,12 @@ def _get_the_doc(cls):


class GenericGetSetCommandClass(GenericCommandClass):
additional_test=None
@classmethod
def to_dict(cls, name):
get_cmd = _generic_get_command(cls.cmd, cls.out_conversion,
doc=cls.__doc__)
set_cmd = _generic_set_command(cls.cmd, cls.in_test, doc=cls.__doc__)
set_cmd = _generic_set_command(cls.cmd, cls.in_test, doc=cls.__doc__, additional_test=cls.additional_test)
return {name: property(get_cmd, set_cmd, doc=cls._get_the_doc()),
get_cmd.__name__: get_cmd, set_cmd.__name__: set_cmd}

Expand Down
5 changes: 3 additions & 2 deletions ThorlabsPM100/test/fake_scpi.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ def write(self, val):
self._record[val] = True

def query(self, val):
assert val[-1]=='?'
out = self._record.get(val[:-1], '')
if val[-1]=='?':
val = val[:-1]
out = self._record.get(val, '')
# print('ASK', val,'...', out)
return out

21 changes: 21 additions & 0 deletions ThorlabsPM100/test/hwtest_usbtmc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import unittest


from ..usbtmc import USBTMC
from .. import ThorlabsPM100


inst = USBTMC()
power_meter = ThorlabsPM100(inst, verbose=True)

class TestHW(unittest.TestCase):
def test_wavelength(self):
old_value = power_meter.sense.correction.wavelength
power_meter.sense.correction.wavelength = 780
self.assertEqual(power_meter.sense.correction.wavelength, 780)
power_meter.sense.correction.wavelength = old_value

with self.assertRaises(Exception) as context:
power_meter.sense.correction.wavelength = 10

self.assertIn('Wavelength is', str(context.exception))
12 changes: 11 additions & 1 deletion ThorlabsPM100/test/test_thorlabsPM100.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from .fake_scpi import FakeSCPI


initial_value = {'READ':"1.23"}
initial_value = {'READ':"1.23", 'Sense:Correction:WAVelength? MINimum':'400', "Sense:Correction:WAVelength? Maximum":'1100'}

class TestThorlabsPM100(unittest.TestCase):
def setUp(self):
Expand Down Expand Up @@ -33,3 +33,13 @@ def test_wavelength(self):
self.power_meter.sense.correction.wavelength = 1550
self.assertEqual(self.inst._record['Sense:Correction:WAVelength'], '1550nm')

def test_wavelength(self):
old_value = self.power_meter.sense.correction.wavelength
self.power_meter.sense.correction.wavelength = 780
self.assertEqual(self.power_meter.sense.correction.wavelength, 780)

with self.assertRaises(Exception) as context:
self.power_meter.sense.correction.wavelength = 10

self.assertIn('Wavelength is', str(context.exception))

0 comments on commit d77ad7d

Please sign in to comment.