aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/qml/qqmllanguage/data/OverrideSignalComponent.qml5
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.1.errors.txt1
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.1.qml26
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.2.errors.txt1
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.2.qml26
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.3.qml32
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.4.errors.txt1
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.4.qml32
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.5.errors.txt1
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.5.qml32
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.6.errors.txt1
-rw-r--r--tests/auto/qml/qqmllanguage/data/overrideSignal.6.qml23
-rw-r--r--tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp33
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()
{