Warning, /frameworks/kirigami/autotests/tst_padding.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 org.kde.kirigami as Kirigami
0010 import QtTest
0011 
0012 TestCase {
0013     id: root
0014 
0015     name: "PaddingTest"
0016     visible: true
0017     when: windowShown
0018 
0019     width: 300
0020     height: 300
0021 
0022     Component {
0023         id: spyComponent
0024         SignalSpy {}
0025     }
0026 
0027     Component {
0028         id: emptyComponent
0029         Kirigami.Padding {}
0030     }
0031 
0032     function test_empty() {
0033         const item = createTemporaryObject(emptyComponent, this);
0034         verify(item);
0035         verify(!item.contentItem);
0036 
0037         compare(item.implicitWidth, 0);
0038         compare(item.implicitHeight, 0);
0039         compare(item.width, 0);
0040         compare(item.height, 0);
0041         compare(item.implicitContentWidth, 0);
0042         compare(item.implicitContentHeight, 0);
0043 
0044         compare(item.padding, 0);
0045         compare(item.topPadding, 0);
0046         compare(item.leftPadding, 0);
0047         compare(item.rightPadding, 0);
0048         compare(item.bottomPadding, 0);
0049         compare(item.verticalPadding, 0);
0050         compare(item.horizontalPadding, 0);
0051         compare(item.baselineOffset, 0);
0052 
0053         item.topPadding = 1;
0054         item.leftPadding = 2;
0055         item.rightPadding = 30;
0056         item.bottomPadding = 40;
0057         verify(waitForRendering(item))
0058 
0059         compare(item.implicitWidth, 32);
0060         compare(item.implicitHeight, 41);
0061     }
0062 
0063     function test_paddingInheritance() {
0064         const item = createTemporaryObject(emptyComponent, this);
0065         verify(item);
0066 
0067         const paddingSpy = createTemporaryObject(spyComponent, this, { target: item, signalName: "paddingChanged" });
0068         verify(paddingSpy);
0069         const topPaddingSpy = createTemporaryObject(spyComponent, this, { target: item, signalName: "topPaddingChanged" });
0070         verify(topPaddingSpy);
0071         const leftPaddingSpy = createTemporaryObject(spyComponent, this, { target: item, signalName: "leftPaddingChanged" });
0072         verify(leftPaddingSpy);
0073         const rightPaddingSpy = createTemporaryObject(spyComponent, this, { target: item, signalName: "rightPaddingChanged" });
0074         verify(rightPaddingSpy);
0075         const bottomPaddingSpy = createTemporaryObject(spyComponent, this, { target: item, signalName: "bottomPaddingChanged" });
0076         verify(bottomPaddingSpy);
0077         const verticalPaddingSpy = createTemporaryObject(spyComponent, this, { target: item, signalName: "verticalPaddingChanged" });
0078         verify(verticalPaddingSpy);
0079         const horizontalPaddingSpy = createTemporaryObject(spyComponent, this, { target: item, signalName: "horizontalPaddingChanged" });
0080         verify(horizontalPaddingSpy);
0081 
0082         compare(item.padding, 0);
0083         compare(item.topPadding, 0);
0084         compare(item.leftPadding, 0);
0085         compare(item.rightPadding, 0);
0086         compare(item.bottomPadding, 0);
0087         compare(item.verticalPadding, 0);
0088         compare(item.horizontalPadding, 0);
0089         compare(item.baselineOffset, 0);
0090 
0091         item.padding = 1;
0092         compare(paddingSpy.count, 1), paddingSpy.clear();
0093         compare(topPaddingSpy.count, 1), topPaddingSpy.clear();
0094         compare(leftPaddingSpy.count, 1), leftPaddingSpy.clear();
0095         compare(rightPaddingSpy.count, 1), rightPaddingSpy.clear();
0096         compare(bottomPaddingSpy.count, 1), bottomPaddingSpy.clear();
0097         compare(verticalPaddingSpy.count, 1), verticalPaddingSpy.clear();
0098         compare(horizontalPaddingSpy.count, 1), horizontalPaddingSpy.clear();
0099 
0100         compare(item.padding, 1);
0101         compare(item.topPadding, 1);
0102         compare(item.leftPadding, 1);
0103         compare(item.rightPadding, 1);
0104         compare(item.bottomPadding, 1);
0105         compare(item.verticalPadding, 1);
0106         compare(item.horizontalPadding, 1);
0107         compare(item.baselineOffset, 0);
0108 
0109         item.leftPadding = 2;
0110         compare(leftPaddingSpy.count, 1), leftPaddingSpy.clear();
0111 
0112         compare(item.padding, 1);
0113         compare(item.topPadding, 1);
0114         compare(item.leftPadding, 2);
0115         compare(item.rightPadding, 1);
0116         compare(item.bottomPadding, 1);
0117 
0118         item.horizontalPadding = 3;
0119         compare(leftPaddingSpy.count, 0);
0120         compare(rightPaddingSpy.count, 1), rightPaddingSpy.clear();
0121         compare(horizontalPaddingSpy.count, 1), horizontalPaddingSpy.clear();
0122 
0123         compare(item.padding, 1);
0124         compare(item.topPadding, 1);
0125         compare(item.leftPadding, 2);
0126         compare(item.rightPadding, 3);
0127         compare(item.bottomPadding, 1);
0128         compare(item.horizontalPadding, 3);
0129         compare(item.verticalPadding, 1);
0130 
0131         item.verticalPadding = 4;
0132         verify(waitForRendering(item))
0133         compare(topPaddingSpy.count, 1), topPaddingSpy.clear();
0134         compare(bottomPaddingSpy.count, 1), bottomPaddingSpy.clear();
0135         compare(verticalPaddingSpy.count, 1), verticalPaddingSpy.clear();
0136 
0137         compare(item.padding, 1);
0138         compare(item.topPadding, 4);
0139         compare(item.leftPadding, 2);
0140         compare(item.rightPadding, 3);
0141         compare(item.bottomPadding, 4);
0142         compare(item.horizontalPadding, 3);
0143         compare(item.verticalPadding, 4);
0144 
0145         item.topPadding = 5;
0146         verify(waitForRendering(item))
0147         compare(topPaddingSpy.count, 1), topPaddingSpy.clear();
0148 
0149         compare(item.padding, 1);
0150         compare(item.topPadding, 5);
0151         compare(item.leftPadding, 2);
0152         compare(item.rightPadding, 3);
0153         compare(item.bottomPadding, 4);
0154         compare(item.horizontalPadding, 3);
0155         compare(item.verticalPadding, 4);
0156 
0157         item.bottomPadding = 6;
0158         verify(waitForRendering(item))
0159         compare(bottomPaddingSpy.count, 1), bottomPaddingSpy.clear();
0160 
0161         compare(item.padding, 1);
0162         compare(item.topPadding, 5);
0163         compare(item.leftPadding, 2);
0164         compare(item.rightPadding, 3);
0165         compare(item.bottomPadding, 6);
0166         compare(item.horizontalPadding, 3);
0167         compare(item.verticalPadding, 4);
0168 
0169         item.bottomPadding = undefined;
0170         compare(bottomPaddingSpy.count, 1), bottomPaddingSpy.clear();
0171 
0172         compare(item.padding, 1);
0173         compare(item.topPadding, 5);
0174         compare(item.leftPadding, 2);
0175         compare(item.rightPadding, 3);
0176         compare(item.bottomPadding, 4);
0177         compare(item.horizontalPadding, 3);
0178         compare(item.verticalPadding, 4);
0179 
0180         item.verticalPadding = undefined;
0181         compare(topPaddingSpy.count, 0);
0182         compare(bottomPaddingSpy.count, 1), bottomPaddingSpy.clear();
0183         compare(verticalPaddingSpy.count, 1), verticalPaddingSpy.clear();
0184 
0185         compare(item.padding, 1);
0186         compare(item.topPadding, 5);
0187         compare(item.leftPadding, 2);
0188         compare(item.rightPadding, 3);
0189         compare(item.bottomPadding, 1);
0190         compare(item.horizontalPadding, 3);
0191         compare(item.verticalPadding, 1);
0192 
0193         item.rightPadding = 7;
0194         verify(waitForRendering(item))
0195         compare(rightPaddingSpy.count, 1), rightPaddingSpy.clear();
0196 
0197         compare(item.padding, 1);
0198         compare(item.topPadding, 5);
0199         compare(item.leftPadding, 2);
0200         compare(item.rightPadding, 7);
0201         compare(item.bottomPadding, 1);
0202         compare(item.horizontalPadding, 3);
0203         compare(item.verticalPadding, 1);
0204     }
0205 
0206     Component {
0207         id: sizedComponent
0208         Kirigami.Padding {
0209             topPadding: 1
0210             leftPadding: 2
0211             rightPadding: 30
0212             bottomPadding: 40
0213 
0214             contentItem: Rectangle {
0215                 color: "#1EA8F7"
0216                 implicitWidth: 100
0217                 implicitHeight: 200
0218             }
0219         }
0220     }
0221 
0222     function test_fixedSizeComponent() {
0223         const item = createTemporaryObject(sizedComponent, this);
0224         verify(item);
0225         verify(waitForRendering(item))
0226 
0227         compare(item.implicitWidth, 132);
0228         compare(item.implicitHeight, 241);
0229 
0230         const widthSpy = createTemporaryObject(spyComponent, this, { target: item, signalName: "implicitWidthChanged" });
0231         const heightSpy = createTemporaryObject(spyComponent, this, { target: item, signalName: "implicitHeightChanged" });
0232 
0233         item.contentItem.implicitWidth = 1000;
0234         verify(waitForRendering(item))
0235         compare(widthSpy.count, 1), widthSpy.clear();
0236         compare(heightSpy.count, 0);
0237 
0238         item.contentItem.implicitHeight = 2000;
0239         verify(waitForRendering(item))
0240         compare(widthSpy.count, 0);
0241         compare(heightSpy.count, 1), heightSpy.clear();
0242 
0243         compare(item.implicitWidth, 1032);
0244         compare(item.implicitHeight, 2041);
0245 
0246         item.width = 100;
0247         item.height = 200;
0248         verify(waitForRendering(item))
0249 
0250         compare(item.contentItem.width, 100 - 2 - 30);
0251         compare(item.contentItem.height, 200 - 1 - 40);
0252     }
0253 
0254     Component {
0255         id: dynamicComponent
0256         Kirigami.Padding {
0257             topPadding: 1
0258             leftPadding: 2
0259             rightPadding: 30
0260             bottomPadding: 40
0261         }
0262     }
0263 
0264     Component {
0265         id: contentComponent
0266         Rectangle {
0267             color: "#1EA8F7"
0268             implicitWidth: 100
0269             implicitHeight: 200
0270         }
0271     }
0272 
0273     function test_dynamicComponent() {
0274         const item = createTemporaryObject(dynamicComponent, this);
0275         verify(item);
0276         verify(waitForRendering(item))
0277         const content = createTemporaryObject(contentComponent, this);
0278         verify(content);
0279 
0280         compare(item.width, 32);
0281         compare(item.height, 41);
0282 
0283         item.contentItem = content;
0284         verify(waitForRendering(item))
0285 
0286         compare(item.implicitWidth, 132);
0287         compare(item.implicitHeight, 241);
0288     }
0289 }