diff options
author | Picca Frédéric-Emmanuel <picca@debian.org> | 2022-02-02 14:19:58 +0100 |
---|---|---|
committer | Picca Frédéric-Emmanuel <picca@debian.org> | 2022-02-02 14:19:58 +0100 |
commit | 4e774db12d5ebe7a20eded6dd434a289e27999e5 (patch) | |
tree | a9822974ba45196f1e3740995ab157d6eb214a04 /silx/gui/utils/test | |
parent | d3194b1a9c4404ba93afac43d97172ab24c57098 (diff) |
New upstream version 1.0.0+dfsg
Diffstat (limited to 'silx/gui/utils/test')
-rwxr-xr-x | silx/gui/utils/test/__init__.py | 56 | ||||
-rw-r--r-- | silx/gui/utils/test/test.py | 76 | ||||
-rw-r--r-- | silx/gui/utils/test/test_async.py | 138 | ||||
-rw-r--r-- | silx/gui/utils/test/test_glutils.py | 66 | ||||
-rw-r--r-- | silx/gui/utils/test/test_image.py | 90 | ||||
-rwxr-xr-x | silx/gui/utils/test/test_qtutils.py | 75 | ||||
-rw-r--r-- | silx/gui/utils/test/test_testutils.py | 55 |
7 files changed, 0 insertions, 556 deletions
diff --git a/silx/gui/utils/test/__init__.py b/silx/gui/utils/test/__init__.py deleted file mode 100755 index 41e0d6a..0000000 --- a/silx/gui/utils/test/__init__.py +++ /dev/null @@ -1,56 +0,0 @@ -# coding: utf-8 -# /*########################################################################## -# -# Copyright (c) 2018-2020 European Synchrotron Radiation Facility -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# ###########################################################################*/ -"""silx.gui.utils tests""" - - -__authors__ = ["T. Vincent"] -__license__ = "MIT" -__date__ = "24/04/2018" - - -import unittest - -from . import test_async -from . import test_glutils -from . import test_image -from . import test_qtutils -from . import test_testutils -from . import test - - -def suite(): - """Test suite for module silx.image.test""" - test_suite = unittest.TestSuite() - test_suite.addTest(test.suite()) - test_suite.addTest(test_async.suite()) - test_suite.addTest(test_glutils.suite()) - test_suite.addTest(test_image.suite()) - test_suite.addTest(test_qtutils.suite()) - test_suite.addTest(test_testutils.suite()) - return test_suite - - -if __name__ == "__main__": - unittest.main(defaultTest="suite") diff --git a/silx/gui/utils/test/test.py b/silx/gui/utils/test/test.py deleted file mode 100644 index 8bba852..0000000 --- a/silx/gui/utils/test/test.py +++ /dev/null @@ -1,76 +0,0 @@ -# coding: utf-8 -# /*########################################################################## -# -# Copyright (c) 2019 European Synchrotron Radiation Facility -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# ###########################################################################*/ -"""Test of functions available in silx.gui.utils module.""" - -from __future__ import absolute_import - -__authors__ = ["T. Vincent"] -__license__ = "MIT" -__date__ = "01/08/2019" - - -import unittest -from silx.gui import qt -from silx.gui.utils.testutils import TestCaseQt, SignalListener - -from silx.gui.utils import blockSignals - - -class TestBlockSignals(TestCaseQt): - """Test blockSignals context manager""" - - def _test(self, *objs): - """Test for provided objects""" - listener = SignalListener() - for obj in objs: - obj.objectNameChanged.connect(listener) - obj.setObjectName("received") - - with blockSignals(*objs): - for obj in objs: - obj.setObjectName("silent") - - self.assertEqual(listener.arguments(), [("received",)] * len(objs)) - - @unittest.skipUnless(qt.BINDING in ('PyQt5', 'PySide2'), 'Qt5 only test') - def testManyObjects(self): - """Test blockSignals with 2 QObjects""" - self._test(qt.QObject(), qt.QObject()) - - @unittest.skipUnless(qt.BINDING in ('PyQt5', 'PySide2'), 'Qt5 only test') - def testOneObject(self): - """Test blockSignals context manager with a single QObject""" - self._test(qt.QObject()) - - -def suite(): - test_suite = unittest.TestSuite() - test_suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase( - TestBlockSignals)) - return test_suite - - -if __name__ == '__main__': - unittest.main(defaultTest='suite') diff --git a/silx/gui/utils/test/test_async.py b/silx/gui/utils/test/test_async.py deleted file mode 100644 index dcfde1d..0000000 --- a/silx/gui/utils/test/test_async.py +++ /dev/null @@ -1,138 +0,0 @@ -# coding: utf-8 -# /*########################################################################## -# -# Copyright (c) 2018 European Synchrotron Radiation Facility -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# ###########################################################################*/ -"""Test of async module.""" - -from __future__ import absolute_import - -__authors__ = ["T. Vincent"] -__license__ = "MIT" -__date__ = "09/03/2018" - - -import threading -import unittest - - -from concurrent.futures import wait -from silx.gui import qt -from silx.gui.utils.testutils import TestCaseQt - -from silx.gui.utils import concurrent - - -class TestSubmitToQtThread(TestCaseQt): - """Test submission of tasks to Qt main thread""" - - def setUp(self): - # Reset executor to test lazy-loading in different conditions - concurrent._executor = None - super(TestSubmitToQtThread, self).setUp() - - def _task(self, value1, value2): - return value1, value2 - - def _taskWithException(self, *args, **kwargs): - raise RuntimeError('task exception') - - def testFromMainThread(self): - """Call submitToQtMainThread from the main thread""" - value1, value2 = 0, 1 - future = concurrent.submitToQtMainThread(self._task, value1, value2=value2) - self.assertTrue(future.done()) - self.assertEqual(future.result(1), (value1, value2)) - self.assertIsNone(future.exception(1)) - - future = concurrent.submitToQtMainThread(self._taskWithException) - self.assertTrue(future.done()) - with self.assertRaises(RuntimeError): - future.result(1) - self.assertIsInstance(future.exception(1), RuntimeError) - - def _threadedTest(self): - """Function run in a thread for the tests""" - value1, value2 = 0, 1 - future = concurrent.submitToQtMainThread(self._task, value1, value2=value2) - - wait([future], 3) - - self.assertTrue(future.done()) - self.assertEqual(future.result(1), (value1, value2)) - self.assertIsNone(future.exception(1)) - - future = concurrent.submitToQtMainThread(self._taskWithException) - - wait([future], 3) - - self.assertTrue(future.done()) - with self.assertRaises(RuntimeError): - future.result(1) - self.assertIsInstance(future.exception(1), RuntimeError) - - def testFromPythonThread(self): - """Call submitToQtMainThread from a Python thread""" - thread = threading.Thread(target=self._threadedTest) - thread.start() - for i in range(100): # Loop over for 10 seconds - self.qapp.processEvents() - thread.join(0.1) - if not thread.is_alive(): - break - else: - self.fail(('Thread task still running')) - - def testFromQtThread(self): - """Call submitToQtMainThread from a Qt thread pool""" - class Runner(qt.QRunnable): - def __init__(self, fn): - super(Runner, self).__init__() - self._fn = fn - - def run(self): - self._fn() - - def autoDelete(self): - return True - - threadPool = qt.silxGlobalThreadPool() - runner = Runner(self._threadedTest) - threadPool.start(runner) - for i in range(100): # Loop over for 10 seconds - self.qapp.processEvents() - done = threadPool.waitForDone(100) - if done: - break - else: - self.fail('Thread pool task still running') - - -def suite(): - test_suite = unittest.TestSuite() - test_suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase( - TestSubmitToQtThread)) - return test_suite - - -if __name__ == '__main__': - unittest.main(defaultTest='suite') diff --git a/silx/gui/utils/test/test_glutils.py b/silx/gui/utils/test/test_glutils.py deleted file mode 100644 index 66df8cf..0000000 --- a/silx/gui/utils/test/test_glutils.py +++ /dev/null @@ -1,66 +0,0 @@ -# coding: utf-8 -# /*########################################################################## -# -# Copyright (c) 2020 European Synchrotron Radiation Facility -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# ###########################################################################*/ -"""Tests for the silx.gui.utils.glutils module.""" - -__authors__ = ["T. Vincent"] -__license__ = "MIT" -__date__ = "15/01/2020" - - -import logging -import unittest -from silx.gui.utils.glutils import isOpenGLAvailable - - -_logger = logging.getLogger(__name__) - - -class TestIsOpenGLAvailable(unittest.TestCase): - """Test isOpenGLAvailable""" - - def test(self): - for version in ((2, 1), (2, 1), (1000, 1)): - with self.subTest(version=version): - result = isOpenGLAvailable(version=version) - _logger.info("isOpenGLAvailable returned: %s", str(result)) - if version[0] == 1000: - self.assertFalse(result) - if not result: - self.assertFalse(result.status) - self.assertTrue(len(result.error) > 0) - else: - self.assertTrue(result.status) - self.assertTrue(len(result.error) == 0) - - -def suite(): - test_suite = unittest.TestSuite() - test_suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase( - TestIsOpenGLAvailable)) - return test_suite - - -if __name__ == '__main__': - unittest.main(defaultTest='suite') diff --git a/silx/gui/utils/test/test_image.py b/silx/gui/utils/test/test_image.py deleted file mode 100644 index cda7d95..0000000 --- a/silx/gui/utils/test/test_image.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 -# /*########################################################################## -# -# Copyright (c) 2017-2018 European Synchrotron Radiation Facility -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# ###########################################################################*/ -"""Test of utils module.""" - -__authors__ = ["T. Vincent"] -__license__ = "MIT" -__date__ = "16/01/2017" - -import numpy -import unittest - -from silx.gui import qt -from silx.utils.testutils import ParametricTestCase -from silx.gui.utils.testutils import TestCaseQt -from silx.gui.utils.image import convertArrayToQImage, convertQImageToArray - - -class TestQImageConversion(TestCaseQt, ParametricTestCase): - """Tests conversion of QImage to/from numpy array.""" - - def testConvertArrayToQImage(self): - """Test conversion of numpy array to QImage""" - for format_, channels in [('Format_RGB888', 3), - ('Format_ARGB32', 4)]: - with self.subTest(format_): - image = numpy.arange( - 3*3*channels, dtype=numpy.uint8).reshape(3, 3, channels) - qimage = convertArrayToQImage(image) - - self.assertEqual(qimage.height(), image.shape[0]) - self.assertEqual(qimage.width(), image.shape[1]) - self.assertEqual(qimage.format(), getattr(qt.QImage, format_)) - - for row in range(3): - for col in range(3): - # Qrgb has no alpha channel, not compared - # Qt uses x,y while array is row,col... - self.assertEqual(qt.QColor(qimage.pixel(col, row)), - qt.QColor(*image[row, col, :3])) - - - def testConvertQImageToArray(self): - """Test conversion of QImage to numpy array""" - for format_, channels in [ - ('Format_RGB888', 3), # Native support - ('Format_ARGB32', 4), # Native support - ('Format_RGB32', 3)]: # Conversion to RGB - with self.subTest(format_): - color = numpy.arange(channels) # RGB(A) values - qimage = qt.QImage(3, 3, getattr(qt.QImage, format_)) - qimage.fill(qt.QColor(*color)) - image = convertQImageToArray(qimage) - - self.assertEqual(qimage.height(), image.shape[0]) - self.assertEqual(qimage.width(), image.shape[1]) - self.assertEqual(image.shape[2], len(color)) - self.assertTrue(numpy.all(numpy.equal(image, color))) - - -def suite(): - test_suite = unittest.TestSuite() - test_suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase( - TestQImageConversion)) - return test_suite - - -if __name__ == '__main__': - unittest.main(defaultTest='suite') diff --git a/silx/gui/utils/test/test_qtutils.py b/silx/gui/utils/test/test_qtutils.py deleted file mode 100755 index 043a0a6..0000000 --- a/silx/gui/utils/test/test_qtutils.py +++ /dev/null @@ -1,75 +0,0 @@ -# coding: utf-8 -# /*########################################################################## -# -# Copyright (c) 2019 European Synchrotron Radiation Facility -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# ###########################################################################*/ -"""Test of functions available in silx.gui.utils module.""" - -from __future__ import absolute_import - -__authors__ = ["T. Vincent"] -__license__ = "MIT" -__date__ = "01/08/2019" - - -import unittest -from silx.gui import qt -from silx.gui import utils -from silx.gui.utils.testutils import TestCaseQt - - -class TestQEventName(TestCaseQt): - """Test QEvent names""" - - def testNoneType(self): - result = utils.getQEventName(0) - self.assertEqual(result, "None") - - def testNoneEvent(self): - event = qt.QEvent(qt.QEvent.Type(0)) - result = utils.getQEventName(event) - self.assertEqual(result, "None") - - def testUserType(self): - result = utils.getQEventName(1050) - self.assertIn("User", result) - self.assertIn("1050", result) - - def testQtUndefinedType(self): - result = utils.getQEventName(900) - self.assertIn("Unknown", result) - self.assertIn("900", result) - - def testUndefinedType(self): - result = utils.getQEventName(70000) - self.assertIn("Unknown", result) - self.assertIn("70000", result) - - -def suite(): - test_suite = unittest.TestSuite() - test_suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase(TestQEventName)) - return test_suite - - -if __name__ == "__main__": - unittest.main(defaultTest="suite") diff --git a/silx/gui/utils/test/test_testutils.py b/silx/gui/utils/test/test_testutils.py deleted file mode 100644 index 8a58e6e..0000000 --- a/silx/gui/utils/test/test_testutils.py +++ /dev/null @@ -1,55 +0,0 @@ -# coding: utf-8 -# /*########################################################################## -# -# Copyright (c) 2017-2019 European Synchrotron Radiation Facility -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# ###########################################################################*/ -"""Test of testutils module.""" - -__authors__ = ["T. Vincent"] -__license__ = "MIT" -__date__ = "16/01/2017" - -import unittest -import sys - -from silx.gui import qt -from ..testutils import TestCaseQt - - -class TestOutcome(unittest.TestCase): - """Tests conversion of QImage to/from numpy array.""" - - @unittest.skipIf(sys.version_info.major <= 2, 'Python3 only') - def testNoneOutcome(self): - test = TestCaseQt() - test._currentTestSucceeded() - - -def suite(): - test_suite = unittest.TestSuite() - loader = unittest.defaultTestLoader.loadTestsFromTestCase - test_suite.addTest(loader(TestOutcome)) - return test_suite - - -if __name__ == '__main__': - unittest.main(defaultTest='suite') |