Warning, /frameworks/kirigami/autotests/tst_overlaysheet.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
0003 *
0004 * SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Controls as QQC2
0009 import QtQuick.Layouts
0010 import QtTest
0011 import org.kde.kirigami as Kirigami
0012
0013 TestCase {
0014 id: root
0015
0016 name: "OverlaySheetTest"
0017 visible: true
0018 when: windowShown
0019
0020 width: 500
0021 height: 500
0022
0023 Component {
0024 id: emptyComponent
0025 Kirigami.OverlaySheet {}
0026 }
0027
0028 Component {
0029 id: itemContentComponent
0030 Kirigami.OverlaySheet {
0031 Rectangle {
0032 implicitWidth: 100
0033 implicitHeight: 200
0034 }
0035 }
0036 }
0037
0038 Component {
0039 id: viewContentWithImplicitSizeComponent
0040 Kirigami.OverlaySheet {
0041 ListView {
0042 implicitWidth: 100
0043 implicitHeight: 200
0044 }
0045 }
0046 }
0047
0048 Component {
0049 id: viewContentWithPreferredSizeComponent
0050 Kirigami.OverlaySheet {
0051 ListView {
0052 Layout.preferredWidth: 100
0053 Layout.preferredHeight: 200
0054 }
0055 }
0056 }
0057
0058 Component {
0059 id: itemContentWithMixedSizesComponent
0060 Kirigami.OverlaySheet {
0061 Rectangle {
0062 implicitWidth: 100
0063 implicitHeight: 200
0064
0065 Layout.preferredWidth: 300
0066 Layout.preferredHeight: 400
0067 }
0068 }
0069 }
0070
0071 Component {
0072 id: viewContentWithMixedSizesComponent
0073 Kirigami.OverlaySheet {
0074 ListView {
0075 implicitWidth: 100
0076 implicitHeight: 200
0077
0078 Layout.preferredWidth: 300
0079 Layout.preferredHeight: 400
0080 }
0081 }
0082 }
0083
0084 function setupWarningsFilter() {
0085 // no nullable property access errors are allowed
0086 failOnWarning(/\bnull\b/);
0087 }
0088
0089 // Note about implicit size comparison: we don't know how much space
0090 // header+footer+paddings would take, but the sum should be no less than
0091 // the implicit or preferred size given. And the difference between
0092 // implicit and preferred size is big enough (200px) that it is unlikely
0093 // to get an overlap.
0094
0095 function test_init() {
0096 setupWarningsFilter();
0097 {
0098 const sheet = createTemporaryObject(emptyComponent, null);
0099 verify(sheet);
0100 verify(!sheet.parent);
0101 }
0102 {
0103 const sheet = createTemporaryObject(emptyComponent, this);
0104 verify(sheet);
0105 compare(sheet.parent, this);
0106 }
0107 {
0108 const sheet = createTemporaryObject(viewContentWithImplicitSizeComponent, this);
0109 verify(sheet);
0110 verify(sheet.implicitWidth >= 100);
0111 verify(sheet.implicitHeight >= 200);
0112 }
0113 {
0114 const sheet = createTemporaryObject(viewContentWithPreferredSizeComponent, this);
0115 verify(sheet);
0116 verify(sheet.implicitWidth >= 100);
0117 verify(sheet.implicitHeight >= 200);
0118 }
0119 }
0120
0121 // Layout.preferred* takes precedence over implicit size
0122 function test_sizeHintPrecedence() {
0123 setupWarningsFilter();
0124 {
0125 // first, make sure 100x200 sheet's total implicit size is smaller than 300x400
0126 const sheet = createTemporaryObject(itemContentComponent, this);
0127 verify(sheet);
0128 verify(sheet.implicitWidth >= 100 && sheet.implicitWidth < 300);
0129 verify(sheet.implicitHeight >= 200 && sheet.implicitHeight < 400);
0130 }
0131 {
0132 const sheet = createTemporaryObject(itemContentWithMixedSizesComponent, this);
0133 verify(sheet);
0134 verify(sheet.implicitWidth >= 300);
0135 verify(sheet.implicitHeight >= 400);
0136 }
0137 {
0138 const sheet = createTemporaryObject(viewContentWithMixedSizesComponent, this);
0139 verify(sheet);
0140 verify(sheet.implicitWidth >= 300);
0141 verify(sheet.implicitHeight >= 400);
0142 }
0143 }
0144 }