diff options
Diffstat (limited to 'tests/auto/declarative/qdeclarativestates')
57 files changed, 0 insertions, 2698 deletions
diff --git a/tests/auto/declarative/qdeclarativestates/data/ExtendedRectangle.qml b/tests/auto/declarative/qdeclarativestates/data/ExtendedRectangle.qml deleted file mode 100644 index 1ea346b841..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/ExtendedRectangle.qml +++ /dev/null @@ -1,19 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: extendedRect - objectName: "extendedRect" - property color extendedColor: "orange" - - width: 100; height: 100 - color: "red" - states: State { - name: "green" - PropertyChanges { - target: rect - onDidSomething: { - extendedRect.color = "green" - extendedColor = "green" - } - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/Implementation/MyType.qml b/tests/auto/declarative/qdeclarativestates/data/Implementation/MyType.qml deleted file mode 100644 index 01eb32cd4d..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/Implementation/MyType.qml +++ /dev/null @@ -1,32 +0,0 @@ -import QtQuick 2.0 - -Item { - Column { - anchors.centerIn: parent - Image { id: image1; objectName: "image1" } - Image { id: image2; objectName: "image2" } - Image { id: image3; objectName: "image3" } - } - - states: State { - name: "SetImageState" - PropertyChanges { - target: image1 - source: "images/qt-logo.png" - } - PropertyChanges { - target: image2 - source: "images/" + "qt-logo.png" - } - PropertyChanges { - target: image3 - source: "images/" + (true ? "qt-logo.png" : "") - } - } - - MouseArea { - anchors.fill: parent - onClicked: parent.state = "SetImageState" - } - -} diff --git a/tests/auto/declarative/qdeclarativestates/data/Implementation/images/qt-logo.png b/tests/auto/declarative/qdeclarativestates/data/Implementation/images/qt-logo.png Binary files differdeleted file mode 100644 index 14ddf2a028..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/Implementation/images/qt-logo.png +++ /dev/null diff --git a/tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml b/tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml deleted file mode 100644 index 5ba7c3ad6f..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml +++ /dev/null @@ -1,29 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 1024 - height: 768 - - Item { - id: area - objectName: "area" - property int numx: 6 - property int cellwidth: 1024/numx - - onWidthChanged: { - width = width>1024?1024:width; - } - - state: 'minimal' - states: [ - State { - name: 'minimal' - PropertyChanges { - target: area - width: cellwidth - } - } - ] - - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml deleted file mode 100644 index 378f5390f9..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml +++ /dev/null @@ -1,23 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: container - width: 200; height: 200 - Rectangle { - id: myRect - objectName: "MyRect" - width: 50; height: 50 - color: "green"; - anchors.left: parent.left - anchors.leftMargin: 5 - } - states: State { - name: "right" - AnchorChanges { - id: ancCh - target: myRect; - anchors.left: undefined - anchors.right: container.right - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges2.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges2.qml deleted file mode 100644 index dc7f8ef0d1..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges2.qml +++ /dev/null @@ -1,21 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 200; height: 200 - Rectangle { - id: myRect - objectName: "MyRect" - width: 50; height: 50 - color: "green"; - anchors.left: parent.left - anchors.leftMargin: 5 - } - states: State { - name: "right" - AnchorChanges { - target: myRect; - anchors.left: undefined - anchors.right: parent.right - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges3.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges3.qml deleted file mode 100644 index af49575854..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges3.qml +++ /dev/null @@ -1,29 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: container - width: 200; height: 200 - Rectangle { - id: myRect - objectName: "MyRect" - color: "green"; - anchors.left: parent.left - anchors.right: rightGuideline.left - anchors.top: topGuideline.top - anchors.bottom: container.bottom - } - Item { objectName: "LeftGuideline"; id: leftGuideline; x: 10 } - Item { id: rightGuideline; x: 150 } - Item { id: topGuideline; y: 10 } - Item { objectName: "BottomGuideline"; id: bottomGuideline; y: 150 } - states: State { - name: "reanchored" - AnchorChanges { - target: myRect; - anchors.left: leftGuideline.left - anchors.right: container.right - anchors.top: container.top - anchors.bottom: bottomGuideline.bottom - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges4.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges4.qml deleted file mode 100644 index 28b55818bd..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges4.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 200; height: 200 - Rectangle { - id: myRect - objectName: "MyRect" - color: "green"; - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - } - Item { objectName: "LeftGuideline"; id: leftGuideline; x: 10 } - Item { objectName: "BottomGuideline"; id: bottomGuideline; y: 150 } - states: State { - name: "reanchored" - AnchorChanges { - target: myRect; - anchors.horizontalCenter: bottomGuideline.horizontalCenter - anchors.verticalCenter: leftGuideline.verticalCenter - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges5.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges5.qml deleted file mode 100644 index b1ca968fb9..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges5.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 200; height: 200 - Rectangle { - id: myRect - objectName: "MyRect" - color: "green"; - anchors.horizontalCenter: parent.horizontalCenter - anchors.baseline: parent.baseline - } - Item { objectName: "LeftGuideline"; id: leftGuideline; x: 10 } - Item { objectName: "BottomGuideline"; id: bottomGuideline; y: 150 } - states: State { - name: "reanchored" - AnchorChanges { - target: myRect; - anchors.horizontalCenter: bottomGuideline.horizontalCenter - anchors.baseline: leftGuideline.baseline - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChangesCrash.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChangesCrash.qml deleted file mode 100644 index 9af0e4645a..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChangesCrash.qml +++ /dev/null @@ -1,14 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: container - width: 400 - height: 400 - - states: State { - name: "reanchored" - AnchorChanges { - anchors.top: container.top - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorRewindBug.qml b/tests/auto/declarative/qdeclarativestates/data/anchorRewindBug.qml deleted file mode 100644 index 60c537b1ed..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/anchorRewindBug.qml +++ /dev/null @@ -1,37 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: container - color: "red" - height: 200 - width: 200 - Column { - id: column - objectName: "column" - anchors.left: container.right - anchors.bottom: container.bottom - - Rectangle { - id: rectangle - color: "blue" - height: 100 - width: 200 - } - Rectangle { - color: "blue" - height: 100 - width: 200 - } - } - states: State { - name: "reanchored" - AnchorChanges { - target: column - anchors.left: undefined - anchors.right: container.right - } - PropertyChanges { - target: rectangle - visible: false - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorRewindBug2.qml b/tests/auto/declarative/qdeclarativestates/data/anchorRewindBug2.qml deleted file mode 100644 index 574ef473ce..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/anchorRewindBug2.qml +++ /dev/null @@ -1,25 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: root - width:200; height:300 - - Rectangle { - id: rectangle - objectName: "mover" - color: "green" - width:50; height:50 - } - - states: [ - State { - name: "anchored" - AnchorChanges { - target: rectangle - anchors.left: root.left - anchors.right: root.right - anchors.bottom: root.bottom - } - } - ] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/attachedPropertyChanges.qml b/tests/auto/declarative/qdeclarativestates/data/attachedPropertyChanges.qml deleted file mode 100644 index 413af2ee42..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/attachedPropertyChanges.qml +++ /dev/null @@ -1,20 +0,0 @@ -import Qt.test 1.0 -import QtQuick 2.0 - -Item { - id: item - width: 100; height: 100 - MyRectangle.foo: 0 - - states: State { - name: "foo1" - PropertyChanges { - target: item - MyRectangle.foo: 1 - width: 50 - } - } - - Component.onCompleted: item.state = "foo1" -} - diff --git a/tests/auto/declarative/qdeclarativestates/data/autoStateAtStartupRestoreBug.qml b/tests/auto/declarative/qdeclarativestates/data/autoStateAtStartupRestoreBug.qml deleted file mode 100644 index 6cbf524ec2..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/autoStateAtStartupRestoreBug.qml +++ /dev/null @@ -1,18 +0,0 @@ -import QtQuick 2.0 - -Item { - id: root - property int input: 1 - property int test: 9 - - states: [ - State { - name: "portrait" - when: root.input == 1 - PropertyChanges { - target: root - test: 3 - } - } - ] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/avoidFastForward.qml b/tests/auto/declarative/qdeclarativestates/data/avoidFastForward.qml deleted file mode 100644 index 519befc31e..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/avoidFastForward.qml +++ /dev/null @@ -1,17 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: rect - width: 200 - height: 200 - - property int updateCount: 0 - onColorChanged: updateCount++ - - property color aColor: "green" - - states: State { - name: "a" - PropertyChanges { target: rect; color: aColor } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/basicBinding.qml b/tests/auto/declarative/qdeclarativestates/data/basicBinding.qml deleted file mode 100644 index 59b67d0863..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/basicBinding.qml +++ /dev/null @@ -1,12 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - - property color sourceColor: "blue" - width: 100; height: 100 - color: "red" - states: State { - name: "blue" - PropertyChanges { target: myRectangle; color: sourceColor } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/basicBinding2.qml b/tests/auto/declarative/qdeclarativestates/data/basicBinding2.qml deleted file mode 100644 index 55f88120aa..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/basicBinding2.qml +++ /dev/null @@ -1,12 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - - property color sourceColor: "red" - width: 100; height: 100 - color: sourceColor - states: State { - name: "blue" - PropertyChanges { target: myRectangle; color: "blue" } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/basicBinding3.qml b/tests/auto/declarative/qdeclarativestates/data/basicBinding3.qml deleted file mode 100644 index 361ab0b091..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/basicBinding3.qml +++ /dev/null @@ -1,13 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - - property color sourceColor: "red" - property color sourceColor2: "blue" - width: 100; height: 100 - color: sourceColor - states: State { - name: "blue" - PropertyChanges { target: myRectangle; color: sourceColor2 } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/basicBinding4.qml b/tests/auto/declarative/qdeclarativestates/data/basicBinding4.qml deleted file mode 100644 index b29f0fcf22..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/basicBinding4.qml +++ /dev/null @@ -1,17 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - - property color sourceColor: "blue" - width: 100; height: 100 - color: "red" - states: [ - State { - name: "blue" - PropertyChanges { target: myRectangle; color: sourceColor } - }, - State { - name: "green" - PropertyChanges { target: myRectangle; color: "green" } - }] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/basicChanges.qml b/tests/auto/declarative/qdeclarativestates/data/basicChanges.qml deleted file mode 100644 index 3e2b73acde..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/basicChanges.qml +++ /dev/null @@ -1,10 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - states: State { - name: "blue" - PropertyChanges { target: myRectangle; color: "blue" } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/basicChanges2.qml b/tests/auto/declarative/qdeclarativestates/data/basicChanges2.qml deleted file mode 100644 index 5ff46cc60c..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/basicChanges2.qml +++ /dev/null @@ -1,15 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - states: [ - State { - name: "blue" - PropertyChanges { target: myRectangle; color: "blue" } - }, - State { - name: "green" - PropertyChanges { target: myRectangle; color: "green" } - }] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/basicChanges3.qml b/tests/auto/declarative/qdeclarativestates/data/basicChanges3.qml deleted file mode 100644 index e46e98f75e..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/basicChanges3.qml +++ /dev/null @@ -1,15 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - states: [ - State { - name: "blue" - PropertyChanges { target: myRectangle; color: "blue" } - }, - State { - name: "bordered" - PropertyChanges { target: myRectangle; border.width: 2 } - }] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/basicChanges4.qml b/tests/auto/declarative/qdeclarativestates/data/basicChanges4.qml deleted file mode 100644 index 7da1e0fb2e..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/basicChanges4.qml +++ /dev/null @@ -1,19 +0,0 @@ -import Qt.test 1.0 -import QtQuick 2.0 - -MyRectangle { - id: rect - width: 100; height: 100 - color: "red" - - states: State { - name: "aBlueDay" - PropertyChanges { - target: rect - onPropertyWithNotifyChanged: { rect.color = "blue"; } - } - } - - Component.onCompleted: rect.state = "aBlueDay" -} - diff --git a/tests/auto/declarative/qdeclarativestates/data/basicExtension.qml b/tests/auto/declarative/qdeclarativestates/data/basicExtension.qml deleted file mode 100644 index 00f5fee287..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/basicExtension.qml +++ /dev/null @@ -1,16 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - states: [ - State { - name: "blue" - PropertyChanges { target: myRectangle; color: "blue" } - }, - State { - name: "bordered" - extend: "blue" - PropertyChanges { target: myRectangle; border.width: 2 } - }] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/deleting.qml b/tests/auto/declarative/qdeclarativestates/data/deleting.qml deleted file mode 100644 index b8e8d33c17..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/deleting.qml +++ /dev/null @@ -1,11 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - states: State { - name: "blue" - PropertyChanges { target: myRectangle; color: "blue"; objectName: "pc1" } - PropertyChanges { target: myRectangle; radius: 5; objectName: "pc2" } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/deletingState.qml b/tests/auto/declarative/qdeclarativestates/data/deletingState.qml deleted file mode 100644 index 68a9c2a24d..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/deletingState.qml +++ /dev/null @@ -1,13 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - StateGroup { - id: stateGroup - states: State { - name: "blue" - PropertyChanges { target: myRectangle; color: "blue" } - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/editProperties.qml b/tests/auto/declarative/qdeclarativestates/data/editProperties.qml deleted file mode 100644 index 9bff3657ba..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/editProperties.qml +++ /dev/null @@ -1,34 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - - property color sourceColor: "blue" - width: 400; height: 400 - color: "red" - - Rectangle { - id: rect2 - objectName: "rect2" - width: parent.width + 2 - height: 200 - color: "yellow" - } - - states: [ - State { - name: "blue" - PropertyChanges { - target: rect2 - width:50 - height: 40 - } - }, - State { - name: "green" - PropertyChanges { - target: rect2 - width: myRectangle.width / 2 - height: myRectangle.width / 4 - } - }] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/explicit.qml b/tests/auto/declarative/qdeclarativestates/data/explicit.qml deleted file mode 100644 index d09893a1db..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/explicit.qml +++ /dev/null @@ -1,15 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - property color sourceColor: "blue" - width: 100; height: 100 - color: "red" - states: State { - name: "blue" - PropertyChanges { - objectName: "changes" - target: myRectangle; explicit: true - color: sourceColor - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/extendsBug.qml b/tests/auto/declarative/qdeclarativestates/data/extendsBug.qml deleted file mode 100644 index 573341520d..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/extendsBug.qml +++ /dev/null @@ -1,26 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 200 - height: 200 - - Rectangle { - id: rect - objectName: "greenRect" - width: 100 - height: 100 - color: "green" - } - - states:[ - State { - name: "a" - PropertyChanges { target: rect; x: 100 } - }, - State { - name: "b" - extend:"a" - PropertyChanges { target: rect; y: 100 } - } - ] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/fakeExtension.qml b/tests/auto/declarative/qdeclarativestates/data/fakeExtension.qml deleted file mode 100644 index 6a5c7003f6..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/fakeExtension.qml +++ /dev/null @@ -1,16 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - states: [ - State { - name: "blue" - PropertyChanges { target: myRectangle; color: "blue" } - }, - State { - name: "green" - extend: "blue" - PropertyChanges { target: myRectangle; color: "green" } - }] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/illegalObj.qml b/tests/auto/declarative/qdeclarativestates/data/illegalObj.qml deleted file mode 100644 index a2bbd5d32b..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/illegalObj.qml +++ /dev/null @@ -1,12 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: myItem - - states : State { - PropertyChanges { - target: myItem - children: Item { id: newItem } - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/illegalTempState.qml b/tests/auto/declarative/qdeclarativestates/data/illegalTempState.qml deleted file mode 100644 index 9cb39c0728..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/illegalTempState.qml +++ /dev/null @@ -1,21 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: card - width: 100; height: 100 - - states: [ - State { - name: "placed" - PropertyChanges { target: card; state: "idle" } - }, - State { - name: "idle" - } - ] - - MouseArea { - anchors.fill: parent - onClicked: card.state = "placed" - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/image.png b/tests/auto/declarative/qdeclarativestates/data/image.png Binary files differdeleted file mode 100644 index ed1833c95b..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/image.png +++ /dev/null diff --git a/tests/auto/declarative/qdeclarativestates/data/legalTempState.qml b/tests/auto/declarative/qdeclarativestates/data/legalTempState.qml deleted file mode 100644 index a93860f5cc..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/legalTempState.qml +++ /dev/null @@ -1,23 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: card - width: 100; height: 100 - - states: [ - State { - name: "placed" - onCompleted: card.state = "idle" - StateChangeScript { script: console.log("entering placed") } - }, - State { - name: "idle" - StateChangeScript { script: console.log("entering idle") } - } - ] - - MouseArea { - anchors.fill: parent - onClicked: card.state = "placed" - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/nonExistantProp.qml b/tests/auto/declarative/qdeclarativestates/data/nonExistantProp.qml deleted file mode 100644 index ce502699bb..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/nonExistantProp.qml +++ /dev/null @@ -1,11 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - - width: 100; height: 100 - color: "red" - states: State { - name: "blue" - PropertyChanges { target: myRectangle; colr: "blue" } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/parentChange1.qml b/tests/auto/declarative/qdeclarativestates/data/parentChange1.qml deleted file mode 100644 index 663ad1a264..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/parentChange1.qml +++ /dev/null @@ -1,37 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 400; height: 400 - Item { - x: 10; y: 10 - Rectangle { - id: myRect - objectName: "MyRect" - x: 5 - width: 100; height: 100 - color: "red" - } - } - MouseArea { - id: clickable - anchors.fill: parent - } - - Item { - x: -100; y: -50 - Item { - id: newParent - objectName: "NewParent" - x: 248; y: 360 - } - } - - states: State { - name: "reparented" - when: clickable.pressed - ParentChange { - target: myRect - parent: newParent - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/parentChange2.qml b/tests/auto/declarative/qdeclarativestates/data/parentChange2.qml deleted file mode 100644 index ae290e961e..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/parentChange2.qml +++ /dev/null @@ -1,31 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: newParent - width: 400; height: 400 - Item { - scale: .5 - rotation: 15 - x: 10; y: 10 - Rectangle { - id: myRect - objectName: "MyRect" - x: 5 - width: 100; height: 100 - color: "red" - } - } - MouseArea { - id: clickable - anchors.fill: parent - } - - states: State { - name: "reparented" - when: clickable.pressed - ParentChange { - target: myRect - parent: newParent - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/parentChange3.qml b/tests/auto/declarative/qdeclarativestates/data/parentChange3.qml deleted file mode 100644 index 46665cb4c8..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/parentChange3.qml +++ /dev/null @@ -1,42 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 400; height: 400 - Item { - scale: .5 - rotation: 15 - transformOrigin: "Center" - x: 10; y: 10 - Rectangle { - id: myRect - objectName: "MyRect" - x: 5 - width: 100; height: 100 - transformOrigin: "BottomLeft" - color: "red" - } - } - MouseArea { - id: clickable - anchors.fill: parent - } - - Item { - x: 200; y: 200 - rotation: 52; - scale: 2 - Item { - id: newParent - x: 100; y: 100 - } - } - - states: State { - name: "reparented" - when: clickable.pressed - ParentChange { - target: myRect - parent: newParent - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/parentChange4.qml b/tests/auto/declarative/qdeclarativestates/data/parentChange4.qml deleted file mode 100644 index 22de72f8c9..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/parentChange4.qml +++ /dev/null @@ -1,30 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 400; height: 400 - Rectangle { - id: myRect - objectName: "MyRect" - x: 5; y: 5 - width: 100; height: 100 - color: "red" - } - MouseArea { - id: clickable - anchors.fill: parent - } - - Item { - id: newParent - transform: Scale { xScale: .5; yScale: .7} - } - - states: State { - name: "reparented" - when: clickable.pressed - ParentChange { - target: myRect - parent: newParent - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/parentChange5.qml b/tests/auto/declarative/qdeclarativestates/data/parentChange5.qml deleted file mode 100644 index c353d2637f..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/parentChange5.qml +++ /dev/null @@ -1,30 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 400; height: 400 - Rectangle { - id: myRect - objectName: "MyRect" - x: 5; y: 5 - width: 100; height: 100 - color: "red" - } - MouseArea { - id: clickable - anchors.fill: parent - } - - Item { - id: newParent - transform: Rotation { angle: 30; axis { x: 0; y: 1; z: 0 } } - } - - states: State { - name: "reparented" - when: clickable.pressed - ParentChange { - target: myRect - parent: newParent - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/parentChange6.qml b/tests/auto/declarative/qdeclarativestates/data/parentChange6.qml deleted file mode 100644 index b373dbba20..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/parentChange6.qml +++ /dev/null @@ -1,30 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 400; height: 400 - Rectangle { - id: myRect - objectName: "MyRect" - x: 5; y: 5 - width: 100; height: 100 - color: "red" - } - MouseArea { - id: clickable - anchors.fill: parent - } - - Item { - id: newParent - rotation: 180 - } - - states: State { - name: "reparented" - when: clickable.pressed - ParentChange { - target: myRect - parent: newParent - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/propertyErrors.qml b/tests/auto/declarative/qdeclarativestates/data/propertyErrors.qml deleted file mode 100644 index ddd636493d..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/propertyErrors.qml +++ /dev/null @@ -1,10 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - states: State { - name: "blue" - PropertyChanges { target: myRectangle; colr: "blue"; activeFocus: true } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/reset.qml b/tests/auto/declarative/qdeclarativestates/data/reset.qml deleted file mode 100644 index f0ecab0950..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/reset.qml +++ /dev/null @@ -1,19 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 640 - height: 480 - Image { - id: image - width: 40 - source: "image.png" - } - - states: State { - name: "state1" - PropertyChanges { - target: image - width: undefined - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/restoreEntryValues.qml b/tests/auto/declarative/qdeclarativestates/data/restoreEntryValues.qml deleted file mode 100644 index 950a522841..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/restoreEntryValues.qml +++ /dev/null @@ -1,14 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - states: State { - name: "blue" - PropertyChanges { - target: myRectangle - restoreEntryValues: false - color: "blue" - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/returnToBase.qml b/tests/auto/declarative/qdeclarativestates/data/returnToBase.qml deleted file mode 100644 index 9a0ee82397..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/returnToBase.qml +++ /dev/null @@ -1,21 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: theRect - property bool triggerState: false - property string stateString: "" - states: [ State { - when: triggerState - PropertyChanges { - target: theRect - stateString: "inState" - } - }, - State { - name: "" - PropertyChanges { - target: theRect - stateString: "originalState" - } - }] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/revertListBug.qml b/tests/auto/declarative/qdeclarativestates/data/revertListBug.qml deleted file mode 100644 index fbc4bc5ecc..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/revertListBug.qml +++ /dev/null @@ -1,47 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - width: 400; height: 400 - - property Item targetItem: rect1 - - function switchTargetItem() { - if (targetItem === rect1) - targetItem = rect2; - else - targetItem = rect1; - } - - states: State { - name: "reparented" - ParentChange { - target: targetItem - parent: newParent - x: 0; y: 0 - } - } - - Item { - objectName: "originalParent1" - Rectangle { - id: rect1; objectName: "rect1" - width: 50; height: 50 - color: "green" - } - } - - Item { - objectName: "originalParent2" - Rectangle { - id: rect2; objectName: "rect2" - x: 50; y: 50 - width: 50; height: 50 - color: "green" - } - } - - Item { - id: newParent; objectName: "newParent" - x: 200; y: 100 - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/script.qml b/tests/auto/declarative/qdeclarativestates/data/script.qml deleted file mode 100644 index 218f0fae74..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/script.qml +++ /dev/null @@ -1,10 +0,0 @@ -import QtQuick 2.0 -Rectangle { - id: myRectangle - width: 100; height: 100 - color: "red" - states: State { - name: "blue" - StateChangeScript { script: myRectangle.color = "blue"; } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/signalOverride.qml b/tests/auto/declarative/qdeclarativestates/data/signalOverride.qml deleted file mode 100644 index 9ab8037e51..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/signalOverride.qml +++ /dev/null @@ -1,18 +0,0 @@ -import QtQuick 2.0 -import Qt.test 1.0 - -MyRectangle { - id: rect - - onDidSomething: color = "blue" - - width: 100; height: 100 - color: "red" - states: State { - name: "green" - PropertyChanges { - target: rect - onDidSomething: color = "green" - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/signalOverride2.qml b/tests/auto/declarative/qdeclarativestates/data/signalOverride2.qml deleted file mode 100644 index 4e5e335b8b..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/signalOverride2.qml +++ /dev/null @@ -1,9 +0,0 @@ -import QtQuick 2.0 -import Qt.test 1.0 - -MyRectangle { - id: rect - onDidSomething: color = "blue" - width: 100; height: 100 - ExtendedRectangle {} -} diff --git a/tests/auto/declarative/qdeclarativestates/data/signalOverrideCrash.qml b/tests/auto/declarative/qdeclarativestates/data/signalOverrideCrash.qml deleted file mode 100644 index 3e2ae1e93d..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/signalOverrideCrash.qml +++ /dev/null @@ -1,15 +0,0 @@ -import QtQuick 2.0 -import Qt.test 1.0 - -MyRectangle { - id: rect - - width: 100; height: 100 - states: State { - name: "overridden" - PropertyChanges { - target: rect - onDidSomething: rect.state = "" - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/signalOverrideCrash2.qml b/tests/auto/declarative/qdeclarativestates/data/signalOverrideCrash2.qml deleted file mode 100644 index 3937874aa2..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/signalOverrideCrash2.qml +++ /dev/null @@ -1,24 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: myRect - width: 400 - height: 400 - - states: [ - State { - name: "state1" - PropertyChanges { - target: myRect - onHeightChanged: console.log("Hello World") - color: "green" - } - }, - State { - name: "state2"; extend: "state1" - PropertyChanges { - target: myRect - color: "red" - } - }] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/signalOverrideCrash3.qml b/tests/auto/declarative/qdeclarativestates/data/signalOverrideCrash3.qml deleted file mode 100644 index 98d4c57219..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/signalOverrideCrash3.qml +++ /dev/null @@ -1,27 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: myRect - width: 400 - height: 400 - - onHeightChanged: console.log("base state") - - states: [ - State { - name: "state1" - PropertyChanges { - target: myRect - onHeightChanged: console.log("state1") - color: "green" - } - }, - State { - name: "state2"; - PropertyChanges { - target: myRect - onHeightChanged: console.log("state2") - color: "red" - } - }] -} diff --git a/tests/auto/declarative/qdeclarativestates/data/unnamedWhen.qml b/tests/auto/declarative/qdeclarativestates/data/unnamedWhen.qml deleted file mode 100644 index 35eacff07b..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/unnamedWhen.qml +++ /dev/null @@ -1,14 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - id: theRect - property bool triggerState: false - property string stateString: "" - states: State { - when: triggerState - PropertyChanges { - target: theRect - stateString: "inState" - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/urlResolution.qml b/tests/auto/declarative/qdeclarativestates/data/urlResolution.qml deleted file mode 100644 index 516ac034d6..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/urlResolution.qml +++ /dev/null @@ -1,12 +0,0 @@ -import QtQuick 2.0 -import "Implementation" - -Rectangle { - width: 100 - height: 200 - - MyType { - objectName: "MyType" - anchors.fill: parent - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/whenOrdering.qml b/tests/auto/declarative/qdeclarativestates/data/whenOrdering.qml deleted file mode 100644 index 92025a2054..0000000000 --- a/tests/auto/declarative/qdeclarativestates/data/whenOrdering.qml +++ /dev/null @@ -1,11 +0,0 @@ -import QtQuick 2.0 - -Rectangle { - property bool condition1: false - property bool condition2: false - - states: [ - State { name: "state1"; when: condition1 }, - State { name: "state2"; when: condition2 } - ] -} diff --git a/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro b/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro deleted file mode 100644 index c0ffda7828..0000000000 --- a/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro +++ /dev/null @@ -1,12 +0,0 @@ -CONFIG += testcase -TARGET = tst_qdeclarativestates -macx:CONFIG -= app_bundle - -SOURCES += tst_qdeclarativestates.cpp - -testDataFiles.files = data -testDataFiles.path = . -DEPLOYMENT += testDataFiles - -CONFIG += parallel_test -QT += core-private gui-private v8-private declarative-private opengl-private testlib diff --git a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp deleted file mode 100644 index 2535f89030..0000000000 --- a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp +++ /dev/null @@ -1,1596 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include <qtest.h> -#include <QtDeclarative/qdeclarativeengine.h> -#include <QtDeclarative/qdeclarativecomponent.h> -#include <QtDeclarative/qquickview.h> -#include <private/qquickstateoperations_p.h> -#include <private/qquickanchors_p_p.h> -#include <private/qquickrectangle_p.h> -#include <private/qquickimage_p.h> -#include <private/qdeclarativepropertychanges_p.h> -#include <private/qdeclarativestategroup_p.h> -#include <private/qquickitem_p.h> -#include <private/qdeclarativeproperty_p.h> -#include "../shared/util.h" - -class MyAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(int foo READ foo WRITE setFoo) -public: - MyAttached(QObject *parent) : QObject(parent), m_foo(13) {} - - int foo() const { return m_foo; } - void setFoo(int f) { m_foo = f; } - -private: - int m_foo; -}; - -class MyRect : public QQuickRectangle -{ - Q_OBJECT - Q_PROPERTY(int propertyWithNotify READ propertyWithNotify WRITE setPropertyWithNotify NOTIFY oddlyNamedNotifySignal) -public: - MyRect() {} - - void doSomething() { emit didSomething(); } - - int propertyWithNotify() const { return m_prop; } - void setPropertyWithNotify(int i) { m_prop = i; emit oddlyNamedNotifySignal(); } - - static MyAttached *qmlAttachedProperties(QObject *o) { - return new MyAttached(o); - } -Q_SIGNALS: - void didSomething(); - void oddlyNamedNotifySignal(); - -private: - int m_prop; -}; - -QML_DECLARE_TYPE(MyRect) -QML_DECLARE_TYPEINFO(MyRect, QML_HAS_ATTACHED_PROPERTIES) - -class tst_qdeclarativestates : public QObject -{ - Q_OBJECT -public: - tst_qdeclarativestates() {} - -private: - static QByteArray fullDataPath(const QString &path); - -private slots: - void initTestCase(); - - void basicChanges(); - void attachedPropertyChanges(); - void basicExtension(); - void basicBinding(); - void signalOverride(); - void signalOverrideCrash(); - void signalOverrideCrash2(); - void signalOverrideCrash3(); - void parentChange(); - void parentChangeErrors(); - void anchorChanges(); - void anchorChanges2(); - void anchorChanges3(); - void anchorChanges4(); - void anchorChanges5(); - void anchorChangesRTL(); - void anchorChangesRTL2(); - void anchorChangesRTL3(); - void anchorChangesCrash(); - void anchorRewindBug(); - void anchorRewindBug2(); - void script(); - void restoreEntryValues(); - void explicitChanges(); - void propertyErrors(); - void incorrectRestoreBug(); - void autoStateAtStartupRestoreBug(); - void deletingChange(); - void deletingState(); - void tempState(); - void illegalTempState(); - void nonExistantProperty(); - void reset(); - void illegalObjectCreation(); - void whenOrdering(); - void urlResolution(); - void unnamedWhen(); - void returnToBase(); - void extendsBug(); - void editProperties(); - void QTBUG_14830(); - void avoidFastForward(); - void revertListBug(); -}; - -void tst_qdeclarativestates::initTestCase() -{ - qmlRegisterType<MyRect>("Qt.test", 1, 0, "MyRectangle"); -} - -QByteArray tst_qdeclarativestates::fullDataPath(const QString &path) -{ - return QUrl::fromLocalFile(TESTDATA(path)).toString().toUtf8(); -} - -void tst_qdeclarativestates::basicChanges() -{ - QDeclarativeEngine engine; - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("basicChanges.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("basicChanges2.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState("green"); - QCOMPARE(rect->color(),QColor("green")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("green"); - QCOMPARE(rect->color(),QColor("green")); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("basicChanges3.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - QCOMPARE(rect->border()->width(),1.0); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - QCOMPARE(rect->border()->width(),1.0); - - rectPrivate->setState("bordered"); - QCOMPARE(rect->color(),QColor("red")); - QCOMPARE(rect->border()->width(),2.0); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - QCOMPARE(rect->border()->width(),1.0); - //### we should be checking that this is an implicit rather than explicit 1 (which currently fails) - - rectPrivate->setState("bordered"); - QCOMPARE(rect->color(),QColor("red")); - QCOMPARE(rect->border()->width(),2.0); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - QCOMPARE(rect->border()->width(),1.0); - - } - - { - // Test basicChanges4.qml can magically connect to propertyWithNotify's notify - // signal using 'onPropertyWithNotifyChanged' even though the signal name is - // actually 'oddlyNamedNotifySignal' - - QDeclarativeComponent component(&engine, TESTDATA("basicChanges4.qml")); - QVERIFY(component.isReady()); - - MyRect *rect = qobject_cast<MyRect*>(component.create()); - QVERIFY(rect != 0); - - QMetaProperty prop = rect->metaObject()->property(rect->metaObject()->indexOfProperty("propertyWithNotify")); - QVERIFY(prop.hasNotifySignal()); - QString notifySignal = QByteArray(prop.notifySignal().signature()); - QVERIFY(!notifySignal.startsWith("propertyWithNotifyChanged(")); - - QCOMPARE(rect->color(), QColor(Qt::red)); - - rect->setPropertyWithNotify(100); - QCOMPARE(rect->color(), QColor(Qt::blue)); - } -} - -void tst_qdeclarativestates::attachedPropertyChanges() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent component(&engine, TESTDATA("attachedPropertyChanges.qml")); - QVERIFY(component.isReady()); - - QQuickItem *item = qobject_cast<QQuickItem*>(component.create()); - QVERIFY(item != 0); - QCOMPARE(item->width(), 50.0); - - // Ensure attached property has been changed - QObject *attObj = qmlAttachedPropertiesObject<MyRect>(item, false); - QVERIFY(attObj); - - MyAttached *att = qobject_cast<MyAttached*>(attObj); - QVERIFY(att); - - QCOMPARE(att->foo(), 1); -} - -void tst_qdeclarativestates::basicExtension() -{ - QDeclarativeEngine engine; - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("basicExtension.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - QCOMPARE(rect->border()->width(),1.0); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - QCOMPARE(rect->border()->width(),1.0); - - rectPrivate->setState("bordered"); - QCOMPARE(rect->color(),QColor("blue")); - QCOMPARE(rect->border()->width(),2.0); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - QCOMPARE(rect->border()->width(),1.0); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - QCOMPARE(rect->border()->width(),1.0); - - rectPrivate->setState("bordered"); - QCOMPARE(rect->color(),QColor("blue")); - QCOMPARE(rect->border()->width(),2.0); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - QCOMPARE(rect->border()->width(),1.0); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("fakeExtension.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState("green"); - QCOMPARE(rect->color(),QColor("green")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState("green"); - QCOMPARE(rect->color(),QColor("green")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("green"); - QCOMPARE(rect->color(),QColor("green")); - } -} - -void tst_qdeclarativestates::basicBinding() -{ - QDeclarativeEngine engine; - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("basicBinding.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - rect->setProperty("sourceColor", QColor("green")); - QCOMPARE(rect->color(),QColor("green")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - rect->setProperty("sourceColor", QColor("yellow")); - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("yellow")); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("basicBinding2.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - rect->setProperty("sourceColor", QColor("green")); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("green")); - rect->setProperty("sourceColor", QColor("yellow")); - QCOMPARE(rect->color(),QColor("yellow")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("yellow")); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("basicBinding3.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - rect->setProperty("sourceColor", QColor("green")); - QCOMPARE(rect->color(),QColor("green")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - rect->setProperty("sourceColor", QColor("red")); - QCOMPARE(rect->color(),QColor("blue")); - rect->setProperty("sourceColor2", QColor("yellow")); - QCOMPARE(rect->color(),QColor("yellow")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - rect->setProperty("sourceColor2", QColor("green")); - QCOMPARE(rect->color(),QColor("red")); - rect->setProperty("sourceColor", QColor("yellow")); - QCOMPARE(rect->color(),QColor("yellow")); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("basicBinding4.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - rect->setProperty("sourceColor", QColor("yellow")); - QCOMPARE(rect->color(),QColor("yellow")); - - rectPrivate->setState("green"); - QCOMPARE(rect->color(),QColor("green")); - rect->setProperty("sourceColor", QColor("purple")); - QCOMPARE(rect->color(),QColor("green")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("purple")); - - rectPrivate->setState("green"); - QCOMPARE(rect->color(),QColor("green")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - } -} - -void tst_qdeclarativestates::signalOverride() -{ - QDeclarativeEngine engine; - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("signalOverride.qml")); - MyRect *rect = qobject_cast<MyRect*>(rectComponent.create()); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - rect->doSomething(); - QCOMPARE(rect->color(),QColor("blue")); - - QQuickItemPrivate::get(rect)->setState("green"); - rect->doSomething(); - QCOMPARE(rect->color(),QColor("green")); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("signalOverride2.qml")); - MyRect *rect = qobject_cast<MyRect*>(rectComponent.create()); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("white")); - rect->doSomething(); - QCOMPARE(rect->color(),QColor("blue")); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("extendedRect")); - QQuickItemPrivate::get(innerRect)->setState("green"); - rect->doSomething(); - QCOMPARE(rect->color(),QColor("blue")); - QCOMPARE(innerRect->color(),QColor("green")); - QCOMPARE(innerRect->property("extendedColor").value<QColor>(),QColor("green")); - } -} - -void tst_qdeclarativestates::signalOverrideCrash() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("signalOverrideCrash.qml")); - MyRect *rect = qobject_cast<MyRect*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickItemPrivate::get(rect)->setState("overridden"); - rect->doSomething(); -} - -void tst_qdeclarativestates::signalOverrideCrash2() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("signalOverrideCrash2.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickItemPrivate::get(rect)->setState("state1"); - QQuickItemPrivate::get(rect)->setState("state2"); - QQuickItemPrivate::get(rect)->setState("state1"); - - delete rect; -} - -void tst_qdeclarativestates::signalOverrideCrash3() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("signalOverrideCrash3.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickItemPrivate::get(rect)->setState("state1"); - QQuickItemPrivate::get(rect)->setState(""); - QQuickItemPrivate::get(rect)->setState("state2"); - QQuickItemPrivate::get(rect)->setState(""); - - delete rect; -} - -void tst_qdeclarativestates::parentChange() -{ - QDeclarativeEngine engine; - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("parentChange1.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - QDeclarativeListReference list(rect, "states"); - QDeclarativeState *state = qobject_cast<QDeclarativeState*>(list.at(0)); - QVERIFY(state != 0); - - qmlExecuteDeferred(state); - QQuickParentChange *pChange = qobject_cast<QQuickParentChange*>(state->operationAt(0)); - QVERIFY(pChange != 0); - QQuickItem *nParent = qobject_cast<QQuickItem*>(rect->findChild<QQuickItem*>("NewParent")); - QVERIFY(nParent != 0); - - QCOMPARE(pChange->parent(), nParent); - - QQuickItemPrivate::get(rect)->setState("reparented"); - QCOMPARE(innerRect->rotation(), qreal(0)); - QCOMPARE(innerRect->scale(), qreal(1)); - QCOMPARE(innerRect->x(), qreal(-133)); - QCOMPARE(innerRect->y(), qreal(-300)); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("parentChange2.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - rectPrivate->setState("reparented"); - QCOMPARE(innerRect->rotation(), qreal(15)); - QCOMPARE(innerRect->scale(), qreal(.5)); - QCOMPARE(QString("%1").arg(innerRect->x()), QString("%1").arg(-19.9075)); - QCOMPARE(QString("%1").arg(innerRect->y()), QString("%1").arg(-8.73433)); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("parentChange3.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - rectPrivate->setState("reparented"); - QCOMPARE(innerRect->rotation(), qreal(-37)); - QCOMPARE(innerRect->scale(), qreal(.25)); - QCOMPARE(QString("%1").arg(innerRect->x()), QString("%1").arg(-217.305)); - QCOMPARE(QString("%1").arg(innerRect->y()), QString("%1").arg(-164.413)); - - rectPrivate->setState(""); - QCOMPARE(innerRect->rotation(), qreal(0)); - QCOMPARE(innerRect->scale(), qreal(1)); - QCOMPARE(innerRect->x(), qreal(5)); - //do a non-qFuzzyCompare fuzzy compare - QVERIFY(innerRect->y() < qreal(0.00001) && innerRect->y() > qreal(-0.00001)); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("parentChange6.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - QQuickItemPrivate::get(rect)->setState("reparented"); - QCOMPARE(innerRect->rotation(), qreal(180)); - QCOMPARE(innerRect->scale(), qreal(1)); - QCOMPARE(innerRect->x(), qreal(-105)); - QCOMPARE(innerRect->y(), qreal(-105)); - } -} - -void tst_qdeclarativestates::parentChangeErrors() -{ - QDeclarativeEngine engine; - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("parentChange4.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - QTest::ignoreMessage(QtWarningMsg, fullDataPath("parentChange4.qml") + ":25:9: QML ParentChange: Unable to preserve appearance under non-uniform scale"); - QQuickItemPrivate::get(rect)->setState("reparented"); - QCOMPARE(innerRect->rotation(), qreal(0)); - QCOMPARE(innerRect->scale(), qreal(1)); - QCOMPARE(innerRect->x(), qreal(5)); - QCOMPARE(innerRect->y(), qreal(5)); - } - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("parentChange5.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - QTest::ignoreMessage(QtWarningMsg, fullDataPath("parentChange5.qml") + ":25:9: QML ParentChange: Unable to preserve appearance under complex transform"); - QQuickItemPrivate::get(rect)->setState("reparented"); - QCOMPARE(innerRect->rotation(), qreal(0)); - QCOMPARE(innerRect->scale(), qreal(1)); - QCOMPARE(innerRect->x(), qreal(5)); - QCOMPARE(innerRect->y(), qreal(5)); - } -} - -void tst_qdeclarativestates::anchorChanges() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorChanges1.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - QDeclarativeListReference list(rect, "states"); - QDeclarativeState *state = qobject_cast<QDeclarativeState*>(list.at(0)); - QVERIFY(state != 0); - - qmlExecuteDeferred(state); - QQuickAnchorChanges *aChanges = qobject_cast<QQuickAnchorChanges*>(state->operationAt(0)); - QVERIFY(aChanges != 0); - - rectPrivate->setState("right"); - QCOMPARE(innerRect->x(), qreal(150)); - QCOMPARE(aChanges->object(), qobject_cast<QQuickItem*>(innerRect)); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->left().anchorLine, QQuickAnchorLine::Invalid); //### was reset (how do we distinguish from not set at all) - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->right().item, rectPrivate->right().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->right().anchorLine, rectPrivate->right().anchorLine); - - rectPrivate->setState(""); - QCOMPARE(innerRect->x(), qreal(5)); - - delete rect; -} - -void tst_qdeclarativestates::anchorChanges2() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorChanges2.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - rectPrivate->setState("right"); - QCOMPARE(innerRect->x(), qreal(150)); - - rectPrivate->setState(""); - QCOMPARE(innerRect->x(), qreal(5)); - - delete rect; -} - -void tst_qdeclarativestates::anchorChanges3() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorChanges3.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - QQuickItem *leftGuideline = qobject_cast<QQuickItem*>(rect->findChild<QQuickItem*>("LeftGuideline")); - QVERIFY(leftGuideline != 0); - - QQuickItem *bottomGuideline = qobject_cast<QQuickItem*>(rect->findChild<QQuickItem*>("BottomGuideline")); - QVERIFY(bottomGuideline != 0); - - QDeclarativeListReference list(rect, "states"); - QDeclarativeState *state = qobject_cast<QDeclarativeState*>(list.at(0)); - QVERIFY(state != 0); - - qmlExecuteDeferred(state); - QQuickAnchorChanges *aChanges = qobject_cast<QQuickAnchorChanges*>(state->operationAt(0)); - QVERIFY(aChanges != 0); - - rectPrivate->setState("reanchored"); - QCOMPARE(aChanges->object(), qobject_cast<QQuickItem*>(innerRect)); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->left().item, QQuickItemPrivate::get(leftGuideline)->left().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->left().anchorLine, QQuickItemPrivate::get(leftGuideline)->left().anchorLine); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->right().item, rectPrivate->right().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->right().anchorLine, rectPrivate->right().anchorLine); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->top().item, rectPrivate->top().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->top().anchorLine, rectPrivate->top().anchorLine); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->bottom().item, QQuickItemPrivate::get(bottomGuideline)->bottom().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->bottom().anchorLine, QQuickItemPrivate::get(bottomGuideline)->bottom().anchorLine); - - QCOMPARE(innerRect->x(), qreal(10)); - QCOMPARE(innerRect->y(), qreal(0)); - QCOMPARE(innerRect->width(), qreal(190)); - QCOMPARE(innerRect->height(), qreal(150)); - - rectPrivate->setState(""); - QCOMPARE(innerRect->x(), qreal(0)); - QCOMPARE(innerRect->y(), qreal(10)); - QCOMPARE(innerRect->width(), qreal(150)); - QCOMPARE(innerRect->height(), qreal(190)); - - delete rect; -} - -void tst_qdeclarativestates::anchorChanges4() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorChanges4.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - QQuickItem *leftGuideline = qobject_cast<QQuickItem*>(rect->findChild<QQuickItem*>("LeftGuideline")); - QVERIFY(leftGuideline != 0); - - QQuickItem *bottomGuideline = qobject_cast<QQuickItem*>(rect->findChild<QQuickItem*>("BottomGuideline")); - QVERIFY(bottomGuideline != 0); - - QDeclarativeListReference list(rect, "states"); - QDeclarativeState *state = qobject_cast<QDeclarativeState*>(list.at(0)); - QVERIFY(state != 0); - - qmlExecuteDeferred(state); - QQuickAnchorChanges *aChanges = qobject_cast<QQuickAnchorChanges*>(state->operationAt(0)); - QVERIFY(aChanges != 0); - - QQuickItemPrivate::get(rect)->setState("reanchored"); - QCOMPARE(aChanges->object(), qobject_cast<QQuickItem*>(innerRect)); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->horizontalCenter().item, QQuickItemPrivate::get(bottomGuideline)->horizontalCenter().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->horizontalCenter().anchorLine, QQuickItemPrivate::get(bottomGuideline)->horizontalCenter().anchorLine); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->verticalCenter().item, QQuickItemPrivate::get(leftGuideline)->verticalCenter().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->verticalCenter().anchorLine, QQuickItemPrivate::get(leftGuideline)->verticalCenter().anchorLine); - - delete rect; -} - -void tst_qdeclarativestates::anchorChanges5() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorChanges5.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - - QQuickItem *leftGuideline = qobject_cast<QQuickItem*>(rect->findChild<QQuickItem*>("LeftGuideline")); - QVERIFY(leftGuideline != 0); - - QQuickItem *bottomGuideline = qobject_cast<QQuickItem*>(rect->findChild<QQuickItem*>("BottomGuideline")); - QVERIFY(bottomGuideline != 0); - - QDeclarativeListReference list(rect, "states"); - QDeclarativeState *state = qobject_cast<QDeclarativeState*>(list.at(0)); - QVERIFY(state != 0); - - qmlExecuteDeferred(state); - QQuickAnchorChanges *aChanges = qobject_cast<QQuickAnchorChanges*>(state->operationAt(0)); - QVERIFY(aChanges != 0); - - QQuickItemPrivate::get(rect)->setState("reanchored"); - QCOMPARE(aChanges->object(), qobject_cast<QQuickItem*>(innerRect)); - //QCOMPARE(aChanges->anchors()->horizontalCenter().item, bottomGuideline->horizontalCenter().item); - //QCOMPARE(aChanges->anchors()->horizontalCenter().anchorLine, bottomGuideline->horizontalCenter().anchorLine); - //QCOMPARE(aChanges->anchors()->baseline().item, leftGuideline->baseline().item); - //QCOMPARE(aChanges->anchors()->baseline().anchorLine, leftGuideline->baseline().anchorLine); - - delete rect; -} - -void mirrorAnchors(QQuickItem *item) { - QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); - itemPrivate->setLayoutMirror(true); -} - -qreal offsetRTL(QQuickItem *anchorItem, QQuickItem *item) { - return anchorItem->width()+2*anchorItem->x()-item->width(); -} - -void tst_qdeclarativestates::anchorChangesRTL() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorChanges1.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - mirrorAnchors(innerRect); - - QDeclarativeListReference list(rect, "states"); - QDeclarativeState *state = qobject_cast<QDeclarativeState*>(list.at(0)); - QVERIFY(state != 0); - - qmlExecuteDeferred(state); - QQuickAnchorChanges *aChanges = qobject_cast<QQuickAnchorChanges*>(state->operationAt(0)); - QVERIFY(aChanges != 0); - - rectPrivate->setState("right"); - QCOMPARE(innerRect->x(), offsetRTL(rect, innerRect) - qreal(150)); - QCOMPARE(aChanges->object(), qobject_cast<QQuickItem*>(innerRect)); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->left().anchorLine, QQuickAnchorLine::Invalid); //### was reset (how do we distinguish from not set at all) - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->right().item, rectPrivate->right().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->right().anchorLine, rectPrivate->right().anchorLine); - - rectPrivate->setState(""); - QCOMPARE(innerRect->x(), offsetRTL(rect, innerRect) -qreal(5)); - - delete rect; -} - -void tst_qdeclarativestates::anchorChangesRTL2() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorChanges2.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - mirrorAnchors(innerRect); - - rectPrivate->setState("right"); - QCOMPARE(innerRect->x(), offsetRTL(rect, innerRect) - qreal(150)); - - rectPrivate->setState(""); - QCOMPARE(innerRect->x(), offsetRTL(rect, innerRect) - qreal(5)); - - delete rect; -} - -void tst_qdeclarativestates::anchorChangesRTL3() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorChanges3.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QQuickRectangle *innerRect = qobject_cast<QQuickRectangle*>(rect->findChild<QQuickRectangle*>("MyRect")); - QVERIFY(innerRect != 0); - mirrorAnchors(innerRect); - - QQuickItem *leftGuideline = qobject_cast<QQuickItem*>(rect->findChild<QQuickItem*>("LeftGuideline")); - QVERIFY(leftGuideline != 0); - - QQuickItem *bottomGuideline = qobject_cast<QQuickItem*>(rect->findChild<QQuickItem*>("BottomGuideline")); - QVERIFY(bottomGuideline != 0); - - QDeclarativeListReference list(rect, "states"); - QDeclarativeState *state = qobject_cast<QDeclarativeState*>(list.at(0)); - QVERIFY(state != 0); - - qmlExecuteDeferred(state); - QQuickAnchorChanges *aChanges = qobject_cast<QQuickAnchorChanges*>(state->operationAt(0)); - QVERIFY(aChanges != 0); - - rectPrivate->setState("reanchored"); - QCOMPARE(aChanges->object(), qobject_cast<QQuickItem*>(innerRect)); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->left().item, QQuickItemPrivate::get(leftGuideline)->left().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->left().anchorLine, QQuickItemPrivate::get(leftGuideline)->left().anchorLine); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->right().item, rectPrivate->right().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->right().anchorLine, rectPrivate->right().anchorLine); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->top().item, rectPrivate->top().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->top().anchorLine, rectPrivate->top().anchorLine); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->bottom().item, QQuickItemPrivate::get(bottomGuideline)->bottom().item); - QCOMPARE(QQuickItemPrivate::get(aChanges->object())->anchors()->bottom().anchorLine, QQuickItemPrivate::get(bottomGuideline)->bottom().anchorLine); - - QCOMPARE(innerRect->x(), offsetRTL(leftGuideline, innerRect) - qreal(10)); - QCOMPARE(innerRect->y(), qreal(0)); - // between left side of parent and leftGuideline.x: 10, which has width 0 - QCOMPARE(innerRect->width(), qreal(10)); - QCOMPARE(innerRect->height(), qreal(150)); - - rectPrivate->setState(""); - QCOMPARE(innerRect->x(), offsetRTL(rect, innerRect) - qreal(0)); - QCOMPARE(innerRect->y(), qreal(10)); - // between right side of parent and left side of rightGuideline.x: 150, which has width 0 - QCOMPARE(innerRect->width(), qreal(50)); - QCOMPARE(innerRect->height(), qreal(190)); - - delete rect; -} - -//QTBUG-9609 -void tst_qdeclarativestates::anchorChangesCrash() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorChangesCrash.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickItemPrivate::get(rect)->setState("reanchored"); - - delete rect; -} - -// QTBUG-12273 -void tst_qdeclarativestates::anchorRewindBug() -{ - QQuickView *view = new QQuickView; - view->setSource(QUrl::fromLocalFile(TESTDATA("anchorRewindBug.qml"))); - - view->show(); - view->requestActivateWindow(); - - QTest::qWaitForWindowShown(view); - - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(view->rootObject()); - QVERIFY(rect != 0); - - QQuickItem * column = rect->findChild<QQuickItem*>("column"); - - QVERIFY(column != 0); - QVERIFY(!QQuickItemPrivate::get(column)->heightValid); - QVERIFY(!QQuickItemPrivate::get(column)->widthValid); - QCOMPARE(column->height(), 200.0); - QQuickItemPrivate::get(rect)->setState("reanchored"); - - // column height and width should stay implicit - // and column's implicit resizing should still work - QVERIFY(!QQuickItemPrivate::get(column)->heightValid); - QVERIFY(!QQuickItemPrivate::get(column)->widthValid); - QTRY_COMPARE(column->height(), 100.0); - - QQuickItemPrivate::get(rect)->setState(""); - - // column height and width should stay implicit - // and column's implicit resizing should still work - QVERIFY(!QQuickItemPrivate::get(column)->heightValid); - QVERIFY(!QQuickItemPrivate::get(column)->widthValid); - QTRY_COMPARE(column->height(), 200.0); - - delete view; -} - -// QTBUG-11834 -void tst_qdeclarativestates::anchorRewindBug2() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("anchorRewindBug2.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QQuickRectangle *mover = rect->findChild<QQuickRectangle*>("mover"); - - QVERIFY(mover != 0); - QCOMPARE(mover->y(), qreal(0.0)); - QCOMPARE(mover->width(), qreal(50.0)); - - QQuickItemPrivate::get(rect)->setState("anchored"); - QCOMPARE(mover->y(), qreal(250.0)); - QCOMPARE(mover->width(), qreal(200.0)); - - QQuickItemPrivate::get(rect)->setState(""); - QCOMPARE(mover->y(), qreal(0.0)); - QCOMPARE(mover->width(), qreal(50.0)); - - delete rect; -} - -void tst_qdeclarativestates::script() -{ - QDeclarativeEngine engine; - - { - QDeclarativeComponent rectComponent(&engine, TESTDATA("script.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("blue")); // a script isn't reverted - } -} - -void tst_qdeclarativestates::restoreEntryValues() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("restoreEntryValues.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("blue")); -} - -void tst_qdeclarativestates::explicitChanges() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("explicit.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QDeclarativeListReference list(rect, "states"); - QDeclarativeState *state = qobject_cast<QDeclarativeState*>(list.at(0)); - QVERIFY(state != 0); - - qmlExecuteDeferred(state); - QDeclarativePropertyChanges *changes = qobject_cast<QDeclarativePropertyChanges*>(rect->findChild<QDeclarativePropertyChanges*>("changes")); - QVERIFY(changes != 0); - QVERIFY(changes->isExplicit()); - - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rect->setProperty("sourceColor", QColor("green")); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - rect->setProperty("sourceColor", QColor("yellow")); - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("yellow")); -} - -void tst_qdeclarativestates::propertyErrors() -{ - QDeclarativeEngine engine; - QDeclarativeComponent rectComponent(&engine, TESTDATA("propertyErrors.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QCOMPARE(rect->color(),QColor("red")); - - QTest::ignoreMessage(QtWarningMsg, fullDataPath("propertyErrors.qml") + ":8:9: QML PropertyChanges: Cannot assign to non-existent property \"colr\""); - QTest::ignoreMessage(QtWarningMsg, fullDataPath("propertyErrors.qml") + ":8:9: QML PropertyChanges: Cannot assign to read-only property \"activeFocus\""); - QQuickItemPrivate::get(rect)->setState("blue"); -} - -void tst_qdeclarativestates::incorrectRestoreBug() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("basicChanges.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QCOMPARE(rect->color(),QColor("red")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - - // make sure if we change the base state value, we then restore to it correctly - rect->setColor(QColor("green")); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("green")); -} - -void tst_qdeclarativestates::autoStateAtStartupRestoreBug() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent component(&engine, TESTDATA("autoStateAtStartupRestoreBug.qml")); - QObject *obj = component.create(); - - QVERIFY(obj != 0); - QCOMPARE(obj->property("test").toInt(), 3); - - obj->setProperty("input", 2); - - QCOMPARE(obj->property("test").toInt(), 9); - - delete obj; -} - -void tst_qdeclarativestates::deletingChange() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("deleting.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - QCOMPARE(rect->radius(),qreal(5)); - - rectPrivate->setState(""); - QCOMPARE(rect->color(),QColor("red")); - QCOMPARE(rect->radius(),qreal(0)); - - QDeclarativePropertyChanges *pc = rect->findChild<QDeclarativePropertyChanges*>("pc1"); - QVERIFY(pc != 0); - delete pc; - - QDeclarativeState *state = rect->findChild<QDeclarativeState*>(); - QVERIFY(state != 0); - qmlExecuteDeferred(state); - QCOMPARE(state->operationCount(), 1); - - rectPrivate->setState("blue"); - QCOMPARE(rect->color(),QColor("red")); - QCOMPARE(rect->radius(),qreal(5)); - - delete rect; -} - -void tst_qdeclarativestates::deletingState() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("deletingState.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - - QDeclarativeStateGroup *sg = rect->findChild<QDeclarativeStateGroup*>(); - QVERIFY(sg != 0); - QVERIFY(sg->findState("blue") != 0); - - sg->setState("blue"); - QCOMPARE(rect->color(),QColor("blue")); - - sg->setState(""); - QCOMPARE(rect->color(),QColor("red")); - - QDeclarativeState *state = rect->findChild<QDeclarativeState*>(); - QVERIFY(state != 0); - delete state; - - QVERIFY(sg->findState("blue") == 0); - - //### should we warn that state doesn't exist - sg->setState("blue"); - QCOMPARE(rect->color(),QColor("red")); - - delete rect; -} - -void tst_qdeclarativestates::tempState() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("legalTempState.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QTest::ignoreMessage(QtDebugMsg, "entering placed"); - QTest::ignoreMessage(QtDebugMsg, "entering idle"); - rectPrivate->setState("placed"); - QCOMPARE(rectPrivate->state(), QLatin1String("idle")); -} - -void tst_qdeclarativestates::illegalTempState() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("illegalTempState.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QTest::ignoreMessage(QtWarningMsg, "<Unknown File>: QML StateGroup: Can't apply a state change as part of a state definition."); - rectPrivate->setState("placed"); - QCOMPARE(rectPrivate->state(), QLatin1String("placed")); -} - -void tst_qdeclarativestates::nonExistantProperty() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent rectComponent(&engine, TESTDATA("nonExistantProp.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(rectComponent.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QTest::ignoreMessage(QtWarningMsg, fullDataPath("nonExistantProp.qml") + ":9:9: QML PropertyChanges: Cannot assign to non-existent property \"colr\""); - rectPrivate->setState("blue"); - QCOMPARE(rectPrivate->state(), QLatin1String("blue")); -} - -void tst_qdeclarativestates::reset() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, TESTDATA("reset.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - - QQuickImage *image = rect->findChild<QQuickImage*>(); - QVERIFY(image != 0); - QCOMPARE(image->width(), qreal(40.)); - QCOMPARE(image->height(), qreal(20.)); - - QQuickItemPrivate::get(rect)->setState("state1"); - - QCOMPARE(image->width(), 20.0); - QCOMPARE(image->height(), qreal(20.)); - - delete rect; -} - -void tst_qdeclarativestates::illegalObjectCreation() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent component(&engine, TESTDATA("illegalObj.qml")); - QList<QDeclarativeError> errors = component.errors(); - QVERIFY(errors.count() == 1); - const QDeclarativeError &error = errors.at(0); - QCOMPARE(error.line(), 9); - QCOMPARE(error.column(), 23); - QCOMPARE(error.description().toUtf8().constData(), "PropertyChanges does not support creating state-specific objects."); -} - -void tst_qdeclarativestates::whenOrdering() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, TESTDATA("whenOrdering.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QCOMPARE(rectPrivate->state(), QLatin1String("")); - rect->setProperty("condition2", true); - QCOMPARE(rectPrivate->state(), QLatin1String("state2")); - rect->setProperty("condition1", true); - QCOMPARE(rectPrivate->state(), QLatin1String("state1")); - rect->setProperty("condition2", false); - QCOMPARE(rectPrivate->state(), QLatin1String("state1")); - rect->setProperty("condition2", true); - QCOMPARE(rectPrivate->state(), QLatin1String("state1")); - rect->setProperty("condition1", false); - rect->setProperty("condition2", false); - QCOMPARE(rectPrivate->state(), QLatin1String("")); -} - -void tst_qdeclarativestates::urlResolution() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, TESTDATA("urlResolution.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - - QQuickItem *myType = rect->findChild<QQuickItem*>("MyType"); - QQuickImage *image1 = rect->findChild<QQuickImage*>("image1"); - QQuickImage *image2 = rect->findChild<QQuickImage*>("image2"); - QQuickImage *image3 = rect->findChild<QQuickImage*>("image3"); - QVERIFY(myType != 0 && image1 != 0 && image2 != 0 && image3 != 0); - - QQuickItemPrivate::get(myType)->setState("SetImageState"); - QUrl resolved = QUrl::fromLocalFile(TESTDATA("Implementation/images/qt-logo.png")); - QCOMPARE(image1->source(), resolved); - QCOMPARE(image2->source(), resolved); - QCOMPARE(image3->source(), resolved); - - delete rect; -} - -void tst_qdeclarativestates::unnamedWhen() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, TESTDATA("unnamedWhen.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QCOMPARE(rectPrivate->state(), QLatin1String("")); - QCOMPARE(rect->property("stateString").toString(), QLatin1String("")); - rect->setProperty("triggerState", true); - QCOMPARE(rectPrivate->state(), QLatin1String("anonymousState1")); - QCOMPARE(rect->property("stateString").toString(), QLatin1String("inState")); - rect->setProperty("triggerState", false); - QCOMPARE(rectPrivate->state(), QLatin1String("")); - QCOMPARE(rect->property("stateString").toString(), QLatin1String("")); -} - -void tst_qdeclarativestates::returnToBase() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, TESTDATA("returnToBase.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QCOMPARE(rectPrivate->state(), QLatin1String("")); - QCOMPARE(rect->property("stateString").toString(), QLatin1String("")); - rect->setProperty("triggerState", true); - QCOMPARE(rectPrivate->state(), QLatin1String("anonymousState1")); - QCOMPARE(rect->property("stateString").toString(), QLatin1String("inState")); - rect->setProperty("triggerState", false); - QCOMPARE(rectPrivate->state(), QLatin1String("")); - QCOMPARE(rect->property("stateString").toString(), QLatin1String("originalState")); -} - -//QTBUG-12559 -void tst_qdeclarativestates::extendsBug() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, TESTDATA("extendsBug.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - QQuickRectangle *greenRect = rect->findChild<QQuickRectangle*>("greenRect"); - - rectPrivate->setState("b"); - QCOMPARE(greenRect->x(), qreal(100)); - QCOMPARE(greenRect->y(), qreal(100)); -} - -void tst_qdeclarativestates::editProperties() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, TESTDATA("editProperties.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - - QDeclarativeStateGroup *stateGroup = rectPrivate->_states(); - QVERIFY(stateGroup != 0); - qmlExecuteDeferred(stateGroup); - - QDeclarativeState *blueState = stateGroup->findState("blue"); - QVERIFY(blueState != 0); - qmlExecuteDeferred(blueState); - - QDeclarativePropertyChanges *propertyChangesBlue = qobject_cast<QDeclarativePropertyChanges*>(blueState->operationAt(0)); - QVERIFY(propertyChangesBlue != 0); - - QDeclarativeState *greenState = stateGroup->findState("green"); - QVERIFY(greenState != 0); - qmlExecuteDeferred(greenState); - - QDeclarativePropertyChanges *propertyChangesGreen = qobject_cast<QDeclarativePropertyChanges*>(greenState->operationAt(0)); - QVERIFY(propertyChangesGreen != 0); - - QQuickRectangle *childRect = rect->findChild<QQuickRectangle*>("rect2"); - QVERIFY(childRect != 0); - QCOMPARE(childRect->width(), qreal(402)); - QVERIFY(QDeclarativePropertyPrivate::binding(QDeclarativeProperty(childRect, "width"))); - QCOMPARE(childRect->height(), qreal(200)); - - rectPrivate->setState("blue"); - QCOMPARE(childRect->width(), qreal(50)); - QCOMPARE(childRect->height(), qreal(40)); - QVERIFY(!QDeclarativePropertyPrivate::binding(QDeclarativeProperty(childRect, "width"))); - QVERIFY(blueState->bindingInRevertList(childRect, "width")); - - - rectPrivate->setState("green"); - QCOMPARE(childRect->width(), qreal(200)); - QCOMPARE(childRect->height(), qreal(100)); - QVERIFY(greenState->bindingInRevertList(childRect, "width")); - - - rectPrivate->setState(""); - - - QCOMPARE(propertyChangesBlue->actions().length(), 2); - QVERIFY(propertyChangesBlue->containsValue("width")); - QVERIFY(!propertyChangesBlue->containsProperty("x")); - QCOMPARE(propertyChangesBlue->value("width").toInt(), 50); - QVERIFY(!propertyChangesBlue->value("x").isValid()); - - propertyChangesBlue->changeValue("width", 60); - QCOMPARE(propertyChangesBlue->value("width").toInt(), 60); - QCOMPARE(propertyChangesBlue->actions().length(), 2); - - - propertyChangesBlue->changeExpression("width", "myRectangle.width / 2"); - QVERIFY(!propertyChangesBlue->containsValue("width")); - QVERIFY(propertyChangesBlue->containsExpression("width")); - QCOMPARE(propertyChangesBlue->value("width").toInt(), 0); - QCOMPARE(propertyChangesBlue->actions().length(), 2); - - propertyChangesBlue->changeValue("width", 50); - QVERIFY(propertyChangesBlue->containsValue("width")); - QVERIFY(!propertyChangesBlue->containsExpression("width")); - QCOMPARE(propertyChangesBlue->value("width").toInt(), 50); - QCOMPARE(propertyChangesBlue->actions().length(), 2); - - QVERIFY(QDeclarativePropertyPrivate::binding(QDeclarativeProperty(childRect, "width"))); - rectPrivate->setState("blue"); - QCOMPARE(childRect->width(), qreal(50)); - QCOMPARE(childRect->height(), qreal(40)); - - propertyChangesBlue->changeValue("width", 60); - QCOMPARE(propertyChangesBlue->value("width").toInt(), 60); - QCOMPARE(propertyChangesBlue->actions().length(), 2); - QCOMPARE(childRect->width(), qreal(60)); - QVERIFY(!QDeclarativePropertyPrivate::binding(QDeclarativeProperty(childRect, "width"))); - - propertyChangesBlue->changeExpression("width", "myRectangle.width / 2"); - QVERIFY(!propertyChangesBlue->containsValue("width")); - QVERIFY(propertyChangesBlue->containsExpression("width")); - QCOMPARE(propertyChangesBlue->value("width").toInt(), 0); - QCOMPARE(propertyChangesBlue->actions().length(), 2); - QVERIFY(QDeclarativePropertyPrivate::binding(QDeclarativeProperty(childRect, "width"))); - QCOMPARE(childRect->width(), qreal(200)); - - propertyChangesBlue->changeValue("width", 50); - QCOMPARE(childRect->width(), qreal(50)); - - rectPrivate->setState(""); - QCOMPARE(childRect->width(), qreal(402)); - QVERIFY(QDeclarativePropertyPrivate::binding(QDeclarativeProperty(childRect, "width"))); - - QCOMPARE(propertyChangesGreen->actions().length(), 2); - rectPrivate->setState("green"); - QCOMPARE(childRect->width(), qreal(200)); - QCOMPARE(childRect->height(), qreal(100)); - QVERIFY(QDeclarativePropertyPrivate::binding(QDeclarativeProperty(childRect, "width"))); - QVERIFY(greenState->bindingInRevertList(childRect, "width")); - QCOMPARE(propertyChangesGreen->actions().length(), 2); - - - propertyChangesGreen->removeProperty("height"); - QVERIFY(!QDeclarativePropertyPrivate::binding(QDeclarativeProperty(childRect, "height"))); - QCOMPARE(childRect->height(), qreal(200)); - - QVERIFY(greenState->bindingInRevertList(childRect, "width")); - QVERIFY(greenState->containsPropertyInRevertList(childRect, "width")); - propertyChangesGreen->removeProperty("width"); - QVERIFY(QDeclarativePropertyPrivate::binding(QDeclarativeProperty(childRect, "width"))); - QCOMPARE(childRect->width(), qreal(402)); - QVERIFY(!greenState->bindingInRevertList(childRect, "width")); - QVERIFY(!greenState->containsPropertyInRevertList(childRect, "width")); - - propertyChangesBlue->removeProperty("width"); - QCOMPARE(childRect->width(), qreal(402)); - - rectPrivate->setState("blue"); - QCOMPARE(childRect->width(), qreal(402)); - QCOMPARE(childRect->height(), qreal(40)); -} - -void tst_qdeclarativestates::QTBUG_14830() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, TESTDATA("QTBUG-14830.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - QQuickItem *item = rect->findChild<QQuickItem*>("area"); - - QCOMPARE(item->width(), qreal(171)); -} - -void tst_qdeclarativestates::avoidFastForward() -{ - QDeclarativeEngine engine; - - //shouldn't fast forward if there isn't a transition - QDeclarativeComponent c(&engine, TESTDATA("avoidFastForward.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - rectPrivate->setState("a"); - QCOMPARE(rect->property("updateCount").toInt(), 1); -} - -//QTBUG-22583 -void tst_qdeclarativestates::revertListBug() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, TESTDATA("revertListBug.qml")); - QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create()); - QVERIFY(rect != 0); - - QQuickRectangle *rect1 = rect->findChild<QQuickRectangle*>("rect1"); - QQuickRectangle *rect2 = rect->findChild<QQuickRectangle*>("rect2"); - QQuickItem *origParent1 = rect->findChild<QQuickItem*>("originalParent1"); - QQuickItem *origParent2 = rect->findChild<QQuickItem*>("originalParent2"); - QQuickItem *newParent = rect->findChild<QQuickItem*>("newParent"); - - QCOMPARE(rect1->parentItem(), origParent1); - QCOMPARE(rect2->parentItem(), origParent2); - - QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect); - rectPrivate->setState("reparented"); - - QCOMPARE(rect1->parentItem(), newParent); - QCOMPARE(rect2->parentItem(), origParent2); - - rectPrivate->setState(""); - - QCOMPARE(rect1->parentItem(), origParent1); - QCOMPARE(rect2->parentItem(), origParent2); - - QMetaObject::invokeMethod(rect, "switchTargetItem"); - - rectPrivate->setState("reparented"); - - QCOMPARE(rect1->parentItem(), origParent1); - QCOMPARE(rect2->parentItem(), newParent); - - rectPrivate->setState(""); - - QCOMPARE(rect1->parentItem(), origParent1); - QCOMPARE(rect2->parentItem(), origParent2); //QTBUG-22583 causes rect2's parent item to be origParent1 -} - -QTEST_MAIN(tst_qdeclarativestates) - -#include "tst_qdeclarativestates.moc" |