core/transformwatcher: add TransformWatcher

This commit is contained in:
outfoxxed 2024-04-17 04:31:02 -07:00
parent fd5b73adbb
commit a06af243ad
Signed by untrusted user: outfoxxed
GPG key ID: 4C88A185FB89301E
10 changed files with 345 additions and 2 deletions

View file

@ -5,3 +5,4 @@ function (qs_test name)
endfunction()
qs_test(popupwindow popupwindow.cpp)
qs_test(transformwatcher transformwatcher.cpp)

View file

@ -0,0 +1,105 @@
#include "transformwatcher.hpp"
#include <qlist.h>
#include <qquickitem.h>
#include <qquickwindow.h>
#include <qtest.h>
#include <qtestcase.h>
#include "../transformwatcher.hpp"
void TestTransformWatcher::aParentOfB() { // NOLINT
auto a = QQuickItem();
a.setObjectName("a");
auto b = QQuickItem();
b.setObjectName("b");
b.setParentItem(&a);
auto watcher = TransformWatcher();
watcher.setA(&a);
watcher.setB(&b);
QCOMPARE(watcher.parentChain, {&a});
QCOMPARE(watcher.childChain, {&b});
}
void TestTransformWatcher::bParentOfA() { // NOLINT
auto a = QQuickItem();
a.setObjectName("a");
auto b = QQuickItem();
b.setObjectName("b");
a.setParentItem(&b);
auto watcher = TransformWatcher();
watcher.setA(&a);
watcher.setB(&b);
QCOMPARE(watcher.parentChain, (QList {&a, &b}));
QCOMPARE(watcher.childChain, {});
}
// a
// p1 b
// p2 c1
// p3
void TestTransformWatcher::aParentChainB() { // NOLINT
auto a = QQuickItem();
a.setObjectName("a");
auto b = QQuickItem();
b.setObjectName("b");
auto p1 = QQuickItem();
p1.setObjectName("p1");
auto p2 = QQuickItem();
p2.setObjectName("p2");
auto p3 = QQuickItem();
p3.setObjectName("p3");
auto c1 = QQuickItem();
c1.setObjectName("c1");
a.setParentItem(&p1);
p1.setParentItem(&p2);
p2.setParentItem(&p3);
b.setParentItem(&c1);
c1.setParentItem(&p3);
auto watcher = TransformWatcher();
watcher.setA(&a);
watcher.setB(&b);
QCOMPARE(watcher.parentChain, (QList {&a, &p1, &p2, &p3}));
QCOMPARE(watcher.childChain, (QList {&b, &c1}));
}
void TestTransformWatcher::multiWindow() { // NOLINT
auto a = QQuickItem();
a.setObjectName("a");
auto b = QQuickItem();
b.setObjectName("b");
auto p = QQuickItem();
p.setObjectName("p");
auto c = QQuickItem();
c.setObjectName("c");
a.setParentItem(&p);
b.setParentItem(&c);
auto aW = QQuickWindow();
auto bW = QQuickWindow();
p.setParentItem(aW.contentItem());
c.setParentItem(bW.contentItem());
auto watcher = TransformWatcher();
watcher.setA(&a);
watcher.setB(&b);
QCOMPARE(watcher.parentChain, (QList {&a, &p, aW.contentItem()}));
QCOMPARE(watcher.childChain, (QList {&b, &c, bW.contentItem()}));
QCOMPARE(watcher.parentWindow, &aW);
QCOMPARE(watcher.childWindow, &bW);
}
QTEST_MAIN(TestTransformWatcher);

View file

@ -0,0 +1,14 @@
#pragma once
#include <qobject.h>
#include <qtmetamacros.h>
class TestTransformWatcher: public QObject {
Q_OBJECT;
private slots:
void aParentOfB();
void bParentOfA();
void aParentChainB();
void multiWindow();
};