98 lines
3.6 KiB
Python
98 lines
3.6 KiB
Python
from __future__ import absolute_import
|
|
|
|
import sys
|
|
|
|
import pytest
|
|
from qtpy import PYSIDE, PYSIDE2, PYQT4
|
|
from qtpy.QtWidgets import QApplication
|
|
from qtpy.QtWidgets import QHeaderView
|
|
from qtpy.QtCore import Qt
|
|
from qtpy.QtCore import QAbstractListModel
|
|
|
|
|
|
PY3 = sys.version[0] == "3"
|
|
|
|
|
|
def get_qapp(icon_path=None):
|
|
qapp = QApplication.instance()
|
|
if qapp is None:
|
|
qapp = QApplication([''])
|
|
return qapp
|
|
|
|
|
|
@pytest.mark.skipif(PY3 or PYSIDE2, reason="It fails on Python 3 and PySide2")
|
|
def test_patched_qheaderview():
|
|
"""
|
|
This will test whether QHeaderView has the new methods introduced in Qt5.
|
|
It will then create an instance of QHeaderView and test that no exceptions
|
|
are raised and that some basic behaviour works.
|
|
"""
|
|
assert QHeaderView.sectionsClickable is not None
|
|
assert QHeaderView.sectionsMovable is not None
|
|
assert QHeaderView.sectionResizeMode is not None
|
|
assert QHeaderView.setSectionsClickable is not None
|
|
assert QHeaderView.setSectionsMovable is not None
|
|
assert QHeaderView.setSectionResizeMode is not None
|
|
|
|
# setup a model and add it to a headerview
|
|
qapp = get_qapp()
|
|
headerview = QHeaderView(Qt.Horizontal)
|
|
class Model(QAbstractListModel):
|
|
pass
|
|
model = Model()
|
|
headerview.setModel(model)
|
|
assert headerview.count() == 1
|
|
|
|
# test it
|
|
assert isinstance(headerview.sectionsClickable(), bool)
|
|
assert isinstance(headerview.sectionsMovable(), bool)
|
|
if PYSIDE:
|
|
assert isinstance(headerview.sectionResizeMode(0),
|
|
QHeaderView.ResizeMode)
|
|
else:
|
|
assert isinstance(headerview.sectionResizeMode(0), int)
|
|
|
|
headerview.setSectionsClickable(True)
|
|
assert headerview.sectionsClickable() == True
|
|
headerview.setSectionsClickable(False)
|
|
assert headerview.sectionsClickable() == False
|
|
|
|
headerview.setSectionsMovable(True)
|
|
assert headerview.sectionsMovable() == True
|
|
headerview.setSectionsMovable(False)
|
|
assert headerview.sectionsMovable() == False
|
|
|
|
headerview.setSectionResizeMode(QHeaderView.Interactive)
|
|
assert headerview.sectionResizeMode(0) == QHeaderView.Interactive
|
|
headerview.setSectionResizeMode(QHeaderView.Fixed)
|
|
assert headerview.sectionResizeMode(0) == QHeaderView.Fixed
|
|
headerview.setSectionResizeMode(QHeaderView.Stretch)
|
|
assert headerview.sectionResizeMode(0) == QHeaderView.Stretch
|
|
headerview.setSectionResizeMode(QHeaderView.ResizeToContents)
|
|
assert headerview.sectionResizeMode(0) == QHeaderView.ResizeToContents
|
|
|
|
headerview.setSectionResizeMode(0, QHeaderView.Interactive)
|
|
assert headerview.sectionResizeMode(0) == QHeaderView.Interactive
|
|
headerview.setSectionResizeMode(0, QHeaderView.Fixed)
|
|
assert headerview.sectionResizeMode(0) == QHeaderView.Fixed
|
|
headerview.setSectionResizeMode(0, QHeaderView.Stretch)
|
|
assert headerview.sectionResizeMode(0) == QHeaderView.Stretch
|
|
headerview.setSectionResizeMode(0, QHeaderView.ResizeToContents)
|
|
assert headerview.sectionResizeMode(0) == QHeaderView.ResizeToContents
|
|
|
|
# test that the old methods in Qt4 raise exceptions
|
|
if PYQT4 or PYSIDE:
|
|
with pytest.warns(UserWarning):
|
|
headerview.isClickable()
|
|
with pytest.warns(UserWarning):
|
|
headerview.isMovable()
|
|
with pytest.warns(UserWarning):
|
|
headerview.resizeMode(0)
|
|
with pytest.warns(UserWarning):
|
|
headerview.setClickable(True)
|
|
with pytest.warns(UserWarning):
|
|
headerview.setMovable(True)
|
|
with pytest.warns(UserWarning):
|
|
headerview.setResizeMode(0, QHeaderView.Interactive)
|
|
|
|
|