コード例 #1
0
ファイル: parameterstest.py プロジェクト: FabianGentner/NOSE
 def setUp(self):
     gui.calibration.parameters.BEEP = False
     self.mediator = gui.mediator.Mediator()
     self.system = ops.system.ProductionSystem(self.mediator)
     self.system.heatingCurrentWhileIdle = 2.0
     self.system.maxHeatingCurrent = 36.0
     self.handler = ParameterWidgetHandler(self.system)
コード例 #2
0
ファイル: parameterstest.py プロジェクト: FabianGentner/NOSE
class ParameterWidgetHandlerTests(unittest.TestCase):
    """
    Tests for the :class:`~gui.calibration.parameters.ParameterWidgetHandler`
    class.
    """

    def setUp(self):
        gui.calibration.parameters.BEEP = False
        self.mediator = gui.mediator.Mediator()
        self.system = ops.system.ProductionSystem(self.mediator)
        self.system.heatingCurrentWhileIdle = 2.0
        self.system.maxHeatingCurrent = 36.0
        self.handler = ParameterWidgetHandler(self.system)


    def tearDown(self):
        gui.calibration.parameters.BEEP = True


    def testGC(self):
        """Make sure the class is properly garbage-collected."""
        wr = weakref.ref(self.handler)
        self.handler = None
        gc.collect()
        self.assertEqual(wr(), None)


    def testWidget(self):
        """Tests the :attr:`widget` property."""
        self.assertTrue(isinstance(self.handler.widget, gtk.Widget))
        self.assertRaises(AttributeError, setattr, self.handler, 'widget', 0)


    def testDefaultValues(self):
        """Test the default values for starting current and max current."""
        self.assertEqual(self.handler._startingCurrent, 2.0)
        self.assertEqual(self.handler._maxCurrent, 36.0)


    def testGetCurrents(self):
        """Tests the getCurrents method."""
        def test(iStart, iStep, iMax, expected):
            self.handler._startingCurrent = iStart
            self.handler._currentIncrement = iStep
            self.handler._maxCurrent = iMax
            self.assertEqual(self.handler.getCurrents(), expected)

        test(2.0, 4.0, 18.0, (2.0, 6.0, 10.0, 14.0, 18.0))
        test(6.0, 0.5,  8.0, (6.0, 6.5,  7.0,  7.5,  8.0))
        test(4.0, 3.0, 12.0, (4.0, 7.0, 10.0))
        test(8.0, 1.0,  8.0, (8.0,))
        test(7.0, 4.0, 10.0, (7.0,))


    def testStartingCurrentInputs(self):
        """Tests a number of legal and illegal starting currents."""
        realValue = gui.calibration.parameters.MIN_CURRENT
        try:
            gui.calibration.parameters.MIN_CURRENT = 0.5
            self.handler._maxCurrent = 12.0

            tests = (
                ('-1000',   0.5),
                ('0',       0.5),
                ('0.25',    0.5),
                ('0.5',     0.5),
                ('.9',      0.9),
                ('5.0',     5.0),
                ('6.',      6.0),
                ('7',       7.0),
                ('08',      8.0),
                ('12.0',   12.0),
                ('1000',   12.0))

            for test in tests:
                self.assertInputEqual('_startingCurrent', *test)
        finally:
            gui.calibration.parameters.MIN_CURRENT = realValue


    def testCurrentIncrementInputs(self):
        """Tests a number of legal and illegal current increments."""
        realValue = gui.calibration.parameters.MIN_CURRENT_INCREMENT
        try:
            gui.calibration.parameters.MIN_CURRENT_INCREMENT = 0.5

            tests = (
                ('-1000',   0.5),
                ('0',       0.5),
                ('0.25',    0.5),
                ('0.5',     0.5),
                ('.9',      0.9),
                ('5.0',     5.0),
                ('6.',      6.0),
                ('7',       7.0),
                ('08',      8.0),
                ('1000', 1000.0))

            for test in tests:
                self.assertInputEqual('_currentIncrement', *test)
        finally:
            gui.calibration.parameters.MIN_CURRENT_INCREMENT = realValue


    def testMaxCurrentInputs(self):
        """Tests a number of legal and illegal max currents."""
        self.handler._startingCurrent = 6.0

        tests = (
            ('-1000',    6.0),
            ('0',        6.0),
            ('3.0',      6.0),
            ('6.0',      6.0),
            ('10.0',    10.0),
            ('11.',     11.0),
            ('12',      12.0),
            ('013',     13.0),
            ('36.0',    36.0),
            ('1000',    36.0))

        for test in tests:
            self.assertInputEqual('_maxCurrent', *test)


    def testStartingCurrentInputsWithChangedMaxCurrent(self):
        """
        Tests the entry of some legal and illegal starting currents after the
        max current has been lowered.
        """
        self.assertInputEqual('_maxCurrent',      '6.0', 6.0)
        self.assertInputEqual('_startingCurrent', '6.0', 6.0)
        self.assertInputEqual('_startingCurrent', '7.0', 6.0)
        self.assertInputEqual('_maxCurrent',      '7.0', 7.0)
        self.assertInputEqual('_startingCurrent', '7.0', 7.0)
        self.assertInputEqual('_startingCurrent', '8.0', 7.0)


    def testMaxCurrentInputsWithChangedStartingCurrent(self):
        """
        Tests the entry of some legal and illegal max currents after the
        starting current has been increased.
        """
        self.assertInputEqual('_startingCurrent', '12.0', 12.0)
        self.assertInputEqual('_maxCurrent',      '12.0', 12.0)
        self.assertInputEqual('_maxCurrent',      '11.0', 12.0)
        self.assertInputEqual('_startingCurrent', '11.0', 11.0)
        self.assertInputEqual('_maxCurrent',      '11.0', 11.0)
        self.assertInputEqual('_maxCurrent',      '10.0', 11.0)


    def testNonNumericInputs(self):
        """Non-numeric inputs must be ignored."""
        tests = ('Fnord!', '', ' ', '1000,0', '1,000.0', '123 abc', u'\u12345')

        for name in ('_startingCurrent', '_currentIncrement', '_maxCurrent'):
            old = getattr(self.handler, name)
            for test in tests:
                self.assertInputEqual(name, test, old)


    def testInputRounding(self):
        """"Tests the limit of the input's fractional digits."""
        digits = gui.calibration.parameters.MAX_FRACTIONAL_DIGITS
        text = '10.12345678901234567890'
        expected = round(float(text), digits)
        for prefix in ('_startingCurrent', '_currentIncrement', '_maxCurrent'):
            self.assertInputEqual(prefix, text, expected)


    def assertInputEqual(self, name, text, expectedValue):
        """
        An utility method that does the actual testing for the methods above.
        """
        entry = getattr(self.handler, name + 'Entry')
        entry.set_text(text)
        self.handler._finalizeInput(entry, name)
        self.assertEqual(getattr(self.handler, name), expectedValue)
        self.assertEqual(entry.get_text(), str(expectedValue))


    def testReturnKey(self):
        """Tests the use of the return key in the entries."""
        event = EventStub('Return')
        for name in ('_startingCurrent', '_currentIncrement', '_maxCurrent'):
            entry = getattr(self.handler, name + 'Entry')
            entry.set_text('6.0')
            self.assertTrue(
                self.handler._handleSpecialKeyPresses(entry, event, name))
            self.assertEqual(getattr(self.handler, name), 6.0)


    def testEscapeKey(self):
        """Tests the use of the escape key in the entries."""
        event = EventStub('Escape')
        for name in ('_startingCurrent', '_currentIncrement', '_maxCurrent'):
            entry = getattr(self.handler, name + 'Entry')
            oldText = entry.get_text()
            oldValue = getattr(self.handler, name)
            entry.set_text('6.0')
            self.assertTrue(
                self.handler._handleSpecialKeyPresses(entry, event, name))
            self.assertEqual(entry.get_text(), oldText)
            self.assertEqual(getattr(self.handler, name), oldValue)


    def testRandomKey(self):
        """Tests the use of some random, nonspecial key in the entries."""
        event = EventStub('SomeRandomNonspecialKey')
        for name in ('_startingCurrent', '_currentIncrement', '_maxCurrent'):
            entry = getattr(self.handler, name + 'Entry')
            self.assertFalse(
                self.handler._handleSpecialKeyPresses(entry, event, name))