Pillow/Tests/test_imageqt.py

61 lines
1.7 KiB
Python
Raw Normal View History

2020-03-27 11:50:51 +03:00
import pytest
from PIL import ImageQt
2020-03-27 12:30:00 +03:00
from .helper import hopper
if ImageQt.qt_is_installed:
2015-06-19 08:35:56 +03:00
from PIL.ImageQt import qRgba
2019-06-13 18:54:46 +03:00
2020-03-28 04:51:28 +03:00
@pytest.mark.skipif(not ImageQt.qt_is_installed, reason="Qt bindings are not installed")
class PillowQPixmapTestCase:
@classmethod
def setup_class(self):
2020-03-27 12:30:00 +03:00
try:
if ImageQt.qt_version == "5":
from PyQt5.QtGui import QGuiApplication
elif ImageQt.qt_version == "side2":
from PySide2.QtGui import QGuiApplication
except ImportError:
pytest.skip("QGuiApplication not installed")
return
2020-03-28 04:51:28 +03:00
self.app = QGuiApplication([])
2014-06-10 13:10:47 +04:00
2020-03-28 04:51:28 +03:00
@classmethod
def teardown_class(self):
self.app.quit()
self.app = None
2020-03-28 04:51:28 +03:00
@pytest.mark.skipif(not ImageQt.qt_is_installed, reason="Qt bindings are not installed")
2020-03-27 12:30:00 +03:00
def test_rgb():
# from https://doc.qt.io/archives/qt-4.8/qcolor.html
# typedef QRgb
# An ARGB quadruplet on the format #AARRGGBB,
# equivalent to an unsigned int.
if ImageQt.qt_version == "5":
from PyQt5.QtGui import qRgb
elif ImageQt.qt_version == "side2":
from PySide2.QtGui import qRgb
2015-06-19 08:36:23 +03:00
2020-03-27 12:30:00 +03:00
assert qRgb(0, 0, 0) == qRgba(0, 0, 0, 255)
def checkrgb(r, g, b):
val = ImageQt.rgb(r, g, b)
val = val % 2 ** 24 # drop the alpha
assert val >> 16 == r
assert ((val >> 8) % 2 ** 8) == g
assert val % 2 ** 8 == b
checkrgb(0, 0, 0)
checkrgb(255, 0, 0)
checkrgb(0, 255, 0)
checkrgb(0, 0, 255)
2020-03-28 04:51:28 +03:00
@pytest.mark.skipif(not ImageQt.qt_is_installed, reason="Qt bindings are not installed")
2020-03-27 12:30:00 +03:00
def test_image():
for mode in ("1", "RGB", "RGBA", "L", "P"):
ImageQt.ImageQt(hopper(mode))