Warning, file /plasma/kwin/autotests/test_xcb_size_hints.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 KWin - the KDE window manager 0003 This file is part of the KDE project. 0004 0005 SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 #include "testutils.h" 0010 // KWin 0011 #include "utils/xcbutils.h" 0012 // Qt 0013 #include <QApplication> 0014 #include <QtTest> 0015 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) 0016 #include <private/qtx11extras_p.h> 0017 #else 0018 #include <QX11Info> 0019 #endif 0020 #include <netwm.h> 0021 // xcb 0022 #include <xcb/xcb.h> 0023 #include <xcb/xcb_icccm.h> 0024 0025 using namespace KWin; 0026 0027 class TestXcbSizeHints : public QObject 0028 { 0029 Q_OBJECT 0030 private Q_SLOTS: 0031 void initTestCase(); 0032 void init(); 0033 void cleanup(); 0034 void testSizeHints_data(); 0035 void testSizeHints(); 0036 void testSizeHintsEmpty(); 0037 void testSizeHintsNotSet(); 0038 void geometryHintsBeforeInit(); 0039 void geometryHintsBeforeRead(); 0040 0041 private: 0042 Xcb::Window m_testWindow; 0043 }; 0044 0045 void TestXcbSizeHints::initTestCase() 0046 { 0047 qApp->setProperty("x11RootWindow", QVariant::fromValue<quint32>(QX11Info::appRootWindow())); 0048 qApp->setProperty("x11Connection", QVariant::fromValue<void *>(QX11Info::connection())); 0049 } 0050 0051 void TestXcbSizeHints::init() 0052 { 0053 const uint32_t values[] = {true}; 0054 m_testWindow.create(QRect(0, 0, 10, 10), XCB_WINDOW_CLASS_INPUT_ONLY, XCB_CW_OVERRIDE_REDIRECT, values); 0055 QVERIFY(m_testWindow.isValid()); 0056 } 0057 0058 void TestXcbSizeHints::cleanup() 0059 { 0060 m_testWindow.reset(); 0061 } 0062 0063 void TestXcbSizeHints::testSizeHints_data() 0064 { 0065 // set 0066 QTest::addColumn<QPoint>("userPos"); 0067 QTest::addColumn<QSize>("userSize"); 0068 QTest::addColumn<QSize>("minSize"); 0069 QTest::addColumn<QSize>("maxSize"); 0070 QTest::addColumn<QSize>("resizeInc"); 0071 QTest::addColumn<QSize>("minAspect"); 0072 QTest::addColumn<QSize>("maxAspect"); 0073 QTest::addColumn<QSize>("baseSize"); 0074 QTest::addColumn<qint32>("gravity"); 0075 // read for SizeHints 0076 QTest::addColumn<qint32>("expectedFlags"); 0077 QTest::addColumn<qint32>("expectedPad0"); 0078 QTest::addColumn<qint32>("expectedPad1"); 0079 QTest::addColumn<qint32>("expectedPad2"); 0080 QTest::addColumn<qint32>("expectedPad3"); 0081 QTest::addColumn<qint32>("expectedMinWidth"); 0082 QTest::addColumn<qint32>("expectedMinHeight"); 0083 QTest::addColumn<qint32>("expectedMaxWidth"); 0084 QTest::addColumn<qint32>("expectedMaxHeight"); 0085 QTest::addColumn<qint32>("expectedWidthInc"); 0086 QTest::addColumn<qint32>("expectedHeightInc"); 0087 QTest::addColumn<qint32>("expectedMinAspectNum"); 0088 QTest::addColumn<qint32>("expectedMinAspectDen"); 0089 QTest::addColumn<qint32>("expectedMaxAspectNum"); 0090 QTest::addColumn<qint32>("expectedMaxAspectDen"); 0091 QTest::addColumn<qint32>("expectedBaseWidth"); 0092 QTest::addColumn<qint32>("expectedBaseHeight"); 0093 // read for GeometryHints 0094 QTest::addColumn<QSize>("expectedMinSize"); 0095 QTest::addColumn<QSize>("expectedMaxSize"); 0096 QTest::addColumn<QSize>("expectedResizeIncrements"); 0097 QTest::addColumn<QSize>("expectedMinAspect"); 0098 QTest::addColumn<QSize>("expectedMaxAspect"); 0099 QTest::addColumn<QSize>("expectedBaseSize"); 0100 QTest::addColumn<qint32>("expectedGravity"); 0101 0102 QTest::newRow("userPos") << QPoint(1, 2) << QSize() << QSize() << QSize() << QSize() << QSize() << QSize() << QSize() << 0 0103 << 1 << 1 << 2 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 0104 << QSize(0, 0) << QSize(INT_MAX, INT_MAX) << QSize(1, 1) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0105 QTest::newRow("userSize") << QPoint() << QSize(1, 2) << QSize() << QSize() << QSize() << QSize() << QSize() << QSize() << 0 0106 << 2 << 0 << 0 << 1 << 2 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 0107 << QSize(0, 0) << QSize(INT_MAX, INT_MAX) << QSize(1, 1) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0108 QTest::newRow("minSize") << QPoint() << QSize() << QSize(1, 2) << QSize() << QSize() << QSize() << QSize() << QSize() << 0 0109 << 16 << 0 << 0 << 0 << 0 << 1 << 2 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 0110 << QSize(1, 2) << QSize(INT_MAX, INT_MAX) << QSize(1, 1) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0111 QTest::newRow("maxSize") << QPoint() << QSize() << QSize() << QSize(1, 2) << QSize() << QSize() << QSize() << QSize() << 0 0112 << 32 << 0 << 0 << 0 << 0 << 0 << 0 << 1 << 2 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 0113 << QSize(0, 0) << QSize(1, 2) << QSize(1, 1) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0114 QTest::newRow("maxSize0") << QPoint() << QSize() << QSize() << QSize(0, 0) << QSize() << QSize() << QSize() << QSize() << 0 0115 << 32 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 0116 << QSize(0, 0) << QSize(1, 1) << QSize(1, 1) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0117 QTest::newRow("min/maxSize") << QPoint() << QSize() << QSize(1, 2) << QSize(3, 4) << QSize() << QSize() << QSize() << QSize() << 0 0118 << 48 << 0 << 0 << 0 << 0 << 1 << 2 << 3 << 4 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 0119 << QSize(1, 2) << QSize(3, 4) << QSize(1, 1) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0120 QTest::newRow("resizeInc") << QPoint() << QSize() << QSize() << QSize() << QSize(1, 2) << QSize() << QSize() << QSize() << 0 0121 << 64 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 1 << 2 << 0 << 0 << 0 << 0 << 0 << 0 0122 << QSize(0, 0) << QSize(INT_MAX, INT_MAX) << QSize(1, 2) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0123 QTest::newRow("resizeInc0") << QPoint() << QSize() << QSize() << QSize() << QSize(0, 0) << QSize() << QSize() << QSize() << 0 0124 << 64 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 0125 << QSize(0, 0) << QSize(INT_MAX, INT_MAX) << QSize(1, 1) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0126 QTest::newRow("aspect") << QPoint() << QSize() << QSize() << QSize() << QSize() << QSize(1, 2) << QSize(3, 4) << QSize() << 0 0127 << 128 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 1 << 2 << 3 << 4 << 0 << 0 0128 << QSize(0, 0) << QSize(INT_MAX, INT_MAX) << QSize(1, 1) << QSize(1, 2) << QSize(3, 4) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0129 QTest::newRow("aspectDivision0") << QPoint() << QSize() << QSize() << QSize() << QSize() << QSize(1, 0) << QSize(3, 0) << QSize() << 0 0130 << 128 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 1 << 0 << 3 << 0 << 0 << 0 0131 << QSize(0, 0) << QSize(INT_MAX, INT_MAX) << QSize(1, 1) << QSize(1, 1) << QSize(3, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_NORTH_WEST); 0132 QTest::newRow("baseSize") << QPoint() << QSize() << QSize() << QSize() << QSize() << QSize() << QSize() << QSize(1, 2) << 0 0133 << 256 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 1 << 2 0134 << QSize(1, 2) << QSize(INT_MAX, INT_MAX) << QSize(1, 1) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(1, 2) << qint32(XCB_GRAVITY_NORTH_WEST); 0135 QTest::newRow("gravity") << QPoint() << QSize() << QSize() << QSize() << QSize() << QSize() << QSize() << QSize() << qint32(XCB_GRAVITY_STATIC) 0136 << 512 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 0137 << QSize(0, 0) << QSize(INT_MAX, INT_MAX) << QSize(1, 1) << QSize(1, INT_MAX) << QSize(INT_MAX, 1) << QSize(0, 0) << qint32(XCB_GRAVITY_STATIC); 0138 QTest::newRow("all") << QPoint(1, 2) << QSize(3, 4) << QSize(5, 6) << QSize(7, 8) << QSize(9, 10) << QSize(11, 12) << QSize(13, 14) << QSize(15, 16) << 1 0139 << 1011 << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8 << 9 << 10 << 11 << 12 << 13 << 14 << 15 << 16 0140 << QSize(5, 6) << QSize(7, 8) << QSize(9, 10) << QSize(11, 12) << QSize(13, 14) << QSize(15, 16) << qint32(XCB_GRAVITY_NORTH_WEST); 0141 } 0142 0143 void TestXcbSizeHints::testSizeHints() 0144 { 0145 xcb_size_hints_t hints; 0146 memset(&hints, 0, sizeof(hints)); 0147 QFETCH(QPoint, userPos); 0148 if (!userPos.isNull()) { 0149 xcb_icccm_size_hints_set_position(&hints, 1, userPos.x(), userPos.y()); 0150 } 0151 QFETCH(QSize, userSize); 0152 if (userSize.isValid()) { 0153 xcb_icccm_size_hints_set_size(&hints, 1, userSize.width(), userSize.height()); 0154 } 0155 QFETCH(QSize, minSize); 0156 if (minSize.isValid()) { 0157 xcb_icccm_size_hints_set_min_size(&hints, minSize.width(), minSize.height()); 0158 } 0159 QFETCH(QSize, maxSize); 0160 if (maxSize.isValid()) { 0161 xcb_icccm_size_hints_set_max_size(&hints, maxSize.width(), maxSize.height()); 0162 } 0163 QFETCH(QSize, resizeInc); 0164 if (resizeInc.isValid()) { 0165 xcb_icccm_size_hints_set_resize_inc(&hints, resizeInc.width(), resizeInc.height()); 0166 } 0167 QFETCH(QSize, minAspect); 0168 QFETCH(QSize, maxAspect); 0169 if (minAspect.isValid() && maxAspect.isValid()) { 0170 xcb_icccm_size_hints_set_aspect(&hints, minAspect.width(), minAspect.height(), maxAspect.width(), maxAspect.height()); 0171 } 0172 QFETCH(QSize, baseSize); 0173 if (baseSize.isValid()) { 0174 xcb_icccm_size_hints_set_base_size(&hints, baseSize.width(), baseSize.height()); 0175 } 0176 QFETCH(qint32, gravity); 0177 if (gravity != 0) { 0178 xcb_icccm_size_hints_set_win_gravity(&hints, (xcb_gravity_t)gravity); 0179 } 0180 xcb_icccm_set_wm_normal_hints(QX11Info::connection(), m_testWindow, &hints); 0181 xcb_flush(QX11Info::connection()); 0182 0183 Xcb::GeometryHints geoHints; 0184 geoHints.init(m_testWindow); 0185 geoHints.read(); 0186 QCOMPARE(geoHints.hasAspect(), minAspect.isValid() && maxAspect.isValid()); 0187 QCOMPARE(geoHints.hasBaseSize(), baseSize.isValid()); 0188 QCOMPARE(geoHints.hasMaxSize(), maxSize.isValid()); 0189 QCOMPARE(geoHints.hasMinSize(), minSize.isValid()); 0190 QCOMPARE(geoHints.hasPosition(), !userPos.isNull()); 0191 QCOMPARE(geoHints.hasResizeIncrements(), resizeInc.isValid()); 0192 QCOMPARE(geoHints.hasSize(), userSize.isValid()); 0193 QCOMPARE(geoHints.hasWindowGravity(), gravity != 0); 0194 QTEST(geoHints.baseSize().toSize(), "expectedBaseSize"); 0195 QTEST(geoHints.maxAspect(), "expectedMaxAspect"); 0196 QTEST(geoHints.maxSize().toSize(), "expectedMaxSize"); 0197 QTEST(geoHints.minAspect(), "expectedMinAspect"); 0198 QTEST(geoHints.minSize().toSize(), "expectedMinSize"); 0199 QTEST(geoHints.resizeIncrements().toSize(), "expectedResizeIncrements"); 0200 QTEST(qint32(geoHints.windowGravity()), "expectedGravity"); 0201 0202 auto sizeHints = geoHints.m_sizeHints; 0203 QVERIFY(sizeHints); 0204 QTEST(sizeHints->flags, "expectedFlags"); 0205 QTEST(sizeHints->pad[0], "expectedPad0"); 0206 QTEST(sizeHints->pad[1], "expectedPad1"); 0207 QTEST(sizeHints->pad[2], "expectedPad2"); 0208 QTEST(sizeHints->pad[3], "expectedPad3"); 0209 QTEST(sizeHints->minWidth, "expectedMinWidth"); 0210 QTEST(sizeHints->minHeight, "expectedMinHeight"); 0211 QTEST(sizeHints->maxWidth, "expectedMaxWidth"); 0212 QTEST(sizeHints->maxHeight, "expectedMaxHeight"); 0213 QTEST(sizeHints->widthInc, "expectedWidthInc"); 0214 QTEST(sizeHints->heightInc, "expectedHeightInc"); 0215 QTEST(sizeHints->minAspect[0], "expectedMinAspectNum"); 0216 QTEST(sizeHints->minAspect[1], "expectedMinAspectDen"); 0217 QTEST(sizeHints->maxAspect[0], "expectedMaxAspectNum"); 0218 QTEST(sizeHints->maxAspect[1], "expectedMaxAspectDen"); 0219 QTEST(sizeHints->baseWidth, "expectedBaseWidth"); 0220 QTEST(sizeHints->baseHeight, "expectedBaseHeight"); 0221 QCOMPARE(sizeHints->winGravity, gravity); 0222 0223 // copy 0224 Xcb::GeometryHints::NormalHints::SizeHints sizeHints2 = *sizeHints; 0225 QTEST(sizeHints2.flags, "expectedFlags"); 0226 QTEST(sizeHints2.pad[0], "expectedPad0"); 0227 QTEST(sizeHints2.pad[1], "expectedPad1"); 0228 QTEST(sizeHints2.pad[2], "expectedPad2"); 0229 QTEST(sizeHints2.pad[3], "expectedPad3"); 0230 QTEST(sizeHints2.minWidth, "expectedMinWidth"); 0231 QTEST(sizeHints2.minHeight, "expectedMinHeight"); 0232 QTEST(sizeHints2.maxWidth, "expectedMaxWidth"); 0233 QTEST(sizeHints2.maxHeight, "expectedMaxHeight"); 0234 QTEST(sizeHints2.widthInc, "expectedWidthInc"); 0235 QTEST(sizeHints2.heightInc, "expectedHeightInc"); 0236 QTEST(sizeHints2.minAspect[0], "expectedMinAspectNum"); 0237 QTEST(sizeHints2.minAspect[1], "expectedMinAspectDen"); 0238 QTEST(sizeHints2.maxAspect[0], "expectedMaxAspectNum"); 0239 QTEST(sizeHints2.maxAspect[1], "expectedMaxAspectDen"); 0240 QTEST(sizeHints2.baseWidth, "expectedBaseWidth"); 0241 QTEST(sizeHints2.baseHeight, "expectedBaseHeight"); 0242 QCOMPARE(sizeHints2.winGravity, gravity); 0243 } 0244 0245 void TestXcbSizeHints::testSizeHintsEmpty() 0246 { 0247 xcb_size_hints_t xcbHints; 0248 memset(&xcbHints, 0, sizeof(xcbHints)); 0249 xcb_icccm_set_wm_normal_hints(QX11Info::connection(), m_testWindow, &xcbHints); 0250 xcb_flush(QX11Info::connection()); 0251 0252 Xcb::GeometryHints hints; 0253 hints.init(m_testWindow); 0254 hints.read(); 0255 QVERIFY(!hints.hasAspect()); 0256 QVERIFY(!hints.hasBaseSize()); 0257 QVERIFY(!hints.hasMaxSize()); 0258 QVERIFY(!hints.hasMinSize()); 0259 QVERIFY(!hints.hasPosition()); 0260 QVERIFY(!hints.hasResizeIncrements()); 0261 QVERIFY(!hints.hasSize()); 0262 QVERIFY(!hints.hasWindowGravity()); 0263 0264 QCOMPARE(hints.baseSize(), QSize(0, 0)); 0265 QCOMPARE(hints.maxAspect(), QSize(INT_MAX, 1)); 0266 QCOMPARE(hints.maxSize(), QSize(INT_MAX, INT_MAX)); 0267 QCOMPARE(hints.minAspect(), QSize(1, INT_MAX)); 0268 QCOMPARE(hints.minSize(), QSize(0, 0)); 0269 QCOMPARE(hints.resizeIncrements(), QSize(1, 1)); 0270 QCOMPARE(hints.windowGravity(), XCB_GRAVITY_NORTH_WEST); 0271 0272 auto sizeHints = hints.m_sizeHints; 0273 QVERIFY(sizeHints); 0274 QCOMPARE(sizeHints->flags, 0); 0275 QCOMPARE(sizeHints->pad[0], 0); 0276 QCOMPARE(sizeHints->pad[1], 0); 0277 QCOMPARE(sizeHints->pad[2], 0); 0278 QCOMPARE(sizeHints->pad[3], 0); 0279 QCOMPARE(sizeHints->minWidth, 0); 0280 QCOMPARE(sizeHints->minHeight, 0); 0281 QCOMPARE(sizeHints->maxWidth, 0); 0282 QCOMPARE(sizeHints->maxHeight, 0); 0283 QCOMPARE(sizeHints->widthInc, 0); 0284 QCOMPARE(sizeHints->heightInc, 0); 0285 QCOMPARE(sizeHints->minAspect[0], 0); 0286 QCOMPARE(sizeHints->minAspect[1], 0); 0287 QCOMPARE(sizeHints->maxAspect[0], 0); 0288 QCOMPARE(sizeHints->maxAspect[1], 0); 0289 QCOMPARE(sizeHints->baseWidth, 0); 0290 QCOMPARE(sizeHints->baseHeight, 0); 0291 QCOMPARE(sizeHints->winGravity, 0); 0292 } 0293 0294 void TestXcbSizeHints::testSizeHintsNotSet() 0295 { 0296 Xcb::GeometryHints hints; 0297 hints.init(m_testWindow); 0298 hints.read(); 0299 QVERIFY(!hints.m_sizeHints); 0300 QVERIFY(!hints.hasAspect()); 0301 QVERIFY(!hints.hasBaseSize()); 0302 QVERIFY(!hints.hasMaxSize()); 0303 QVERIFY(!hints.hasMinSize()); 0304 QVERIFY(!hints.hasPosition()); 0305 QVERIFY(!hints.hasResizeIncrements()); 0306 QVERIFY(!hints.hasSize()); 0307 QVERIFY(!hints.hasWindowGravity()); 0308 0309 QCOMPARE(hints.baseSize(), QSize(0, 0)); 0310 QCOMPARE(hints.maxAspect(), QSize(INT_MAX, 1)); 0311 QCOMPARE(hints.maxSize(), QSize(INT_MAX, INT_MAX)); 0312 QCOMPARE(hints.minAspect(), QSize(1, INT_MAX)); 0313 QCOMPARE(hints.minSize(), QSize(0, 0)); 0314 QCOMPARE(hints.resizeIncrements(), QSize(1, 1)); 0315 QCOMPARE(hints.windowGravity(), XCB_GRAVITY_NORTH_WEST); 0316 } 0317 0318 void TestXcbSizeHints::geometryHintsBeforeInit() 0319 { 0320 Xcb::GeometryHints hints; 0321 QVERIFY(!hints.hasAspect()); 0322 QVERIFY(!hints.hasBaseSize()); 0323 QVERIFY(!hints.hasMaxSize()); 0324 QVERIFY(!hints.hasMinSize()); 0325 QVERIFY(!hints.hasPosition()); 0326 QVERIFY(!hints.hasResizeIncrements()); 0327 QVERIFY(!hints.hasSize()); 0328 QVERIFY(!hints.hasWindowGravity()); 0329 0330 QCOMPARE(hints.baseSize(), QSize(0, 0)); 0331 QCOMPARE(hints.maxAspect(), QSize(INT_MAX, 1)); 0332 QCOMPARE(hints.maxSize(), QSize(INT_MAX, INT_MAX)); 0333 QCOMPARE(hints.minAspect(), QSize(1, INT_MAX)); 0334 QCOMPARE(hints.minSize(), QSize(0, 0)); 0335 QCOMPARE(hints.resizeIncrements(), QSize(1, 1)); 0336 QCOMPARE(hints.windowGravity(), XCB_GRAVITY_NORTH_WEST); 0337 } 0338 0339 void TestXcbSizeHints::geometryHintsBeforeRead() 0340 { 0341 xcb_size_hints_t xcbHints; 0342 memset(&xcbHints, 0, sizeof(xcbHints)); 0343 xcb_icccm_size_hints_set_position(&xcbHints, 1, 1, 2); 0344 xcb_icccm_set_wm_normal_hints(QX11Info::connection(), m_testWindow, &xcbHints); 0345 xcb_flush(QX11Info::connection()); 0346 0347 Xcb::GeometryHints hints; 0348 hints.init(m_testWindow); 0349 QVERIFY(!hints.hasAspect()); 0350 QVERIFY(!hints.hasBaseSize()); 0351 QVERIFY(!hints.hasMaxSize()); 0352 QVERIFY(!hints.hasMinSize()); 0353 QVERIFY(!hints.hasPosition()); 0354 QVERIFY(!hints.hasResizeIncrements()); 0355 QVERIFY(!hints.hasSize()); 0356 QVERIFY(!hints.hasWindowGravity()); 0357 0358 QCOMPARE(hints.baseSize(), QSize(0, 0)); 0359 QCOMPARE(hints.maxAspect(), QSize(INT_MAX, 1)); 0360 QCOMPARE(hints.maxSize(), QSize(INT_MAX, INT_MAX)); 0361 QCOMPARE(hints.minAspect(), QSize(1, INT_MAX)); 0362 QCOMPARE(hints.minSize(), QSize(0, 0)); 0363 QCOMPARE(hints.resizeIncrements(), QSize(1, 1)); 0364 QCOMPARE(hints.windowGravity(), XCB_GRAVITY_NORTH_WEST); 0365 } 0366 0367 Q_CONSTRUCTOR_FUNCTION(forceXcb) 0368 QTEST_MAIN(TestXcbSizeHints) 0369 #include "test_xcb_size_hints.moc"