diff options
Diffstat (limited to 'tests/auto')
13 files changed, 214 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmllanguage/data/OverrideSignalComponent.qml b/tests/auto/qml/qqmllanguage/data/OverrideSignalComponent.qml new file mode 100644 index 0000000000..f984e70fc5 --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/OverrideSignalComponent.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 + +Item { + property int test: 10 +} diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.1.errors.txt b/tests/auto/qml/qqmllanguage/data/overrideSignal.1.errors.txt new file mode 100644 index 0000000000..ba8945b87c --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.1.errors.txt @@ -0,0 +1 @@ +5:12:Duplicate signal name: invalid override of property change signal or superclass signal diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.1.qml b/tests/auto/qml/qqmllanguage/data/overrideSignal.1.qml new file mode 100644 index 0000000000..d6328fa57d --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.1.qml @@ -0,0 +1,26 @@ +import QtQuick 2.0 + +Item { + property int test: 10 + signal testChanged // manual signal override, should not be valid. + + Component.onCompleted: test = 20 + + // due to an unrelated bug (QTBUG-26818), a certain + // number of properties are needed to exist before the + // crash condition is hit, currently. + property int a + property int b + property int c + property int d + property int e + property int f + property int g + property int h + property int i + property int j + property int k + property int l + property int m + property int n +} diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.2.errors.txt b/tests/auto/qml/qqmllanguage/data/overrideSignal.2.errors.txt new file mode 100644 index 0000000000..bc1490759f --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.2.errors.txt @@ -0,0 +1 @@ +5:14:Duplicate method name: invalid override of property change signal or superclass signal diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.2.qml b/tests/auto/qml/qqmllanguage/data/overrideSignal.2.qml new file mode 100644 index 0000000000..3b38d0074b --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.2.qml @@ -0,0 +1,26 @@ +import QtQuick 2.0 + +Item { + property int test: 10 + function testChanged() { console.log("function override"); } // manual function override, should not be valid. + + Component.onCompleted: test = 20 + + // due to an unrelated bug (QTBUG-26818), a certain + // number of properties are needed to exist before the + // crash condition is hit, currently. + property int a + property int b + property int c + property int d + property int e + property int f + property int g + property int h + property int i + property int j + property int k + property int l + property int m + property int n +} diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.3.qml b/tests/auto/qml/qqmllanguage/data/overrideSignal.3.qml new file mode 100644 index 0000000000..779724a3cc --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.3.qml @@ -0,0 +1,32 @@ +import QtQuick 2.0 + +Item { + property bool success: false + property int test: 10 + property int testChanged: 15 // property override is fine. + + onTestChanged: if (test == 20) success = true; + + Component.onCompleted: { + test = 20; + testChanged = 25; + } + + // due to an unrelated bug (QTBUG-26818), a certain + // number of properties are needed to exist before the + // crash condition is hit, currently. + property int a + property int b + property int c + property int d + property int e + property int f + property int g + property int h + property int i + property int j + property int k + property int l + property int m + property int n +} diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.4.errors.txt b/tests/auto/qml/qqmllanguage/data/overrideSignal.4.errors.txt new file mode 100644 index 0000000000..e2e235cc11 --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.4.errors.txt @@ -0,0 +1 @@ +6:12:Duplicate signal name: invalid override of property change signal or superclass signal diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.4.qml b/tests/auto/qml/qqmllanguage/data/overrideSignal.4.qml new file mode 100644 index 0000000000..2f5abf3c0e --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.4.qml @@ -0,0 +1,32 @@ +import QtQuick 2.0 + +Item { + property bool success: false + property alias test: child.test + signal testChanged // manual signal override, should not be valid. + + Component.onCompleted: test = 20; + + Item { + id: child + property int test: 10 + } + + // due to an unrelated bug (QTBUG-26818), a certain + // number of properties are needed to exist before the + // crash condition is hit, currently. + property int a + property int b + property int c + property int d + property int e + property int f + property int g + property int h + property int i + property int j + property int k + property int l + property int m + property int n +} diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.5.errors.txt b/tests/auto/qml/qqmllanguage/data/overrideSignal.5.errors.txt new file mode 100644 index 0000000000..e2e235cc11 --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.5.errors.txt @@ -0,0 +1 @@ +6:12:Duplicate signal name: invalid override of property change signal or superclass signal diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.5.qml b/tests/auto/qml/qqmllanguage/data/overrideSignal.5.qml new file mode 100644 index 0000000000..fd393f6211 --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.5.qml @@ -0,0 +1,32 @@ +import QtQuick 2.0 + +OverrideSignalComponent { + property bool success: (testChangedCount == 1) + property int testChangedCount: 0 + signal testChanged // override change signal from super + + Component.onCompleted: { + test = 20; + testChanged(); + } + + onTestChanged: testChangedCount = 1; // override the signal, change handler won't be called. + + // due to an unrelated bug (QTBUG-26818), a certain + // number of properties are needed to exist before the + // crash condition is hit, currently. + property int a + property int b + property int c + property int d + property int e + property int f + property int g + property int h + property int i + property int j + property int k + property int l + property int m + property int n +} diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.6.errors.txt b/tests/auto/qml/qqmllanguage/data/overrideSignal.6.errors.txt new file mode 100644 index 0000000000..da451917f5 --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.6.errors.txt @@ -0,0 +1 @@ +4:12:Duplicate signal name: invalid override of property change signal or superclass signal diff --git a/tests/auto/qml/qqmllanguage/data/overrideSignal.6.qml b/tests/auto/qml/qqmllanguage/data/overrideSignal.6.qml new file mode 100644 index 0000000000..69e56bf7fe --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/overrideSignal.6.qml @@ -0,0 +1,23 @@ +import QtQuick 2.0 + +OverrideSignalComponent { + signal objectNameChanged // manual signal override of builtin signal, invalid. + + // due to an unrelated bug (QTBUG-26818), a certain + // number of properties are needed to exist before the + // crash condition is hit, currently. + property int a + property int b + property int c + property int d + property int e + property int f + property int g + property int h + property int i + property int j + property int k + property int l + property int m + property int n +} diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp index ab547dc0ce..50e93ca3c2 100644 --- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp +++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp @@ -105,6 +105,8 @@ private slots: void idProperty(); void autoNotifyConnection(); void assignSignal(); + void overrideSignal_data(); + void overrideSignal(); void dynamicProperties(); void dynamicPropertiesNested(); void listProperties(); @@ -1157,6 +1159,37 @@ void tst_qqmllanguage::assignSignal() emit object->basicParameterizedSignal(9); } + +void tst_qqmllanguage::overrideSignal_data() +{ + QTest::addColumn<QString>("file"); + QTest::addColumn<QString>("errorFile"); + + QTest::newRow("override signal with signal") << "overrideSignal.1.qml" << "overrideSignal.1.errors.txt"; + QTest::newRow("override signal with method") << "overrideSignal.2.qml" << "overrideSignal.2.errors.txt"; + QTest::newRow("override signal with property") << "overrideSignal.3.qml" << ""; + QTest::newRow("override signal of alias property with signal") << "overrideSignal.4.qml" << "overrideSignal.4.errors.txt"; + QTest::newRow("override signal of superclass with signal") << "overrideSignal.5.qml" << "overrideSignal.5.errors.txt"; + QTest::newRow("override builtin signal with signal") << "overrideSignal.6.qml" << "overrideSignal.6.errors.txt"; +} + +void tst_qqmllanguage::overrideSignal() +{ + QFETCH(QString, file); + QFETCH(QString, errorFile); + + QQmlComponent component(&engine, testFileUrl(file)); + if (errorFile.isEmpty()) { + VERIFY_ERRORS(0); + QObject *object = component.create(); + QVERIFY(object != 0); + QVERIFY(object->property("success").toBool()); + delete object; + } else { + VERIFY_ERRORS(errorFile.toLatin1().constData()); + } +} + // Tests the creation and assignment of dynamic properties void tst_qqmllanguage::dynamicProperties() { |