forked from qt-creator/qt-creator
QmlDesigner: Fix testRewriterView and add testRewriterView2
The new test testRewriterView2 is a variant with slightly different setup. We have to wait for the type information to be parsed. Change-Id: I231b8d13e6be5ad52a8c3b72ebaf81c13a24f782 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -272,14 +272,14 @@ void tst_TestCore::loadEmptyCoreModel()
|
||||
QVERIFY(compareTree(testRewriterView1->rootModelNode(), testRewriterView2->rootModelNode()));
|
||||
}
|
||||
|
||||
void tst_TestCore::testRewriterView()
|
||||
void tst_TestCore::testRewriterView2()
|
||||
{
|
||||
try {
|
||||
QPlainTextEdit textEdit;
|
||||
textEdit.setPlainText("import QtQuick 2.15;\n\nItem {\n}\n");
|
||||
textEdit.setPlainText("import QtQuick 2.15;\n\nRectangle {\n}\n");
|
||||
NotIndentingTextEditModifier textModifier(&textEdit);
|
||||
|
||||
QScopedPointer<Model> model(Model::create("QtQuick.Item"));
|
||||
QScopedPointer<Model> model(Model::create("QtQuick.Rectangle", 2, 1));
|
||||
QVERIFY(model.data());
|
||||
|
||||
QScopedPointer<TestView> view(new TestView(model.data()));
|
||||
@@ -292,15 +292,20 @@ void tst_TestCore::testRewriterView()
|
||||
testRewriterView->setTextModifier(&textModifier);
|
||||
model->attachView(testRewriterView.data());
|
||||
|
||||
ModelNode childNode(addNodeListChild(rootModelNode, "QtQuick.Rectangle", 1, 0, "data"));
|
||||
while (testRewriterView->hasIncompleteTypeInformation()) {
|
||||
QApplication::processEvents(QEventLoop::AllEvents, 1000);
|
||||
}
|
||||
|
||||
ModelNode childNode(addNodeListChild(rootModelNode, "QtQuick.Rectangle", 2, 11, "data"));
|
||||
|
||||
QVERIFY(childNode.isValid());
|
||||
childNode.setIdWithoutRefactoring("childNode");
|
||||
|
||||
ModelNode childNode2(addNodeListChild(childNode, "QtQuick.Rectangle", 1, 0, "data"));
|
||||
ModelNode childNode2(addNodeListChild(childNode, "QtQuick.Rectangle", 2, 11, "data"));
|
||||
childNode2.setIdWithoutRefactoring("childNode2");
|
||||
ModelNode childNode3(addNodeListChild(childNode2, "QtQuick.Rectangle", 1, 0, "data"));
|
||||
ModelNode childNode3(addNodeListChild(childNode2, "QtQuick.Rectangle", 2, 11, "data"));
|
||||
childNode3.setIdWithoutRefactoring("childNode3");
|
||||
ModelNode childNode4(addNodeListChild(childNode3, "QtQuick.Rectangle", 1, 0, "data"));
|
||||
ModelNode childNode4(addNodeListChild(childNode3, "QtQuick.Rectangle", 2, 11, "data"));
|
||||
childNode4.setIdWithoutRefactoring("childNode4");
|
||||
|
||||
QVERIFY(childNode.isValid());
|
||||
@@ -326,7 +331,7 @@ void tst_TestCore::testRewriterView()
|
||||
|
||||
testRewriterView->modelToTextMerger()->applyChanges();
|
||||
|
||||
childNode = addNodeListChild(rootModelNode, "QtQuick.Rectangle", 2, 0, "data");
|
||||
childNode = addNodeListChild(rootModelNode, "QtQuick.Rectangle", 2, 11, "data");
|
||||
QVERIFY(testRewriterView->modelToTextMerger()->isNodeScheduledForAddition(childNode));
|
||||
|
||||
testRewriterView->modelToTextMerger()->applyChanges();
|
||||
@@ -334,6 +339,93 @@ void tst_TestCore::testRewriterView()
|
||||
childNode.variantProperty("x").setValue(70);
|
||||
childNode.variantProperty("y").setValue(90);
|
||||
|
||||
QCOMPARE(testRewriterView->modelToTextMerger()
|
||||
->findAddedVariantProperty(childNode.variantProperty("x"))
|
||||
.value(),
|
||||
QVariant(70));
|
||||
QCOMPARE(testRewriterView->modelToTextMerger()
|
||||
->findAddedVariantProperty(childNode.variantProperty("y"))
|
||||
.value(),
|
||||
QVariant(90));
|
||||
|
||||
model->detachView(testRewriterView.data());
|
||||
} catch (Exception &e) {
|
||||
QFAIL(qPrintable(e.description()));
|
||||
}
|
||||
}
|
||||
|
||||
void tst_TestCore::testRewriterView()
|
||||
{
|
||||
try {
|
||||
const QLatin1String qmlString("import QtQuick 2.15\n"
|
||||
"Rectangle {\n"
|
||||
"}\n");
|
||||
|
||||
QPlainTextEdit textEdit;
|
||||
textEdit.setPlainText(qmlString);
|
||||
NotIndentingTextEditModifier textModifier(&textEdit);
|
||||
|
||||
QScopedPointer<Model> model(Model::create("QtQuick.Item", 2, 15));
|
||||
QVERIFY(model.data());
|
||||
|
||||
QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView());
|
||||
testRewriterView->setTextModifier(&textModifier);
|
||||
testRewriterView->setCheckSemanticErrors(true);
|
||||
model->attachView(testRewriterView.data());
|
||||
|
||||
while (testRewriterView->hasIncompleteTypeInformation()) {
|
||||
QApplication::processEvents(QEventLoop::AllEvents, 1000);
|
||||
}
|
||||
|
||||
textEdit.setPlainText(qmlString);
|
||||
|
||||
ModelNode rootModelNode = testRewriterView->rootModelNode();
|
||||
|
||||
ModelNode childNode(addNodeListChild(rootModelNode, "QtQuick.Rectangle", 2, 11, "data"));
|
||||
|
||||
QVERIFY(childNode.isValid());
|
||||
childNode.setIdWithoutRefactoring("childNode");
|
||||
|
||||
ModelNode childNode2(addNodeListChild(childNode, "QtQuick.Rectangle", 2, 11, "data"));
|
||||
childNode2.setIdWithoutRefactoring("childNode2");
|
||||
ModelNode childNode3(addNodeListChild(childNode2, "QtQuick.Rectangle", 2, 11, "data"));
|
||||
childNode3.setIdWithoutRefactoring("childNode3");
|
||||
ModelNode childNode4(addNodeListChild(childNode3, "QtQuick.Rectangle", 2, 11, "data"));
|
||||
childNode4.setIdWithoutRefactoring("childNode4");
|
||||
|
||||
QVERIFY(childNode.isValid());
|
||||
QVERIFY(childNode2.isValid());
|
||||
QVERIFY(childNode3.isValid());
|
||||
QVERIFY(childNode4.isValid());
|
||||
|
||||
testRewriterView->setModificationGroupActive(true);
|
||||
|
||||
childNode.destroy();
|
||||
|
||||
QVERIFY(!childNode.isValid());
|
||||
QVERIFY(!childNode2.isValid());
|
||||
QVERIFY(!childNode3.isValid());
|
||||
QVERIFY(!childNode4.isValid());
|
||||
|
||||
QVERIFY(testRewriterView->modelToTextMerger()->isNodeScheduledForRemoval(childNode));
|
||||
QVERIFY(!testRewriterView->modelToTextMerger()->isNodeScheduledForRemoval(childNode2));
|
||||
QVERIFY(!testRewriterView->modelToTextMerger()->isNodeScheduledForRemoval(childNode3));
|
||||
QVERIFY(!testRewriterView->modelToTextMerger()->isNodeScheduledForRemoval(childNode4));
|
||||
|
||||
QVERIFY(!rootModelNode.hasProperty("data"));
|
||||
|
||||
testRewriterView->modelToTextMerger()->applyChanges();
|
||||
|
||||
childNode = addNodeListChild(rootModelNode, "QtQuick.Rectangle", 2, 11, "data");
|
||||
QVERIFY(testRewriterView->modelToTextMerger()->isNodeScheduledForAddition(childNode));
|
||||
QVERIFY(childNode.isValid());
|
||||
|
||||
testRewriterView->modelToTextMerger()->applyChanges();
|
||||
|
||||
QVERIFY(childNode.isValid());
|
||||
childNode.variantProperty("x").setValue(70);
|
||||
childNode.variantProperty("y").setValue(90);
|
||||
|
||||
QCOMPARE(testRewriterView->modelToTextMerger()->findAddedVariantProperty(childNode.variantProperty("x")).value(), QVariant(70));
|
||||
QCOMPARE(testRewriterView->modelToTextMerger()->findAddedVariantProperty(childNode.variantProperty("y")).value(), QVariant(90));
|
||||
|
||||
|
@@ -95,6 +95,7 @@ private slots:
|
||||
// unit tests Rewriter
|
||||
//
|
||||
void testRewriterView();
|
||||
void testRewriterView2();
|
||||
void testRewriterErrors();
|
||||
void testRewriterChangeId();
|
||||
void testRewriterRemoveId();
|
||||
|
Reference in New Issue
Block a user