Example #1
0
    def test_write_only_parameter(self):
        parameter = Parameter('foo', fset=empty_setter)
        self.assertTrue(parameter.is_writable())
        self.assertFalse(parameter.is_readable())

        parameter.set(1).result()

        with self.assertRaises(ReadAccessError) as ctx:
            parameter.get().result()

        self.assertEqual("parameter `foo' cannot be read", str(ctx.exception))
Example #2
0
    def test_soft_limit(self):
        parameter = Parameter('foo',
                              fset=empty_setter,
                              unit=q.mm,
                              lower=2 * q.mm,
                              upper=4 * q.mm)

        parameter.set(2.3 * q.mm).wait()
        parameter.set(2 * q.mm).wait()
        parameter.set(4 * q.mm).wait()

        self.assertRaises(SoftLimitError, parameter.set(4.2 * q.mm).wait)
Example #3
0
    def test_read_only_parameter(self):
        def getter():
            return 0

        parameter = Parameter('foo', fget=getter)
        self.assertTrue(parameter.is_readable())
        self.assertFalse(parameter.is_writable())

        self.assertEqual(parameter.get().result(), 0)

        with self.assertRaises(WriteAccessError) as ctx:
            parameter.set(None).result()

        self.assertEqual("parameter `foo' cannot be written",
                         str(ctx.exception))
Example #4
0
    def test_hard_limit(self):
        def setter(value):
            pass

        class Limited(object):
            in_limit = False

            def __call__(self):
                return self.in_limit

        in_limit = Limited()

        parameter = Parameter('foo', fset=setter, in_hard_limit=in_limit)
        parameter.set(0).result()
        parameter.set(0.5).result()
        parameter.set(1).result()

        with self.assertRaises(HardLimitError):
            in_limit.in_limit = True
            parameter.set(1.5).result()
Example #5
0
    def test_invalid_unit(self):
        parameter = Parameter('foo', fset=empty_setter, unit=q.mm)
        parameter.set(2 * q.mm).result()

        self.assertRaises(UnitError, parameter.set(2 * q.s).result)