diff options
author | Warwick Allison <warwick.allison@nokia.com> | 2009-11-09 03:07:49 (GMT) |
---|---|---|
committer | Warwick Allison <warwick.allison@nokia.com> | 2009-11-09 03:07:49 (GMT) |
commit | 58e1842aa9703f81c2f55758ba186315524027d8 (patch) | |
tree | 617ab67b149e9e35b6dbd19e90f8044f078ca899 /tests/auto/declarative | |
parent | d96ec3cff51b952a2db9dd016ca5b21d9bb21adf (diff) | |
parent | 7620586aa79c027e5dfd246d53232826333ce715 (diff) | |
download | Qt-58e1842aa9703f81c2f55758ba186315524027d8.zip Qt-58e1842aa9703f81c2f55758ba186315524027d8.tar.gz Qt-58e1842aa9703f81c2f55758ba186315524027d8.tar.bz2 |
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'tests/auto/declarative')
155 files changed, 7772 insertions, 1012 deletions
diff --git a/tests/auto/declarative/anchors/data/anchors.qml b/tests/auto/declarative/anchors/data/anchors.qml index 377dd2d..765e5b6 100644 --- a/tests/auto/declarative/anchors/data/anchors.qml +++ b/tests/auto/declarative/anchors/data/anchors.qml @@ -114,4 +114,31 @@ Rectangle { y: 70; width: 10; height: 10 anchors.horizontalCenter: parent.left } + Rectangle { + id: Rect22; objectName: "Rect22" + width: 10; height: 10 + anchors.centerIn: MasterRect + } + Rectangle { + id: Rect23; objectName: "Rect23" + anchors.left: MasterRect.left + anchors.leftMargin: 5 + anchors.right: MasterRect.right + anchors.rightMargin: 5 + anchors.top: MasterRect.top + anchors.topMargin: 5 + anchors.bottom: MasterRect.bottom + anchors.bottomMargin: 5 + } + Text { + id: text1; objectName: "text1" + y: 200; + text: "Hello" + } + Text { + id: text2; objectName: "text2" + anchors.baseline: text1.baseline + anchors.left: text1.right + text: "World" + } } diff --git a/tests/auto/declarative/anchors/data/crash1.qml b/tests/auto/declarative/anchors/data/crash1.qml new file mode 100644 index 0000000..fd9dc55 --- /dev/null +++ b/tests/auto/declarative/anchors/data/crash1.qml @@ -0,0 +1,11 @@ +import Qt 4.6 + +Column { + Text { + text: "foo" + anchors.fill: parent + } + Text { + text: "bar" + } +} diff --git a/tests/auto/declarative/anchors/tst_anchors.cpp b/tests/auto/declarative/anchors/tst_anchors.cpp index 8abf04f..4c85d2d 100644 --- a/tests/auto/declarative/anchors/tst_anchors.cpp +++ b/tests/auto/declarative/anchors/tst_anchors.cpp @@ -43,6 +43,7 @@ #include <QtDeclarative/qmlcomponent.h> #include <QtDeclarative/qmlview.h> #include <private/qmlgraphicsrectangle_p.h> +#include <private/qmlgraphicstext_p.h> #include <QtDeclarative/private/qmlgraphicsanchors_p_p.h> @@ -61,6 +62,7 @@ private slots: void illegalSets(); void reset(); void nullItem(); + void crash1(); }; /* @@ -131,6 +133,21 @@ void tst_anchors::basicAnchors() QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect20"))->x(), 235.0); QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect21"))->x(), -5.0); + //centerIn + QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect22"))->x(), 69.0); + QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect22"))->y(), 5.0); + + //margins + QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect23"))->x(), 31.0); + QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect23"))->y(), 5.0); + QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect23"))->width(), 86.0); + QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect23"))->height(), 10.0); + + //baseline + QmlGraphicsText *text1 = findItem<QmlGraphicsText>(view->root(), QLatin1String("text1")); + QmlGraphicsText *text2 = findItem<QmlGraphicsText>(view->root(), QLatin1String("text2")); + QCOMPARE(text1->y(), text2->y()); + delete view; } @@ -232,6 +249,20 @@ void tst_anchors::nullItem() item->anchors()->setBottom(anchor); } +void tst_anchors::crash1() +{ + QmlView *view = new QmlView; + + view->setUrl(QUrl("file://" SRCDIR "/data/crash1.qml")); + + QString expect = "QML QmlGraphicsText (" + view->url().toString() + ":4:5" + ") Possible anchor loop detected on fill."; + QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); + view->execute(); + qApp->processEvents(); + + delete view; +} + QTEST_MAIN(tst_anchors) #include "tst_anchors.moc" diff --git a/tests/auto/declarative/animations/data/badproperty1.qml b/tests/auto/declarative/animations/data/badproperty1.qml index 78da34a..df1a98d 100644 --- a/tests/auto/declarative/animations/data/badproperty1.qml +++ b/tests/auto/declarative/animations/data/badproperty1.qml @@ -19,6 +19,6 @@ Rectangle { PropertyChanges { target: MyRect; border.color: "blue" } } transitions: Transition { - ColorAnimation { target: MyRect; to: "red"; properties: "pen.colr"; duration: 1000 } + ColorAnimation { target: MyRect; to: "red"; property: "pen.colr"; duration: 1000 } } } diff --git a/tests/auto/declarative/animations/data/badtype4.qml b/tests/auto/declarative/animations/data/badtype4.qml index 0c0a636..5db6c17 100644 --- a/tests/auto/declarative/animations/data/badtype4.qml +++ b/tests/auto/declarative/animations/data/badtype4.qml @@ -20,7 +20,7 @@ Rectangle { } transitions: Transition { //comment out each in turn to make sure each only animates the relevant property - ColorAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color - NumberAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color + ColorAnimation { matchProperties: "x,color"; duration: 1000 } //x is real, color is color + NumberAnimation { matchProperties: "x,color"; duration: 1000 } //x is real, color is color } } diff --git a/tests/auto/declarative/animations/data/dotproperty.qml b/tests/auto/declarative/animations/data/dotproperty.qml index ee076c2..3ddb002 100644 --- a/tests/auto/declarative/animations/data/dotproperty.qml +++ b/tests/auto/declarative/animations/data/dotproperty.qml @@ -16,9 +16,9 @@ Rectangle { } states: State { name: "state1" - PropertyChanges { target: MyRect; pen.color: "blue" } + PropertyChanges { target: MyRect; border.color: "blue" } } transitions: Transition { - ColorAnimation { properties: "pen.color"; duration: 1000 } + ColorAnimation { matchProperties: "border.color"; duration: 1000 } } } diff --git a/tests/auto/declarative/animations/data/mixedtype1.qml b/tests/auto/declarative/animations/data/mixedtype1.qml index ed50582..5ecf14f 100644 --- a/tests/auto/declarative/animations/data/mixedtype1.qml +++ b/tests/auto/declarative/animations/data/mixedtype1.qml @@ -19,6 +19,6 @@ Rectangle { PropertyChanges { target: MyRect; x: 200; border.width: 10 } } transitions: Transition { - PropertyAnimation { properties: "x,border.width"; duration: 1000 } //x is real, border.width is int + PropertyAnimation { matchProperties: "x,border.width"; duration: 1000 } //x is real, border.width is int } } diff --git a/tests/auto/declarative/animations/data/mixedtype2.qml b/tests/auto/declarative/animations/data/mixedtype2.qml index 4854c2e..645f1d0 100644 --- a/tests/auto/declarative/animations/data/mixedtype2.qml +++ b/tests/auto/declarative/animations/data/mixedtype2.qml @@ -19,6 +19,6 @@ Rectangle { PropertyChanges { target: MyRect; x: 200; color: "blue" } } transitions: Transition { - PropertyAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color + PropertyAnimation { matchProperties: "x,color"; duration: 1000 } //x is real, color is color } } diff --git a/tests/auto/declarative/animations/data/properties.qml b/tests/auto/declarative/animations/data/properties.qml new file mode 100644 index 0000000..a8023b4 --- /dev/null +++ b/tests/auto/declarative/animations/data/properties.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + x: NumberAnimation { to: 200; running: true; } + } +} diff --git a/tests/auto/declarative/animations/data/properties2.qml b/tests/auto/declarative/animations/data/properties2.qml new file mode 100644 index 0000000..aab7661 --- /dev/null +++ b/tests/auto/declarative/animations/data/properties2.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + x: NumberAnimation { matchTargets: theRect; matchProperties: "x"; to: 200; running: true } + } +} diff --git a/tests/auto/declarative/animations/data/properties3.qml b/tests/auto/declarative/animations/data/properties3.qml new file mode 100644 index 0000000..fd21a85 --- /dev/null +++ b/tests/auto/declarative/animations/data/properties3.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + x: NumberAnimation { target: theRect; property: "x"; to: 300; running: true } + } +} diff --git a/tests/auto/declarative/animations/data/properties4.qml b/tests/auto/declarative/animations/data/properties4.qml new file mode 100644 index 0000000..e23651c --- /dev/null +++ b/tests/auto/declarative/animations/data/properties4.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + x: NumberAnimation { target: theRect; property: "y"; to: 200; running: true } + } +} diff --git a/tests/auto/declarative/animations/data/properties5.qml b/tests/auto/declarative/animations/data/properties5.qml new file mode 100644 index 0000000..25c9866 --- /dev/null +++ b/tests/auto/declarative/animations/data/properties5.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + x: NumberAnimation { matchTargets: theRect; matchProperties: "y"; to: 200; running: true } + } +} diff --git a/tests/auto/declarative/animations/data/propertiesTransition.qml b/tests/auto/declarative/animations/data/propertiesTransition.qml new file mode 100644 index 0000000..75603b9 --- /dev/null +++ b/tests/auto/declarative/animations/data/propertiesTransition.qml @@ -0,0 +1,29 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + } + + states: State { + name: "moved" + PropertyChanges { + target: theRect + x: 200 + } + } + transitions: Transition { + NumberAnimation { matchTargets: theRect; matchProperties: "x" } + } + + MouseRegion { + anchors.fill: parent + onClicked: parent.state = "moved" + } +} diff --git a/tests/auto/declarative/animations/data/propertiesTransition2.qml b/tests/auto/declarative/animations/data/propertiesTransition2.qml new file mode 100644 index 0000000..ae59157 --- /dev/null +++ b/tests/auto/declarative/animations/data/propertiesTransition2.qml @@ -0,0 +1,29 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + } + + states: State { + name: "moved" + PropertyChanges { + target: theRect + x: 200 + } + } + transitions: Transition { + NumberAnimation { target: theRect; property: "y"; to: 200 } + } + + MouseRegion { + anchors.fill: parent + onClicked: parent.state = "moved" + } +} diff --git a/tests/auto/declarative/animations/data/propertiesTransition3.qml b/tests/auto/declarative/animations/data/propertiesTransition3.qml new file mode 100644 index 0000000..eedba7b --- /dev/null +++ b/tests/auto/declarative/animations/data/propertiesTransition3.qml @@ -0,0 +1,29 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + } + + states: State { + name: "moved" + PropertyChanges { + target: theRect + x: 200 + } + } + transitions: Transition { + NumberAnimation { matchTargets: theRect; matchProperties: "y" } + } + + MouseRegion { + anchors.fill: parent + onClicked: parent.state = "moved" + } +} diff --git a/tests/auto/declarative/animations/data/propertiesTransition4.qml b/tests/auto/declarative/animations/data/propertiesTransition4.qml new file mode 100644 index 0000000..301f796 --- /dev/null +++ b/tests/auto/declarative/animations/data/propertiesTransition4.qml @@ -0,0 +1,29 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + } + + states: State { + name: "moved" + PropertyChanges { + target: theRect + x: 200 + } + } + transitions: Transition { + NumberAnimation { target: theRect; matchProperties: "x" } + } + + MouseRegion { + anchors.fill: parent + onClicked: parent.state = "moved" + } +} diff --git a/tests/auto/declarative/animations/data/propertiesTransition5.qml b/tests/auto/declarative/animations/data/propertiesTransition5.qml new file mode 100644 index 0000000..565c519 --- /dev/null +++ b/tests/auto/declarative/animations/data/propertiesTransition5.qml @@ -0,0 +1,29 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + } + + states: State { + name: "moved" + PropertyChanges { + target: theRect + x: 200 + } + } + transitions: Transition { + NumberAnimation { matchTargets: theRect; property: "x" } + } + + MouseRegion { + anchors.fill: parent + onClicked: parent.state = "moved" + } +} diff --git a/tests/auto/declarative/animations/data/propertiesTransition6.qml b/tests/auto/declarative/animations/data/propertiesTransition6.qml new file mode 100644 index 0000000..b541dab --- /dev/null +++ b/tests/auto/declarative/animations/data/propertiesTransition6.qml @@ -0,0 +1,29 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + Rectangle { + id: theRect + objectName: "TheRect" + color: "red" + width: 50; height: 50 + x: 100; y: 100 + } + + states: State { + name: "moved" + PropertyChanges { + target: theRect + x: 200 + } + } + transitions: Transition { + NumberAnimation { matchTargets: theItem; matchProperties: "x" } + } + + MouseRegion { + anchors.fill: parent + onClicked: parent.state = "moved" + } +} diff --git a/tests/auto/declarative/animations/tst_animations.cpp b/tests/auto/declarative/animations/tst_animations.cpp index ca383bb..a4402cb 100644 --- a/tests/auto/declarative/animations/tst_animations.cpp +++ b/tests/auto/declarative/animations/tst_animations.cpp @@ -59,6 +59,8 @@ private slots: void badTypes(); void badProperties(); void mixedTypes(); + void properties(); + void propertiesTransition(); }; #define QTIMED_COMPARE(lhs, rhs) do { \ @@ -198,11 +200,12 @@ void tst_animations::badProperties() { QmlEngine engine; QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/badproperty1.qml")); + QTest::ignoreMessage(QtWarningMsg, "QML QmlColorAnimation (file://" SRCDIR "/data/badproperty1.qml:22:9) Cannot animate non-existant property \"pen.colr\""); QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); QVERIFY(rect); - QTest::ignoreMessage(QtWarningMsg, "QML QmlColorAnimation (file://" SRCDIR "/data/badproperty1.qml:22:9) Cannot animate non-existant property \"pen.colr\""); - rect->setState("state1"); + //### should we warn here are well? + //rect->setState("state1"); } } @@ -244,6 +247,143 @@ void tst_animations::mixedTypes() } } +void tst_animations::properties() +{ + const int waitDuration = 300; + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + QTest::qWait(waitDuration); + QTIMED_COMPARE(myRect->x(),qreal(200)); + } + + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties2.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + QTest::qWait(waitDuration); + QTIMED_COMPARE(myRect->x(),qreal(200)); + } + + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties3.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + QTest::qWait(waitDuration); + QTIMED_COMPARE(myRect->x(),qreal(300)); + } + + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties4.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + QTest::qWait(waitDuration); + QTIMED_COMPARE(myRect->y(),qreal(200)); + QTIMED_COMPARE(myRect->x(),qreal(100)); + } + + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties5.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + QTest::qWait(waitDuration); + QTIMED_COMPARE(myRect->x(),qreal(100)); + QTIMED_COMPARE(myRect->y(),qreal(100)); + } +} + +void tst_animations::propertiesTransition() +{ + const int waitDuration = 300; + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + rect->setState("moved"); + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + QTest::qWait(waitDuration); + QTIMED_COMPARE(myRect->x(),qreal(200)); + } + + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition2.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + rect->setState("moved"); + QCOMPARE(myRect->x(),qreal(200)); + QCOMPARE(myRect->y(),qreal(100)); + QTest::qWait(waitDuration); + QTIMED_COMPARE(myRect->y(),qreal(200)); + } + + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition3.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + QTest::ignoreMessage(QtWarningMsg, "QML QmlNumberAnimation (file:///home/brasser/depot/kinetic-declarativeui/qt/tests/auto/declarative/animations/data/propertiesTransition4.qml:22:9) targets/properties/exclude and target/property are mutually exclusive."); + rect->setState("moved"); + QCOMPARE(myRect->x(),qreal(200)); + } + + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition4.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + QTest::ignoreMessage(QtWarningMsg, "QML QmlNumberAnimation (file:///home/brasser/depot/kinetic-declarativeui/qt/tests/auto/declarative/animations/data/propertiesTransition5.qml:22:9) targets/properties/exclude and target/property are mutually exclusive."); + rect->setState("moved"); + QCOMPARE(myRect->x(),qreal(200)); + } + + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition5.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + //### should output warning at some point -- theItem doesn't exist + QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); + QVERIFY(myRect); + rect->setState("moved"); + QCOMPARE(myRect->x(),qreal(200)); + } +} + QTEST_MAIN(tst_animations) #include "tst_animations.moc" diff --git a/tests/auto/declarative/behaviors/data/nonSelecting.qml b/tests/auto/declarative/behaviors/data/nonSelecting.qml index ae9a9f5..ba36d93 100644 --- a/tests/auto/declarative/behaviors/data/nonSelecting.qml +++ b/tests/auto/declarative/behaviors/data/nonSelecting.qml @@ -8,7 +8,7 @@ Rectangle { width: 100; height: 100; color: "green" x: Behavior { objectName: "MyBehavior"; - NumberAnimation { target: rect; property: "y"; duration: 200; } + NumberAnimation { target: rect; property: "x"; duration: 200; } } } MouseRegion { diff --git a/tests/auto/declarative/behaviors/data/nonSelecting2.qml b/tests/auto/declarative/behaviors/data/nonSelecting2.qml new file mode 100644 index 0000000..e9849eb --- /dev/null +++ b/tests/auto/declarative/behaviors/data/nonSelecting2.qml @@ -0,0 +1,26 @@ +import Qt 4.6 +Rectangle { + width: 400 + height: 400 + Rectangle { + id: rect + objectName: "MyRect" + width: 100; height: 100; color: "green" + x: Behavior { + objectName: "MyBehavior"; + NumberAnimation { matchTargets: rect; matchProperties: "y"; duration: 200; } + } + } + MouseRegion { + id: clicker + anchors.fill: parent + } + states: State { + name: "moved" + when: clicker.pressed + PropertyChanges { + target: rect + x: 200 + } + } +} diff --git a/tests/auto/declarative/behaviors/tst_behaviors.cpp b/tests/auto/declarative/behaviors/tst_behaviors.cpp index da910d9..6343968 100644 --- a/tests/auto/declarative/behaviors/tst_behaviors.cpp +++ b/tests/auto/declarative/behaviors/tst_behaviors.cpp @@ -208,14 +208,27 @@ void tst_behaviors::emptyBehavior() void tst_behaviors::nonSelectingBehavior() { - QmlEngine engine; - QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/nonSelecting.qml")); - QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); - QVERIFY(rect); + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/nonSelecting.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); - rect->setState("moved"); - qreal x = qobject_cast<QmlGraphicsRectangle*>(rect->findChild<QmlGraphicsRectangle*>("MyRect"))->x(); - QCOMPARE(x, qreal(200)); //should change immediately + rect->setState("moved"); + qreal x = qobject_cast<QmlGraphicsRectangle*>(rect->findChild<QmlGraphicsRectangle*>("MyRect"))->x(); + QCOMPARE(x, qreal(200)); //should change immediately + } + + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/nonSelecting2.qml")); + QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create()); + QVERIFY(rect); + + rect->setState("moved"); + qreal x = qobject_cast<QmlGraphicsRectangle*>(rect->findChild<QmlGraphicsRectangle*>("MyRect"))->x(); + QCOMPARE(x, qreal(200)); //should change immediately + } } void tst_behaviors::reassignedAnimation() diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index a061d56..b6d2241 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -7,24 +7,27 @@ SUBDIRS += \ datetimeformatter \ # Cover examples \ layouts \ # Cover - listview \ # Cover + qmlgraphicslistview \ # Cover qmlgraphicsgridview \ # Cover numberformatter \ # Cover + parserstress \ # Cover pathview \ # Cover qfxloader \ # Cover - qfxtextedit \ # Cover - qfxtextinput \ # Cover - qfxwebview \ # Cover qmetaobjectbuilder \ # Cover qmlbinding \ # Cover + qmlconnection \ # Cover qmlcontext \ # Cover qmldom \ # Cover qmlecmascript \ # Cover qmlerror \ # Cover qmlfontloader \ # Cover + qmlgraphicsitem \ # Cover qmlgraphicsborderimage \ # Cover qmlgraphicsparticles \ # Cover qmlgraphicstext \ # Cover + qmlgraphicstextedit \ # Cover + qmlgraphicstextinput \ # Cover + qmlgraphicswebview \ # Cover qmlinfo \ # Cover qmllanguage \ # Cover qmllist \ # Cover diff --git a/tests/auto/declarative/layouts/data/grid-animated.qml b/tests/auto/declarative/layouts/data/grid-animated.qml index 9edccaf..6b128ce 100644 --- a/tests/auto/declarative/layouts/data/grid-animated.qml +++ b/tests/auto/declarative/layouts/data/grid-animated.qml @@ -7,17 +7,17 @@ Item { columns: 3 add: Transition { NumberAnimation { - properties: "x,y"; from: -100 + matchProperties: "x,y"; from: -100 } } remove: Transition { NumberAnimation { - properties: "x,y"; to: -100 + matchProperties: "x,y"; to: -100 } } move: Transition { NumberAnimation { - properties: "x,y"; + matchProperties: "x,y"; } } Rectangle { diff --git a/tests/auto/declarative/layouts/data/horizontal-animated.qml b/tests/auto/declarative/layouts/data/horizontal-animated.qml index f757d18..c29d6df 100644 --- a/tests/auto/declarative/layouts/data/horizontal-animated.qml +++ b/tests/auto/declarative/layouts/data/horizontal-animated.qml @@ -6,17 +6,17 @@ Item { Row { add: Transition { NumberAnimation { - properties: "x"; from: -100 + matchProperties: "x"; from: -100 } } remove: Transition { NumberAnimation { - properties: "x"; to: -100 + matchProperties: "x"; to: -100 } } move: Transition { NumberAnimation { - properties: "x"; + matchProperties: "x"; } } Rectangle { diff --git a/tests/auto/declarative/layouts/data/vertical-animated.qml b/tests/auto/declarative/layouts/data/vertical-animated.qml index f52a78a..fcbc5f7 100644 --- a/tests/auto/declarative/layouts/data/vertical-animated.qml +++ b/tests/auto/declarative/layouts/data/vertical-animated.qml @@ -6,17 +6,17 @@ Item { Column { add: Transition { NumberAnimation { - properties: "y"; from: -100 + matchProperties: "y"; from: -100 } } remove: Transition { NumberAnimation { - properties: "y"; to: -100 + matchProperties: "y"; to: -100 } } move: Transition { NumberAnimation { - properties: "y"; + matchProperties: "y"; } } Rectangle { diff --git a/tests/auto/declarative/parserstress/parserstress.pro b/tests/auto/declarative/parserstress/parserstress.pro new file mode 100644 index 0000000..48f147a --- /dev/null +++ b/tests/auto/declarative/parserstress/parserstress.pro @@ -0,0 +1,7 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +macx:CONFIG -= app_bundle + +SOURCES += tst_parserstress.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/parserstress/tst_parserstress.cpp b/tests/auto/declarative/parserstress/tst_parserstress.cpp new file mode 100644 index 0000000..dd8f347 --- /dev/null +++ b/tests/auto/declarative/parserstress/tst_parserstress.cpp @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2009 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$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <qtest.h> +#include <QmlEngine> +#include <QmlComponent> +#include <QDebug> +#include <QDir> +#include <QFile> + +class tst_parserstress : public QObject +{ + Q_OBJECT +public: + tst_parserstress() {} + +private slots: + void ecmascript_data(); + void ecmascript(); + +private: + static QStringList findJSFiles(const QDir &); + QmlEngine engine; +}; + +QStringList tst_parserstress::findJSFiles(const QDir &d) +{ + QStringList rv; + + QStringList files = d.entryList(QStringList() << QLatin1String("*.js"), + QDir::Files); + foreach (const QString &file, files) { + if (file == "browser.js") + continue; + rv << d.absoluteFilePath(file); + } + + QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot | + QDir::NoSymLinks); + foreach (const QString &dir, dirs) { + QDir sub = d; + sub.cd(dir); + rv << findJSFiles(sub); + } + + return rv; +} + +void tst_parserstress::ecmascript_data() +{ + QDir dir(SRCDIR); + dir.cdUp(); + dir.cdUp(); + dir.cd("qscriptjstestsuite"); + dir.cd("tests"); + + QStringList files = findJSFiles(dir); + + QTest::addColumn<QString>("file"); + foreach (const QString &file, files) { + QTest::newRow(qPrintable(file)) << file; + } +} + +void tst_parserstress::ecmascript() +{ + QFETCH(QString, file); + + QFile f(file); + QVERIFY(f.open(QIODevice::ReadOnly)); + + QByteArray data = f.readAll(); + + QVERIFY(!data.isEmpty()); + + QString dataStr = QString::fromUtf8(data); + + QString qml = "import Qt 4.6\n"; + qml+= "\n"; + qml+= "Object {\n"; + qml+= " property int test\n"; + qml+= " test: {\n"; + qml+= dataStr + "\n"; + qml+= " return 1;\n"; + qml+= " }\n"; + qml+= " Script {\n"; + qml+= " function stress() {\n"; + qml+= dataStr; + qml+= " }\n"; + qml+= " }\n"; + qml+= "}\n"; + + QByteArray qmlData = qml.toUtf8(); + + QmlComponent component(&engine, qmlData, + QUrl::fromLocalFile(SRCDIR + QString("/dummy.qml"))); + QVERIFY(!component.isError()); +} + + +QTEST_MAIN(tst_parserstress) + +#include "tst_parserstress.moc" diff --git a/tests/auto/declarative/qmlconnection/data/test-connection.qml b/tests/auto/declarative/qmlconnection/data/test-connection.qml new file mode 100644 index 0000000..9534621 --- /dev/null +++ b/tests/auto/declarative/qmlconnection/data/test-connection.qml @@ -0,0 +1,10 @@ +import Qt 4.6 + +Item { + id: screen; width: 50 + + property bool tested: false + signal testMe + + Connection { sender: screen; signal: "widthChanged()"; script: screen.tested = true } +} diff --git a/tests/auto/declarative/qfxtextedit/qfxtextedit.pro b/tests/auto/declarative/qmlconnection/qmlconnection.pro index b5e0464..3d46fa6 100644 --- a/tests/auto/declarative/qfxtextedit/qfxtextedit.pro +++ b/tests/auto/declarative/qmlconnection/qmlconnection.pro @@ -2,7 +2,7 @@ load(qttest_p4) contains(QT_CONFIG,declarative): QT += declarative gui macx:CONFIG -= app_bundle -SOURCES += tst_qfxtextedit.cpp +SOURCES += tst_qmlconnection.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qmlconnection/tst_qmlconnection.cpp b/tests/auto/declarative/qmlconnection/tst_qmlconnection.cpp new file mode 100644 index 0000000..c6d2cc4 --- /dev/null +++ b/tests/auto/declarative/qmlconnection/tst_qmlconnection.cpp @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2009 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$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include <QtDeclarative/qmlengine.h> +#include <QtDeclarative/qmlcomponent.h> +#include <private/qmlconnection_p.h> +#include <private/qmlgraphicsitem_p.h> +#include "../../../shared/util.h" + +class tst_qmlconnection : public QObject + +{ + Q_OBJECT +public: + tst_qmlconnection(); + +private slots: + void connection(); + +private: + QmlEngine engine; +}; + +tst_qmlconnection::tst_qmlconnection() +{ +} + +void tst_qmlconnection::connection() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/test-connection.qml")); + QmlGraphicsItem *item = qobject_cast<QmlGraphicsItem*>(c.create()); + + QVERIFY(item != 0); + + QCOMPARE(item->property("tested").toBool(), false); + QCOMPARE(item->width(), 50.); + emit item->setWidth(100.); + QCOMPARE(item->width(), 100.); + QCOMPARE(item->property("tested").toBool(), true); + + delete item; +} + +QTEST_MAIN(tst_qmlconnection) + +#include "tst_qmlconnection.moc" diff --git a/tests/auto/declarative/qmlgraphicsitem/data/keynavigation.qml b/tests/auto/declarative/qmlgraphicsitem/data/keynavigation.qml new file mode 100644 index 0000000..9281a17 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsitem/data/keynavigation.qml @@ -0,0 +1,39 @@ +import Qt 4.6 + +Grid { + columns: 2 + width: 100; height: 100 + Rectangle { + id: item1 + objectName: "item1" + focus: true + width: 50; height: 50 + color: focus ? "red" : "lightgray" + KeyNavigation.right: item2 + KeyNavigation.down: item3 + } + Rectangle { + id: item2 + objectName: "item2" + width: 50; height: 50 + color: focus ? "red" : "lightgray" + KeyNavigation.left: item1 + KeyNavigation.down: item4 + } + Rectangle { + id: item3 + objectName: "item3" + width: 50; height: 50 + color: focus ? "red" : "lightgray" + KeyNavigation.right: item4 + KeyNavigation.up: item1 + } + Rectangle { + id: item4 + objectName: "item4" + width: 50; height: 50 + color: focus ? "red" : "lightgray" + KeyNavigation.left: item3 + KeyNavigation.up: item2 + } +} diff --git a/tests/auto/declarative/qmlgraphicsitem/data/keys.qml b/tests/auto/declarative/qmlgraphicsitem/data/keys.qml new file mode 100644 index 0000000..7c16559 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsitem/data/keys.qml @@ -0,0 +1,15 @@ +import Qt 4.6 + +Item { + focus: true + Keys.onPressed: keysTestObject.keyPress(event.key, event.text, event.modifiers) + Keys.onReleased: { keysTestObject.keyRelease(event.key, event.text, event.modifiers); event.accepted = true; } + Keys.onReturnPressed: keysTestObject.keyPress(event.key, "Return", event.modifiers) + Keys.forwardTo: [ item2 ] + + Item { + id: item2 + Keys.onPressed: keysTestObject.forwardedKey(event.key) + Keys.onReleased: keysTestObject.forwardedKey(event.key) + } +} diff --git a/tests/auto/declarative/qmlgraphicsitem/qmlgraphicsitem.pro b/tests/auto/declarative/qmlgraphicsitem/qmlgraphicsitem.pro new file mode 100644 index 0000000..ddabf9a --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsitem/qmlgraphicsitem.pro @@ -0,0 +1,7 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative gui +macx:CONFIG -= app_bundle + +SOURCES += tst_qmlgraphicsitem.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp b/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp new file mode 100644 index 0000000..b4b3eaf --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp @@ -0,0 +1,240 @@ +/**************************************************************************** +** +** Copyright (C) 2009 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$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include <QtDeclarative/qmlengine.h> +#include <QtDeclarative/qmlcomponent.h> +#include <QtDeclarative/qmlcontext.h> +#include <QtDeclarative/qmlview.h> +#include <qmlgraphicsitem.h> + +class tst_QmlGraphicsItem : public QObject + +{ + Q_OBJECT +public: + tst_QmlGraphicsItem(); + +private slots: + void keys(); + void keyNavigation(); + +private: + template<typename T> + T *findItem(QmlGraphicsItem *parent, const QString &objectName); +}; + +class KeysTestObject : public QObject +{ + Q_OBJECT +public: + KeysTestObject() : mKey(0), mModifiers(0), mForwardedKey(0) {} + + void reset() { + mKey = 0; + mText = QString(); + mModifiers = 0; + mForwardedKey = 0; + } + +public slots: + void keyPress(int key, QString text, int modifiers) { + mKey = key; + mText = text; + mModifiers = modifiers; + } + void keyRelease(int key, QString text, int modifiers) { + mKey = key; + mText = text; + mModifiers = modifiers; + } + void forwardedKey(int key) { + mForwardedKey = key; + } + +public: + int mKey; + QString mText; + int mModifiers; + int mForwardedKey; + +private: +}; + + +tst_QmlGraphicsItem::tst_QmlGraphicsItem() +{ +} + +void tst_QmlGraphicsItem::keys() +{ + QmlView *canvas = new QmlView(0); + canvas->setFixedSize(240,320); + + canvas->setUrl(QUrl("file://" SRCDIR "/data/keys.qml")); + + KeysTestObject *testObject = new KeysTestObject; + canvas->rootContext()->setContextProperty("keysTestObject", testObject); + + canvas->execute(); + canvas->show(); + qApp->processEvents(); + + QEvent wa(QEvent::WindowActivate); + QApplication::sendEvent(canvas, &wa); + QFocusEvent fe(QEvent::FocusIn); + QApplication::sendEvent(canvas, &fe); + + QKeyEvent key(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier, "A", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, int(Qt::Key_A)); + QCOMPARE(testObject->mForwardedKey, int(Qt::Key_A)); + QCOMPARE(testObject->mText, QLatin1String("A")); + QVERIFY(testObject->mModifiers == Qt::NoModifier); + QVERIFY(!key.isAccepted()); + + testObject->reset(); + + key = QKeyEvent(QEvent::KeyRelease, Qt::Key_A, Qt::ShiftModifier, "A", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, int(Qt::Key_A)); + QCOMPARE(testObject->mForwardedKey, int(Qt::Key_A)); + QCOMPARE(testObject->mText, QLatin1String("A")); + QVERIFY(testObject->mModifiers == Qt::ShiftModifier); + QVERIFY(key.isAccepted()); + + testObject->reset(); + + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, int(Qt::Key_Return)); + QCOMPARE(testObject->mForwardedKey, int(Qt::Key_Return)); + QCOMPARE(testObject->mText, QLatin1String("Return")); + QVERIFY(testObject->mModifiers == Qt::NoModifier); + QVERIFY(key.isAccepted()); + + delete canvas; + delete testObject; +} + +void tst_QmlGraphicsItem::keyNavigation() +{ + QmlView *canvas = new QmlView(0); + canvas->setFixedSize(240,320); + + canvas->setUrl(QUrl("file://" SRCDIR "/data/keynavigation.qml")); + canvas->execute(); + canvas->show(); + qApp->processEvents(); + + QEvent wa(QEvent::WindowActivate); + QApplication::sendEvent(canvas, &wa); + QFocusEvent fe(QEvent::FocusIn); + QApplication::sendEvent(canvas, &fe); + + QmlGraphicsItem *item = findItem<QmlGraphicsItem>(canvas->root(), "item1"); + QVERIFY(item); + QVERIFY(item->hasFocus()); + + // right + QKeyEvent key(QEvent::KeyPress, Qt::Key_Right, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + + item = findItem<QmlGraphicsItem>(canvas->root(), "item2"); + QVERIFY(item); + QVERIFY(item->hasFocus()); + + // down + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + + item = findItem<QmlGraphicsItem>(canvas->root(), "item4"); + QVERIFY(item); + QVERIFY(item->hasFocus()); + + // left + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + + item = findItem<QmlGraphicsItem>(canvas->root(), "item3"); + QVERIFY(item); + QVERIFY(item->hasFocus()); + + // up + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + + item = findItem<QmlGraphicsItem>(canvas->root(), "item1"); + QVERIFY(item); + QVERIFY(item->hasFocus()); +} + +template<typename T> +T *tst_QmlGraphicsItem::findItem(QmlGraphicsItem *parent, const QString &objectName) +{ + if (!parent) + return 0; + + const QMetaObject &mo = T::staticMetaObject; + //qDebug() << parent->QGraphicsObject::children().count() << "children"; + for (int i = 0; i < parent->QGraphicsObject::children().count(); ++i) { + QmlGraphicsItem *item = qobject_cast<QmlGraphicsItem*>(parent->QGraphicsObject::children().at(i)); + if(!item) + continue; + //qDebug() << "try" << item; + if (mo.cast(item) && (objectName.isEmpty() || item->objectName() == objectName)) + return static_cast<T*>(item); + item = findItem<T>(item, objectName); + if (item) + return static_cast<T*>(item); + } + + return 0; +} + + + +QTEST_MAIN(tst_QmlGraphicsItem) + +#include "tst_qmlgraphicsitem.moc" diff --git a/tests/auto/declarative/listview/data/listview-enforcerange.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview-enforcerange.qml index 46fddae..46fddae 100644 --- a/tests/auto/declarative/listview/data/listview-enforcerange.qml +++ b/tests/auto/declarative/qmlgraphicslistview/data/listview-enforcerange.qml diff --git a/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml new file mode 100644 index 0000000..5b1fee6 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml @@ -0,0 +1,49 @@ +import Qt 4.6 + +Rectangle { + width: 240 + height: 320 + color: "#ffffff" + resources: [ + Component { + id: myDelegate + Rectangle { + id: wrapper + objectName: "wrapper" + height: 20 + width: 240 + Text { + text: index + } + Text { + x: 30 + id: textName + objectName: "textName" + text: name + } + Text { + x: 120 + id: textNumber + objectName: "textNumber" + text: number + } + Text { + x: 200 + text: wrapper.y + } + color: ListView.isCurrentItem ? "lightsteelblue" : "white" + } + } + ] + ListView { + id: list + objectName: "list" + focus: true + currentIndex: 3 + width: 240 + height: 320 + model: testModel + delegate: myDelegate + highlightMoveSpeed: 1000 + } +} diff --git a/tests/auto/declarative/listview/data/listview-sections.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview-sections.qml index 56700be..2edc0bd 100644 --- a/tests/auto/declarative/listview/data/listview-sections.qml +++ b/tests/auto/declarative/qmlgraphicslistview/data/listview-sections.qml @@ -54,6 +54,6 @@ Rectangle { height: 320 model: testModel delegate: myDelegate - sectionExpression: "Math.floor(index/5)" + sectionExpression: "Math.floor(number/5)" } } diff --git a/tests/auto/declarative/listview/data/listview.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml index b7b838b..93a3ae3 100644 --- a/tests/auto/declarative/listview/data/listview.qml +++ b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml @@ -38,9 +38,11 @@ Rectangle { ListView { id: list objectName: "list" + focus: true width: 240 height: 320 model: testModel delegate: myDelegate + highlightMoveSpeed: 1000 } } diff --git a/tests/auto/declarative/listview/listview.pro b/tests/auto/declarative/qmlgraphicslistview/qmlgraphicslistview.pro index 23b0706..f00de39 100644 --- a/tests/auto/declarative/listview/listview.pro +++ b/tests/auto/declarative/qmlgraphicslistview/qmlgraphicslistview.pro @@ -2,7 +2,7 @@ load(qttest_p4) contains(QT_CONFIG,declarative): QT += declarative macx:CONFIG -= app_bundle -SOURCES += tst_listview.cpp +SOURCES += tst_qmlgraphicslistview.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/listview/tst_listview.cpp b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp index 5575ace..de26635 100644 --- a/tests/auto/declarative/listview/tst_listview.cpp +++ b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp @@ -69,6 +69,7 @@ private slots: void qListModelInterface_moved(); void qAbstractItemModel_moved(); + void currentIndex(); void enforceRange(); void spacing(); void sections(); @@ -252,6 +253,9 @@ void tst_QmlGraphicsListView::items() QCOMPARE(listview->count(), model.count()); QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + // current item should be first item + QCOMPARE(listview->currentItem(), findItem<QmlGraphicsItem>(viewport, "wrapper", 0)); + for (int i = 0; i < model.count(); ++i) { QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", i); QVERIFY(name != 0); @@ -261,11 +265,6 @@ void tst_QmlGraphicsListView::items() QCOMPARE(number->text(), model.number(i)); } - listview->incrementCurrentIndex(); - QCOMPARE(listview->currentIndex(), 1); - listview->decrementCurrentIndex(); - QCOMPARE(listview->currentIndex(), 0); - // set an empty model and confirm that items are destroyed T model2; ctxt->setContextProperty("testModel", &model2); @@ -334,7 +333,7 @@ void tst_QmlGraphicsListView::inserted() model.insertItem(1, "Will", "9876"); // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item @@ -354,7 +353,7 @@ void tst_QmlGraphicsListView::inserted() model.insertItem(0, "Foo", "1111"); // zero index, and current item // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item @@ -375,14 +374,14 @@ void tst_QmlGraphicsListView::inserted() for (int i = model.count(); i < 30; ++i) model.insertItem(i, "Hello", QString::number(i)); - QTest::qWait(1000); + QTest::qWait(500); listview->setViewportY(80); - QTest::qWait(1000); + QTest::qWait(500); // Insert item outside visible area model.insertItem(1, "Hello", "1324"); - QTest::qWait(1000); + QTest::qWait(500); QVERIFY(listview->viewportY() == 80); @@ -420,7 +419,7 @@ void tst_QmlGraphicsListView::removed() model.removeItem(1); // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", 1); QVERIFY(name != 0); @@ -442,7 +441,7 @@ void tst_QmlGraphicsListView::removed() model.removeItem(0); // post: top item starts at 20 // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); name = findItem<QmlGraphicsText>(viewport, "textName", 0); QVERIFY(name != 0); @@ -463,7 +462,7 @@ void tst_QmlGraphicsListView::removed() // Remove items not visible model.removeItem(18); // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); // Confirm items positioned correctly itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count(); @@ -480,7 +479,7 @@ void tst_QmlGraphicsListView::removed() model.removeItem(1); // post: top item will be at 40 // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); // Confirm items positioned correctly for (int i = 2; i < 18; ++i) { @@ -492,7 +491,7 @@ void tst_QmlGraphicsListView::removed() listview->setViewportY(40); // That's the top now // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); // Confirm items positioned correctly itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count(); @@ -530,7 +529,7 @@ void tst_QmlGraphicsListView::moved() model.moveItem(1, 4); // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", 1); QVERIFY(name != 0); @@ -561,7 +560,7 @@ void tst_QmlGraphicsListView::moved() model.moveItem(1, 18); // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); // Confirm items positioned correctly and indexes correct for (int i = 3; i < model.count() && i < itemCount; ++i) { @@ -581,7 +580,7 @@ void tst_QmlGraphicsListView::moved() model.moveItem(20, 4); // let transitions settle. - QTest::qWait(1000); + QTest::qWait(500); // Confirm items positioned correctly and indexes correct for (int i = 3; i < model.count() && i < itemCount; ++i) { @@ -617,6 +616,9 @@ void tst_QmlGraphicsListView::enforceRange() QmlGraphicsListView *listview = findItem<QmlGraphicsListView>(canvas->root(), "list"); QVERIFY(listview != 0); + QCOMPARE(listview->preferredHighlightBegin(), 100.0); + QCOMPARE(listview->preferredHighlightEnd(), 100.0); + QmlGraphicsItem *viewport = listview->viewport(); QVERIFY(viewport != 0); @@ -634,7 +636,7 @@ void tst_QmlGraphicsListView::enforceRange() // Check currentIndex is updated when viewport moves listview->setViewportY(20); - QTest::qWait(1000); + QTest::qWait(500); QCOMPARE(listview->currentIndex(), 6); @@ -702,7 +704,7 @@ void tst_QmlGraphicsListView::sections() TestModel model; for (int i = 0; i < 30; i++) - model.addItem("Item" + QString::number(i), ""); + model.addItem("Item" + QString::number(i), QString::number(i)); QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); @@ -724,6 +726,36 @@ void tst_QmlGraphicsListView::sections() QCOMPARE(item->y(), qreal(i*20 + ((i+4)/5) * 20)); } + // Remove section boundary + model.removeItem(5); + + // New section header created + QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", 5); + QVERIFY(item); + QCOMPARE(item->height(), 40.0); + + model.insertItem(3, "New Item", "3"); + + // Section header moved + item = findItem<QmlGraphicsItem>(viewport, "wrapper", 5); + QVERIFY(item); + QCOMPARE(item->height(), 20.0); + + item = findItem<QmlGraphicsItem>(viewport, "wrapper", 6); + QVERIFY(item); + QCOMPARE(item->height(), 40.0); + + // insert item which will become a section header + model.insertItem(6, "Replace header", "5"); + + item = findItem<QmlGraphicsItem>(viewport, "wrapper", 6); + QVERIFY(item); + QCOMPARE(item->height(), 40.0); + + item = findItem<QmlGraphicsItem>(viewport, "wrapper", 7); + QVERIFY(item); + QCOMPARE(item->height(), 20.0); + QVERIFY(listview->currentSection() == "0"); listview->setViewportY(140); @@ -732,6 +764,86 @@ void tst_QmlGraphicsListView::sections() delete canvas; } +void tst_QmlGraphicsListView::currentIndex() +{ + TestModel model; + for (int i = 0; i < 30; i++) + model.addItem("Item" + QString::number(i), QString::number(i)); + + QmlView *canvas = new QmlView(0); + canvas->setFixedSize(240,320); + + QmlContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + + QString filename(SRCDIR "/data/listview-initCurrent.qml"); + QFile file(filename); + file.open(QFile::ReadOnly); + QString qml = file.readAll(); + canvas->setQml(qml, filename); + + canvas->execute(); + qApp->processEvents(); + + QmlGraphicsListView *listview = findItem<QmlGraphicsListView>(canvas->root(), "list"); + QVERIFY(listview != 0); + + QmlGraphicsItem *viewport = listview->viewport(); + QVERIFY(viewport != 0); + + // current item should be third item + QCOMPARE(listview->currentIndex(), 3); + QCOMPARE(listview->currentItem(), findItem<QmlGraphicsItem>(viewport, "wrapper", 3)); + + // no wrap + listview->setCurrentIndex(0); + QCOMPARE(listview->currentIndex(), 0); + + listview->incrementCurrentIndex(); + QCOMPARE(listview->currentIndex(), 1); + listview->decrementCurrentIndex(); + QCOMPARE(listview->currentIndex(), 0); + + listview->decrementCurrentIndex(); + QCOMPARE(listview->currentIndex(), 0); + + // with wrap + listview->setWrapEnabled(true); + + listview->decrementCurrentIndex(); + QCOMPARE(listview->currentIndex(), model.count()-1); + + QTest::qWait(1000); + QCOMPARE(listview->viewportY(), 279.0); + + listview->incrementCurrentIndex(); + QCOMPARE(listview->currentIndex(), 0); + + QTest::qWait(1000); + QCOMPARE(listview->viewportY(), 0.0); + + // Test keys + canvas->show(); + qApp->processEvents(); + + QEvent wa(QEvent::WindowActivate); + QApplication::sendEvent(canvas, &wa); + QFocusEvent fe(QEvent::FocusIn); + QApplication::sendEvent(canvas, &fe); + + QKeyEvent key(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + QCOMPARE(listview->currentIndex(), 1); + + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + QCOMPARE(listview->currentIndex(), 0); + + delete canvas; +} + void tst_QmlGraphicsListView::qListModelInterface_items() { items<TestModel>(); @@ -850,4 +962,4 @@ QList<T*> tst_QmlGraphicsListView::findItems(QmlGraphicsItem *parent, const QStr QTEST_MAIN(tst_QmlGraphicsListView) -#include "tst_listview.moc" +#include "tst_qmlgraphicslistview.moc" diff --git a/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp b/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp index ed68eaf..c8d181b 100644 --- a/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp +++ b/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp @@ -96,6 +96,9 @@ void tst_QmlGraphicsParticles::properties() particles->setEmissionRate(12); QCOMPARE(particles->emissionRate(), 12); + + particles->setEmitting(false); + QCOMPARE(particles->emitting(), false); } void tst_QmlGraphicsParticles::runs() diff --git a/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp b/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp index 2a3cdde..1e10873 100644 --- a/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp +++ b/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp @@ -45,6 +45,7 @@ #include <private/qmlgraphicstext_p.h> #include <private/qmlvaluetype_p.h> #include <QFontMetrics> +#include <QGraphicsSceneMouseEvent> #include <math.h> class tst_qmlgraphicstext : public QObject @@ -78,6 +79,8 @@ private slots: void letterSpacing(); void wordSpacing(); + void clickLink(); + private: QStringList standard; QStringList richText; @@ -258,6 +261,10 @@ void tst_qmlgraphicstext::wrap() QVERIFY(textObject != 0); QCOMPARE(textObject->width(), 30.); QVERIFY(textObject->height() > textHeight); + + int oldHeight = textObject->height(); + textObject->setWidth(100); + QVERIFY(textObject->height() < oldHeight); } for (int i = 0; i < richText.size(); i++) @@ -730,6 +737,54 @@ void tst_qmlgraphicstext::wordSpacing() } } +class EventSender : public QGraphicsItem +{ +public: + void sendEvent(QEvent *event) { sceneEvent(event); } +}; + +class LinkTest : public QObject +{ + Q_OBJECT +public: + LinkTest() {} + + QString link; + +public slots: + void linkClicked(QString l) { link = l; } +}; + +void tst_qmlgraphicstext::clickLink() +{ + { + QString componentStr = "import Qt 4.6\nText { text: \"<a href=\\\"http://qt.nokia.com\\\">Hello world!</a>\" }"; + QmlComponent textComponent(&engine, componentStr.toLatin1(), QUrl("file://")); + QmlGraphicsText *textObject = qobject_cast<QmlGraphicsText*>(textComponent.create()); + + QVERIFY(textObject != 0); + + LinkTest test; + QObject::connect(textObject, SIGNAL(linkActivated(QString)), &test, SLOT(linkClicked(QString))); + + { + QGraphicsSceneMouseEvent me(QEvent::GraphicsSceneMousePress); + me.setPos(QPointF(textObject->x()/2, textObject->y()/2)); + me.setButton(Qt::LeftButton); + static_cast<EventSender*>(static_cast<QGraphicsItem*>(textObject))->sendEvent(&me); + } + + { + QGraphicsSceneMouseEvent me(QEvent::GraphicsSceneMouseRelease); + me.setPos(QPointF(textObject->x()/2, textObject->y()/2)); + me.setButton(Qt::LeftButton); + static_cast<EventSender*>(static_cast<QGraphicsItem*>(textObject))->sendEvent(&me); + } + + QCOMPARE(test.link, QLatin1String("http://qt.nokia.com")); + } +} + QTEST_MAIN(tst_qmlgraphicstext) #include "tst_qmlgraphicstext.moc" diff --git a/tests/auto/declarative/qfxtextedit/data/cursorTest.qml b/tests/auto/declarative/qmlgraphicstextedit/data/cursorTest.qml index e5df8f1..e5df8f1 100644 --- a/tests/auto/declarative/qfxtextedit/data/cursorTest.qml +++ b/tests/auto/declarative/qmlgraphicstextedit/data/cursorTest.qml diff --git a/tests/auto/declarative/qfxtextedit/data/navigation.qml b/tests/auto/declarative/qmlgraphicstextedit/data/navigation.qml index 5b8613f..5b8613f 100644 --- a/tests/auto/declarative/qfxtextedit/data/navigation.qml +++ b/tests/auto/declarative/qmlgraphicstextedit/data/navigation.qml diff --git a/tests/auto/declarative/qfxtextinput/qfxtextinput.pro b/tests/auto/declarative/qmlgraphicstextedit/qmlgraphicstextedit.pro index fe2e3e3..9e6a71a 100644 --- a/tests/auto/declarative/qfxtextinput/qfxtextinput.pro +++ b/tests/auto/declarative/qmlgraphicstextedit/qmlgraphicstextedit.pro @@ -2,7 +2,7 @@ load(qttest_p4) contains(QT_CONFIG,declarative): QT += declarative gui macx:CONFIG -= app_bundle -SOURCES += tst_qfxtextinput.cpp +SOURCES += tst_qmlgraphicstextedit.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp b/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp index 19d5998..4287f01 100644 --- a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp +++ b/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp @@ -51,12 +51,12 @@ #include <QFontMetrics> #include <QmlView> -class tst_qfxtextedit : public QObject +class tst_qmlgraphicstextedit : public QObject { Q_OBJECT public: - tst_qfxtextedit(); + tst_qmlgraphicstextedit(); private slots: void text(); @@ -91,7 +91,7 @@ private: QmlEngine engine; }; -tst_qfxtextedit::tst_qfxtextedit() +tst_qmlgraphicstextedit::tst_qmlgraphicstextedit() { standard << "the quick brown fox jumped over the lazy dog" << "the quick brown fox\n jumped over the lazy dog"; @@ -134,7 +134,7 @@ tst_qfxtextedit::tst_qfxtextedit() // } -void tst_qfxtextedit::text() +void tst_qmlgraphicstextedit::text() { { QmlComponent texteditComponent(&engine, "import Qt 4.6\nTextEdit { text: \"\" }", QUrl()); @@ -170,7 +170,7 @@ void tst_qfxtextedit::text() } } -void tst_qfxtextedit::width() +void tst_qmlgraphicstextedit::width() { // uses Font metrics to find the width for standard and document to find the width for rich { @@ -213,7 +213,7 @@ void tst_qfxtextedit::width() } } -void tst_qfxtextedit::wrap() +void tst_qmlgraphicstextedit::wrap() { // for specified width and wrap set true { @@ -247,7 +247,7 @@ void tst_qfxtextedit::wrap() } //the alignment tests may be trivial o.oa -void tst_qfxtextedit::hAlign() +void tst_qmlgraphicstextedit::hAlign() { //test one align each, and then test if two align fails. @@ -279,7 +279,7 @@ void tst_qfxtextedit::hAlign() } -void tst_qfxtextedit::vAlign() +void tst_qmlgraphicstextedit::vAlign() { //test one align each, and then test if two align fails. @@ -311,7 +311,7 @@ void tst_qfxtextedit::vAlign() } -void tst_qfxtextedit::font() +void tst_qmlgraphicstextedit::font() { //test size, then bold, then italic, then family { @@ -366,7 +366,7 @@ void tst_qfxtextedit::font() } } -void tst_qfxtextedit::color() +void tst_qmlgraphicstextedit::color() { //test style for (int i = 0; i < colorStrings.size(); i++) @@ -393,7 +393,7 @@ void tst_qfxtextedit::color() } } -void tst_qfxtextedit::selection() +void tst_qmlgraphicstextedit::selection() { QString testStr = standard[0];//TODO: What should happen for multiline/rich text? QString componentStr = "import Qt 4.6\nTextEdit { text: \""+ testStr +"\"; }"; @@ -473,7 +473,7 @@ void tst_qfxtextedit::selection() QVERIFY(textEditObject->selectedText().size() == 10); } -void tst_qfxtextedit::cursorDelegate() +void tst_qmlgraphicstextedit::cursorDelegate() { QmlView* view = createView(SRCDIR "/data/cursorTest.qml"); view->execute(); @@ -504,7 +504,7 @@ void tst_qfxtextedit::cursorDelegate() TextEdit element should only handle left/right keys until the cursor reaches the extent of the text, then they should ignore the keys. */ -void tst_qfxtextedit::navigation() +void tst_qmlgraphicstextedit::navigation() { QmlView *canvas = createView(SRCDIR "/data/navigation.qml"); canvas->execute(); @@ -528,7 +528,7 @@ void tst_qfxtextedit::navigation() QVERIFY(input->hasFocus() == true); } -void tst_qfxtextedit::simulateKey(QmlView *view, int key) +void tst_qmlgraphicstextedit::simulateKey(QmlView *view, int key) { QKeyEvent press(QKeyEvent::KeyPress, key, 0); QKeyEvent release(QKeyEvent::KeyRelease, key, 0); @@ -537,7 +537,7 @@ void tst_qfxtextedit::simulateKey(QmlView *view, int key) QApplication::sendEvent(view, &release); } -QmlView *tst_qfxtextedit::createView(const QString &filename) +QmlView *tst_qmlgraphicstextedit::createView(const QString &filename) { QmlView *canvas = new QmlView(0); @@ -550,6 +550,6 @@ QmlView *tst_qfxtextedit::createView(const QString &filename) } -QTEST_MAIN(tst_qfxtextedit) +QTEST_MAIN(tst_qmlgraphicstextedit) -#include "tst_qfxtextedit.moc" +#include "tst_qmlgraphicstextedit.moc" diff --git a/tests/auto/declarative/qfxtextinput/data/cursorTest.qml b/tests/auto/declarative/qmlgraphicstextinput/data/cursorTest.qml index ddc98cc..ddc98cc 100644 --- a/tests/auto/declarative/qfxtextinput/data/cursorTest.qml +++ b/tests/auto/declarative/qmlgraphicstextinput/data/cursorTest.qml diff --git a/tests/auto/declarative/qfxtextinput/data/navigation.qml b/tests/auto/declarative/qmlgraphicstextinput/data/navigation.qml index 282c52c..282c52c 100644 --- a/tests/auto/declarative/qfxtextinput/data/navigation.qml +++ b/tests/auto/declarative/qmlgraphicstextinput/data/navigation.qml diff --git a/tests/auto/declarative/qmlgraphicstextinput/qmlgraphicstextinput.pro b/tests/auto/declarative/qmlgraphicstextinput/qmlgraphicstextinput.pro new file mode 100644 index 0000000..fd75fec --- /dev/null +++ b/tests/auto/declarative/qmlgraphicstextinput/qmlgraphicstextinput.pro @@ -0,0 +1,8 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative gui +macx:CONFIG -= app_bundle + +SOURCES += tst_qmlgraphicstextinput.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp b/tests/auto/declarative/qmlgraphicstextinput/tst_qmlgraphicstextinput.cpp index 8eeb22d..8e9fa5e 100644 --- a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp +++ b/tests/auto/declarative/qmlgraphicstextinput/tst_qmlgraphicstextinput.cpp @@ -46,12 +46,12 @@ #include <private/qmlgraphicstextinput_p.h> #include <QDebug> -class tst_qfxtextinput : public QObject +class tst_qmlgraphicstextinput : public QObject { Q_OBJECT public: - tst_qfxtextinput(); + tst_qmlgraphicstextinput(); private slots: void text(); @@ -76,7 +76,7 @@ private: QStringList colorStrings; }; -tst_qfxtextinput::tst_qfxtextinput() +tst_qmlgraphicstextinput::tst_qmlgraphicstextinput() { standard << "the quick brown fox jumped over the lazy dog" << "It's supercalifragisiticexpialidocious!" @@ -96,7 +96,7 @@ tst_qfxtextinput::tst_qfxtextinput() << "#2AC05F"; } -void tst_qfxtextinput::text() +void tst_qmlgraphicstextinput::text() { { QmlComponent textinputComponent(&engine, "import Qt 4.6\nTextInput { text: \"\" }", QUrl()); @@ -118,7 +118,7 @@ void tst_qfxtextinput::text() } -void tst_qfxtextinput::width() +void tst_qmlgraphicstextinput::width() { // uses Font metrics to find the width for standard { @@ -144,7 +144,7 @@ void tst_qfxtextinput::width() } } -void tst_qfxtextinput::font() +void tst_qmlgraphicstextinput::font() { //test size, then bold, then italic, then family { @@ -199,7 +199,7 @@ void tst_qfxtextinput::font() } } -void tst_qfxtextinput::color() +void tst_qmlgraphicstextinput::color() { //test style for (int i = 0; i < colorStrings.size(); i++) @@ -226,7 +226,7 @@ void tst_qfxtextinput::color() } } -void tst_qfxtextinput::selection() +void tst_qmlgraphicstextinput::selection() { QString testStr = standard[0]; QString componentStr = "import Qt 4.6\nTextInput { text: \""+ testStr +"\"; }"; @@ -306,7 +306,7 @@ void tst_qfxtextinput::selection() QVERIFY(textinputObject->selectedText().size() == 10); } -void tst_qfxtextinput::maxLength() +void tst_qmlgraphicstextinput::maxLength() { QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }"; QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); @@ -321,7 +321,7 @@ void tst_qfxtextinput::maxLength() //TODO: Simulated keypress input adding 11 chars at a time } -void tst_qfxtextinput::masks() +void tst_qmlgraphicstextinput::masks() { QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }"; QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); @@ -331,7 +331,7 @@ void tst_qfxtextinput::masks() //TODO: Me } -void tst_qfxtextinput::validators() +void tst_qmlgraphicstextinput::validators() { QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }"; QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); @@ -345,7 +345,7 @@ void tst_qfxtextinput::validators() TextInput element should only handle left/right keys until the cursor reaches the extent of the text, then they should ignore the keys. */ -void tst_qfxtextinput::navigation() +void tst_qmlgraphicstextinput::navigation() { QmlView *canvas = createView(SRCDIR "/data/navigation.qml"); canvas->execute(); @@ -368,7 +368,7 @@ void tst_qfxtextinput::navigation() QVERIFY(input->hasFocus() == true); } -void tst_qfxtextinput::cursorDelegate() +void tst_qmlgraphicstextinput::cursorDelegate() { QmlView* view = createView(SRCDIR "/data/cursorTest.qml"); view->execute(); @@ -396,7 +396,7 @@ void tst_qfxtextinput::cursorDelegate() QVERIFY(!textInputObject->findChild<QmlGraphicsItem*>("cursorInstance")); } -void tst_qfxtextinput::simulateKey(QmlView *view, int key) +void tst_qmlgraphicstextinput::simulateKey(QmlView *view, int key) { QKeyEvent press(QKeyEvent::KeyPress, key, 0); QKeyEvent release(QKeyEvent::KeyRelease, key, 0); @@ -405,7 +405,7 @@ void tst_qfxtextinput::simulateKey(QmlView *view, int key) QApplication::sendEvent(view, &release); } -QmlView *tst_qfxtextinput::createView(const QString &filename) +QmlView *tst_qmlgraphicstextinput::createView(const QString &filename) { QmlView *canvas = new QmlView(0); @@ -417,6 +417,6 @@ QmlView *tst_qfxtextinput::createView(const QString &filename) return canvas; } -QTEST_MAIN(tst_qfxtextinput) +QTEST_MAIN(tst_qmlgraphicstextinput) -#include "tst_qfxtextinput.moc" +#include "tst_qmlgraphicstextinput.moc" diff --git a/tests/auto/declarative/qmllanguage/data/assignBasicTypes.qml b/tests/auto/declarative/qmllanguage/data/assignBasicTypes.qml index 50723a3..c86c96b 100644 --- a/tests/auto/declarative/qmllanguage/data/assignBasicTypes.qml +++ b/tests/auto/declarative/qmllanguage/data/assignBasicTypes.qml @@ -23,6 +23,7 @@ MyTypeObject { boolProperty: true variantProperty: "Hello World!" vectorProperty: "10,1,2.2" + urlProperty: "main.qml" objectProperty: MyTypeObject { intProperty: 8 } } diff --git a/tests/auto/declarative/qmllanguage/data/attachedProperties.qml b/tests/auto/declarative/qmllanguage/data/attachedProperties.qml index 8343754..fec96cc 100644 --- a/tests/auto/declarative/qmllanguage/data/attachedProperties.qml +++ b/tests/auto/declarative/qmllanguage/data/attachedProperties.qml @@ -1,5 +1,8 @@ import Test 1.0 +import Test 1.0 as Namespace import Qt 4.6 + Object { MyQmlObject.value: 10 + Namespace.MyQmlObject.value2: 13 } diff --git a/tests/auto/declarative/qmllanguage/data/fakeDotProperty.errors.txt b/tests/auto/declarative/qmllanguage/data/fakeDotProperty.errors.txt index e56ad3a..3074823 100644 --- a/tests/auto/declarative/qmllanguage/data/fakeDotProperty.errors.txt +++ b/tests/auto/declarative/qmllanguage/data/fakeDotProperty.errors.txt @@ -1 +1 @@ -3:5:Invalid property access +3:5:Invalid grouped property access diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.errors.txt new file mode 100644 index 0000000..68fe671 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.errors.txt @@ -0,0 +1 @@ +5:17:Cannot assign to non-existant property "foo" diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.qml new file mode 100644 index 0000000..e99c635 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.qml @@ -0,0 +1,7 @@ +import Test 1.0 +import Qt 4.6 + +Object { + MyQmlObject.foo: 10 +} + diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.errors.txt new file mode 100644 index 0000000..7f630f4 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.errors.txt @@ -0,0 +1 @@ +5:15:Non-existant attached object diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.qml new file mode 100644 index 0000000..8f987ce --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.qml @@ -0,0 +1,6 @@ +import Test 1.0 as Namespace +import Qt 4.6 + +Object { + Namespace.MadeUpClass.foo: 10 +} diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.errors.txt new file mode 100644 index 0000000..fee5050 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.errors.txt @@ -0,0 +1 @@ +5:15:Not an attached property name diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.qml new file mode 100644 index 0000000..18770fc --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.qml @@ -0,0 +1,7 @@ +import Test 1.0 as Namespace +import Qt 4.6 + +Object { + Namespace.madeUpClass.foo: 10 +} + diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.errors.txt new file mode 100644 index 0000000..9f06e07 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.errors.txt @@ -0,0 +1 @@ +5:27:Cannot assign to non-existant property "foo" diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.qml new file mode 100644 index 0000000..3c9ae5b --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.qml @@ -0,0 +1,6 @@ +import Test 1.0 as Namespace +import Qt 4.6 + +Object { + Namespace.MyQmlObject.foo: 10 +} diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.errors.txt new file mode 100644 index 0000000..05161c4 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.errors.txt @@ -0,0 +1 @@ +5:5:Invalid attached object assignment diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.qml new file mode 100644 index 0000000..e9405a4 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.qml @@ -0,0 +1,8 @@ +import Test 1.0 +import Qt 4.6 + +Object { + MyQmlObject: 10 +} + + diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.errors.txt new file mode 100644 index 0000000..a208bcf --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.errors.txt @@ -0,0 +1 @@ +5:15:Invalid attached object assignment diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.qml new file mode 100644 index 0000000..6fbf718 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.qml @@ -0,0 +1,7 @@ +import Test 1.0 as Namespace +import Qt 4.6 + +Object { + Namespace.MyQmlObject: 10 +} + diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.errors.txt new file mode 100644 index 0000000..05161c4 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.errors.txt @@ -0,0 +1 @@ +5:5:Invalid attached object assignment diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.qml new file mode 100644 index 0000000..1827a16 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.qml @@ -0,0 +1,7 @@ +import Test 1.0 +import Qt 4.6 + +Object { + MyQmlObject: Object {} +} + diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.errors.txt new file mode 100644 index 0000000..e232b23 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.errors.txt @@ -0,0 +1 @@ +5:5:Non-existant attached object diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.qml new file mode 100644 index 0000000..5c7f0ec --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.qml @@ -0,0 +1,7 @@ +import Test 1.0 +import Qt 4.6 + +Object { + Test.MyQmlObject: Object {} +} + diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.errors.txt new file mode 100644 index 0000000..e232b23 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.errors.txt @@ -0,0 +1 @@ +5:5:Non-existant attached object diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.qml new file mode 100644 index 0000000..841cc08 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.qml @@ -0,0 +1,6 @@ +import Test 1.0 +import Qt 4.6 + +Object { + MyTypeObject.foo: 10 +} diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.errors.txt new file mode 100644 index 0000000..7f630f4 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.errors.txt @@ -0,0 +1 @@ +5:15:Non-existant attached object diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.qml new file mode 100644 index 0000000..f1b4b96 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.qml @@ -0,0 +1,6 @@ +import Test 1.0 as Namespace +import Qt 4.6 + +Object { + Namespace.MyTypeObject.foo: 10 +} diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.errors.txt new file mode 100644 index 0000000..e232b23 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.errors.txt @@ -0,0 +1 @@ +5:5:Non-existant attached object diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.qml new file mode 100644 index 0000000..99c4a5c --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.qml @@ -0,0 +1,7 @@ +import Test 1.0 +import Qt 4.6 + +Object { + MadeUpClass.foo: 10 +} + diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.1.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.1.errors.txt index 7c00ce4..810fd31 100644 --- a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.1.errors.txt +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.1.errors.txt @@ -1 +1 @@ -5:5:Invalid property access +5:5:Invalid grouped property access diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.2.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.2.errors.txt index 7c00ce4..810fd31 100644 --- a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.2.errors.txt +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.2.errors.txt @@ -1 +1 @@ -5:5:Invalid property access +5:5:Invalid grouped property access diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.errors.txt new file mode 100644 index 0000000..f6d6f29 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.errors.txt @@ -0,0 +1 @@ +4:5:Invalid grouped property access diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.qml new file mode 100644 index 0000000..0bbfc4f --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.qml @@ -0,0 +1,5 @@ +import Test 1.0 + +MyQmlObject { + customType.x: 10 +} diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.errors.txt new file mode 100644 index 0000000..19934fa --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.errors.txt @@ -0,0 +1 @@ +4:5:Cannot assign to non-existant property "foo" diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.qml new file mode 100644 index 0000000..134fef9 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.qml @@ -0,0 +1,5 @@ +import Test 1.0 + +MyQmlObject { + foo.x: 10 +} diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.errors.txt new file mode 100644 index 0000000..2c8a970 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.errors.txt @@ -0,0 +1 @@ +4:18:Property assignment expected diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.qml new file mode 100644 index 0000000..55cefe6 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.qml @@ -0,0 +1,5 @@ +import Test 1.0 + +MyTypeObject { + rectProperty.x.foo: 100 +} diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.errors.txt new file mode 100644 index 0000000..8331725 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.errors.txt @@ -0,0 +1 @@ +5:18:Single property assignment expected diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.qml new file mode 100644 index 0000000..9ec33ab --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + rectProperty.x: 100 + rectProperty.x: 101 +} diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.errors.txt new file mode 100644 index 0000000..4a7e383 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.errors.txt @@ -0,0 +1 @@ +4:-1:Cannot set properties on nullGrouped as it is null diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.qml new file mode 100644 index 0000000..b77fb90 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.qml @@ -0,0 +1,5 @@ +import Test 1.0 + +MyTypeObject { + nullGrouped.script: print(1921) +} diff --git a/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.errors.txt b/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.errors.txt new file mode 100644 index 0000000..dfaa218 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.errors.txt @@ -0,0 +1 @@ +4:18:Cannot assign to non-existant property "foo" diff --git a/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.qml b/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.qml new file mode 100644 index 0000000..9a0fa6a --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.qml @@ -0,0 +1,5 @@ +import Test 1.0 + +MyTypeObject { + rectProperty.foo: 9 +} diff --git a/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.errors.txt b/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.errors.txt new file mode 100644 index 0000000..db7d9c0 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.errors.txt @@ -0,0 +1 @@ +4:18:Unexpected object assignment diff --git a/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.qml b/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.qml new file mode 100644 index 0000000..9924773 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + rectProperty.x: MyTypeObject {} +} + diff --git a/tests/auto/declarative/qmllanguage/data/wrongType.15.errors.txt b/tests/auto/declarative/qmllanguage/data/wrongType.15.errors.txt new file mode 100644 index 0000000..44768e3 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/wrongType.15.errors.txt @@ -0,0 +1 @@ +3:18:Invalid property assignment: url expected diff --git a/tests/auto/declarative/qmllanguage/data/wrongType.15.qml b/tests/auto/declarative/qmllanguage/data/wrongType.15.qml new file mode 100644 index 0000000..633a5ba --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/wrongType.15.qml @@ -0,0 +1,4 @@ +import Test 1.0 +MyTypeObject { + urlProperty: 12 +} diff --git a/tests/auto/declarative/qmllanguage/testtypes.h b/tests/auto/declarative/qmllanguage/testtypes.h index e654faa..b251f87 100644 --- a/tests/auto/declarative/qmllanguage/testtypes.h +++ b/tests/auto/declarative/qmllanguage/testtypes.h @@ -80,14 +80,19 @@ class MyAttachedObject : public QObject { Q_OBJECT Q_PROPERTY(int value READ value WRITE setValue) + Q_PROPERTY(int value2 READ value2 WRITE setValue2) public: - MyAttachedObject(QObject *parent) : QObject(parent), m_value(0) {} + MyAttachedObject(QObject *parent) : QObject(parent), m_value(0), m_value2(0) {} int value() const { return m_value; } void setValue(int v) { m_value = v; } + int value2() const { return m_value2; } + void setValue2(int v) { m_value2 = v; } + private: int m_value; + int m_value2; }; class MyQmlObject : public QObject, public MyInterface, public QmlParserStatus @@ -201,9 +206,11 @@ class MyTypeObject : public QObject Q_PROPERTY(bool boolProperty READ boolProperty WRITE setBoolProperty); Q_PROPERTY(QVariant variantProperty READ variantProperty WRITE setVariantProperty); Q_PROPERTY(QVector3D vectorProperty READ vectorProperty WRITE setVectorProperty); + Q_PROPERTY(QUrl urlProperty READ urlProperty WRITE setUrlProperty); Q_PROPERTY(QmlScriptString scriptProperty READ scriptProperty WRITE setScriptProperty); Q_PROPERTY(MyGroupedObject *grouped READ grouped CONSTANT); + Q_PROPERTY(MyGroupedObject *nullGrouped READ nullGrouped CONSTANT); public: MyTypeObject() @@ -413,6 +420,14 @@ public: vectorPropertyValue = v; } + QUrl urlPropertyValue; + QUrl urlProperty() const { + return urlPropertyValue; + } + void setUrlProperty(const QUrl &v) { + urlPropertyValue = v; + } + QmlScriptString scriptPropertyValue; QmlScriptString scriptProperty() const { return scriptPropertyValue; @@ -424,6 +439,8 @@ public: MyGroupedObject groupedValue; MyGroupedObject *grouped() { return &groupedValue; } + MyGroupedObject *nullGrouped() { return 0; } + void doAction() { emit action(); } signals: void action(); diff --git a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp index c646583..c23bb2d 100644 --- a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp +++ b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp @@ -141,6 +141,7 @@ private: QFile file(QLatin1String("data/") + QLatin1String(errorfile)); \ QVERIFY(file.open(QIODevice::ReadOnly)); \ QByteArray data = file.readAll(); \ + file.close(); \ QList<QByteArray> expected = data.split('\n'); \ expected.removeAll(QByteArray("")); \ QList<QmlError> errors = component.errors(); \ @@ -154,7 +155,16 @@ private: } \ if (qgetenv("DEBUG") != "" && expected != actual) \ qWarning() << "Expected:" << expected << "Actual:" << actual; \ - QCOMPARE(expected, actual); \ + if (qgetenv("QMLLANGUAGE_UPDATEERRORS") != "" && expected != actual) {\ + QFile file(QLatin1String("data/") + QLatin1String(errorfile)); \ + QVERIFY(file.open(QIODevice::WriteOnly)); \ + for (int ii = 0; ii < actual.count(); ++ii) { \ + file.write(actual.at(ii)); file.write("\n"); \ + } \ + file.close(); \ + } else { \ + QCOMPARE(expected, actual); \ + } \ } inline QUrl TEST_FILE(const QString &filename) @@ -214,6 +224,7 @@ void tst_qmllanguage::errors_data() QTest::newRow("wrongType (color for size)") << "wrongType.12.qml" << "wrongType.12.errors.txt" << false; QTest::newRow("wrongType (number string for int)") << "wrongType.13.qml" << "wrongType.13.errors.txt" << false; QTest::newRow("wrongType (int for string)") << "wrongType.14.qml" << "wrongType.14.errors.txt" << false; + QTest::newRow("wrongType (int for url)") << "wrongType.15.qml" << "wrongType.15.errors.txt" << false; QTest::newRow("readOnly.1") << "readOnly.1.qml" << "readOnly.1.errors.txt" << false; QTest::newRow("readOnly.2") << "readOnly.2.qml" << "readOnly.2.errors.txt" << false; @@ -240,8 +251,14 @@ void tst_qmllanguage::errors_data() QTest::newRow("missingSignal") << "missingSignal.qml" << "missingSignal.errors.txt" << false; QTest::newRow("finalOverride") << "finalOverride.qml" << "finalOverride.errors.txt" << false; QTest::newRow("customParserIdNotAllowed") << "customParserIdNotAllowed.qml" << "customParserIdNotAllowed.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.1") << "invalidGroupedProperty.1.qml" << "invalidGroupedProperty.1.errors.txt" << false; QTest::newRow("invalidGroupedProperty.2") << "invalidGroupedProperty.2.qml" << "invalidGroupedProperty.2.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.3") << "invalidGroupedProperty.3.qml" << "invalidGroupedProperty.3.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.4") << "invalidGroupedProperty.4.qml" << "invalidGroupedProperty.4.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.5") << "invalidGroupedProperty.5.qml" << "invalidGroupedProperty.5.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.6") << "invalidGroupedProperty.6.qml" << "invalidGroupedProperty.6.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.7") << "invalidGroupedProperty.7.qml" << "invalidGroupedProperty.7.errors.txt" << true; QTest::newRow("importNamespaceConflict") << "importNamespaceConflict.qml" << "importNamespaceConflict.errors.txt" << false; QTest::newRow("importVersionMissing (builtin)") << "importVersionMissingBuiltIn.qml" << "importVersionMissingBuiltIn.errors.txt" << false; @@ -278,13 +295,28 @@ void tst_qmllanguage::errors_data() QTest::newRow("Component.5") << "component.5.qml" << "component.5.errors.txt" << false; QTest::newRow("Component.6") << "component.6.qml" << "component.6.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.1") << "invalidAttachedProperty.1.qml" << "invalidAttachedProperty.1.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.2") << "invalidAttachedProperty.2.qml" << "invalidAttachedProperty.2.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.3") << "invalidAttachedProperty.3.qml" << "invalidAttachedProperty.3.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.4") << "invalidAttachedProperty.4.qml" << "invalidAttachedProperty.4.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.5") << "invalidAttachedProperty.5.qml" << "invalidAttachedProperty.5.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.6") << "invalidAttachedProperty.6.qml" << "invalidAttachedProperty.6.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.7") << "invalidAttachedProperty.7.qml" << "invalidAttachedProperty.7.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.8") << "invalidAttachedProperty.8.qml" << "invalidAttachedProperty.8.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.9") << "invalidAttachedProperty.9.qml" << "invalidAttachedProperty.9.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.10") << "invalidAttachedProperty.10.qml" << "invalidAttachedProperty.10.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.11") << "invalidAttachedProperty.11.qml" << "invalidAttachedProperty.11.errors.txt" << false; + QTest::newRow("nestedErrors") << "nestedErrors.qml" << "nestedErrors.errors.txt" << false; QTest::newRow("defaultGrouped") << "defaultGrouped.qml" << "defaultGrouped.errors.txt" << false; QTest::newRow("emptySignal") << "emptySignal.qml" << "emptySignal.errors.txt" << false; QTest::newRow("doubleSignal") << "doubleSignal.qml" << "doubleSignal.errors.txt" << false; QTest::newRow("invalidRoot") << "invalidRoot.qml" << "invalidRoot.errors.txt" << false; + QTest::newRow("missingValueTypeProperty") << "missingValueTypeProperty.qml" << "missingValueTypeProperty.errors.txt" << false; + QTest::newRow("objectValueTypeProperty") << "objectValueTypeProperty.qml" << "objectValueTypeProperty.errors.txt" << false; } + void tst_qmllanguage::errors() { QFETCH(QString, file); @@ -420,6 +452,7 @@ void tst_qmllanguage::assignBasicTypes() QCOMPARE(object->boolProperty(), true); QCOMPARE(object->variantProperty(), QVariant("Hello World!")); QCOMPARE(object->vectorProperty(), QVector3D(10, 1, 2.2)); + QCOMPARE(object->urlProperty(), component.url().resolved(QUrl("main.qml"))); QVERIFY(object->objectProperty() != 0); MyTypeObject *child = qobject_cast<MyTypeObject *>(object->objectProperty()); QVERIFY(child != 0); @@ -611,6 +644,7 @@ void tst_qmllanguage::attachedProperties() QObject *attached = qmlAttachedPropertiesObject<MyQmlObject>(object); QVERIFY(attached != 0); QCOMPARE(attached->property("value"), QVariant(10)); + QCOMPARE(attached->property("value2"), QVariant(13)); } // Tests non-static object properties diff --git a/tests/auto/declarative/qmlsystempalette/tst_qmlsystempalette.cpp b/tests/auto/declarative/qmlsystempalette/tst_qmlsystempalette.cpp index 039eaa8..2648463 100644 --- a/tests/auto/declarative/qmlsystempalette/tst_qmlsystempalette.cpp +++ b/tests/auto/declarative/qmlsystempalette/tst_qmlsystempalette.cpp @@ -38,7 +38,9 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ + #include <qtest.h> +#include <QDebug> #include <QtDeclarative/qmlengine.h> #include <QtDeclarative/qmlcomponent.h> #include <private/qmlsystempalette_p.h> @@ -56,6 +58,7 @@ private slots: void activePalette(); void inactivePalette(); void disabledPalette(); + void paletteChanged(); private: QmlEngine engine; @@ -149,6 +152,30 @@ void tst_qmlsystempalette::disabledPalette() delete object; } +void tst_qmlsystempalette::paletteChanged() +{ + QString componentStr = "import Qt 4.6\nSystemPalette { }"; + QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://")); + QmlSystemPalette *object = qobject_cast<QmlSystemPalette*>(component.create()); + + QVERIFY(object != 0); + + QPalette p; + p.setCurrentColorGroup(QPalette::Active); + p.setColor(QPalette::Active, QPalette::Text, QColor("red")); + p.setColor(QPalette::Active, QPalette::ButtonText, QColor("green")); + p.setColor(QPalette::Active, QPalette::WindowText, QColor("blue")); + + qApp->setPalette(p); + + object->setColorGroup(QmlSystemPalette::Active); + QTRY_COMPARE(QColor("red"), object->text()); + QTRY_COMPARE(QColor("green"), object->buttonText()); + QTRY_COMPARE(QColor("blue"), object->windowText()); + + delete object; +} + QTEST_MAIN(tst_qmlsystempalette) #include "tst_qmlsystempalette.moc" diff --git a/tests/auto/declarative/qmltimer/tst_qmltimer.cpp b/tests/auto/declarative/qmltimer/tst_qmltimer.cpp index 9c5dc30..cf54647 100644 --- a/tests/auto/declarative/qmltimer/tst_qmltimer.cpp +++ b/tests/auto/declarative/qmltimer/tst_qmltimer.cpp @@ -91,6 +91,9 @@ void tst_qmltimer::notRepeating() QmlComponent component(&engine, QByteArray("import Qt 4.6\nTimer { interval: 100; running: true }"), QUrl("file://")); QmlTimer *timer = qobject_cast<QmlTimer*>(component.create()); QVERIFY(timer != 0); + QVERIFY(timer->isRunning()); + QVERIFY(!timer->isRepeating()); + QCOMPARE(timer->interval(), 100); TimerHelper helper; connect(timer, SIGNAL(triggered()), &helper, SLOT(timeout())); @@ -107,6 +110,7 @@ void tst_qmltimer::notRepeatingStart() QmlComponent component(&engine, QByteArray("import Qt 4.6\nTimer { interval: 100 }"), QUrl("file://")); QmlTimer *timer = qobject_cast<QmlTimer*>(component.create()); QVERIFY(timer != 0); + QVERIFY(!timer->isRunning()); TimerHelper helper; connect(timer, SIGNAL(triggered()), &helper, SLOT(timeout())); @@ -138,6 +142,11 @@ void tst_qmltimer::repeat() QTest::qWait(TIMEOUT_TIMEOUT); QVERIFY(helper.count > oldCount); + + oldCount = helper.count; + timer->stop(); + QTest::qWait(TIMEOUT_TIMEOUT); + QVERIFY(helper.count == oldCount); } void tst_qmltimer::triggeredOnStart() @@ -146,6 +155,7 @@ void tst_qmltimer::triggeredOnStart() QmlComponent component(&engine, QByteArray("import Qt 4.6\nTimer { interval: 100; running: true; triggeredOnStart: true }"), QUrl("file://")); QmlTimer *timer = qobject_cast<QmlTimer*>(component.create()); QVERIFY(timer != 0); + QVERIFY(timer->triggeredOnStart()); TimerHelper helper; connect(timer, SIGNAL(triggered()), &helper, SLOT(timeout())); diff --git a/tests/auto/declarative/valuetypes/data/bindingVariantCopy.qml b/tests/auto/declarative/valuetypes/data/bindingVariantCopy.qml new file mode 100644 index 0000000..691a56c --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/bindingVariantCopy.qml @@ -0,0 +1,13 @@ +import Test 1.0 + +MyTypeObject { + property var object + object: MyTypeObject { + rect.x: 19 + rect.y: 33 + rect.width: 5 + rect.height: 99 + } + + rect: object.rect +} diff --git a/tests/auto/declarative/valuetypes/data/deletedObject.js b/tests/auto/declarative/valuetypes/data/deletedObject.js new file mode 100644 index 0000000..f554a0f --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/deletedObject.js @@ -0,0 +1,13 @@ +var savedReference; + +function startup() +{ + savedReference = object.rect; + print("Test: " + savedReference.x); +} + +function afterDelete() +{ + print("Test: " + savedReference.x); +} + diff --git a/tests/auto/declarative/valuetypes/data/deletedObject.qml b/tests/auto/declarative/valuetypes/data/deletedObject.qml new file mode 100644 index 0000000..05459f4 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/deletedObject.qml @@ -0,0 +1,12 @@ +import Test 1.0 +import Qt 4.6 + +MyTypeObject { + property var object + + Script { source: "deletedObject.js" } + + object: MyTypeObject {} + Component.onCompleted: startup() + onRunScript: afterDelete() +} diff --git a/tests/auto/declarative/valuetypes/data/scriptVariantCopy.qml b/tests/auto/declarative/valuetypes/data/scriptVariantCopy.qml new file mode 100644 index 0000000..29157e8 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/scriptVariantCopy.qml @@ -0,0 +1,14 @@ +import Test 1.0 + +MyTypeObject { + property var object + object: MyTypeObject { + rect.x: 19 + rect.y: 33 + rect.width: 5 + rect.height: 99 + } + + onRunScript: rect = object.rect +} + diff --git a/tests/auto/declarative/valuetypes/tst_valuetypes.cpp b/tests/auto/declarative/valuetypes/tst_valuetypes.cpp index d09bdf5..d42bfc5 100644 --- a/tests/auto/declarative/valuetypes/tst_valuetypes.cpp +++ b/tests/auto/declarative/valuetypes/tst_valuetypes.cpp @@ -70,6 +70,9 @@ private slots: void valueSources(); void valueInterceptors(); void bindingConflict(); + void deletedObject(); + void bindingVariantCopy(); + void scriptVariantCopy(); void cppClasses(); private: @@ -503,6 +506,54 @@ void tst_valuetypes::bindingConflict() delete t; \ } +// Test that accessing a reference to a valuetype after the owning object is deleted +// doesn't crash +void tst_valuetypes::deletedObject() +{ + QmlComponent component(&engine, TEST_FILE("deletedObject.qml")); + QTest::ignoreMessage(QtDebugMsg, "Test: 2"); + MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); + QVERIFY(object != 0); + + QObject *dObject = qvariant_cast<QObject *>(object->property("object")); + QVERIFY(dObject != 0); + delete dObject; + + QTest::ignoreMessage(QtDebugMsg, "Test: undefined"); + object->emitRunScript(); + + delete object; +} + +// Test that value types can be assigned to another value type property in a binding +void tst_valuetypes::bindingVariantCopy() +{ + QmlComponent component(&engine, TEST_FILE("bindingVariantCopy.qml")); + MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->rect(), QRect(19, 33, 5, 99)); + + delete object; +} + +// Test that value types can be assigned to another value type property in script +void tst_valuetypes::scriptVariantCopy() +{ + QmlComponent component(&engine, TEST_FILE("scriptVariantCopy.qml")); + MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->rect(), QRect(2, 3, 109, 102)); + + object->emitRunScript(); + + QCOMPARE(object->rect(), QRect(19, 33, 5, 99)); + + delete object; +} + + // Test that the value type classes can be used manually void tst_valuetypes::cppClasses() { diff --git a/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml b/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml index 90ef1e5..efbb1b4 100644 --- a/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml +++ b/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml @@ -28,7 +28,7 @@ Rectangle { transitions: [ Transition { NumberAnimation { - properties: "x" + matchProperties: "x" } } ] diff --git a/tests/auto/declarative/visual/easing/easing.qml b/tests/auto/declarative/visual/easing/easing.qml index f81400b..1e8e907 100644 --- a/tests/auto/declarative/visual/easing/easing.qml +++ b/tests/auto/declarative/visual/easing/easing.qml @@ -176,7 +176,7 @@ Rectangle { to: "to" reversible: true NumberAnimation { - properties: "x" + matchProperties: "x" easing: type duration: 1000 } diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml b/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml deleted file mode 100644 index 266c9a3..0000000 --- a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml +++ /dev/null @@ -1,351 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 32 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 48 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 64 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 80 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 96 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 112 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 128 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 144 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 160 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 176 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 192 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 208 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 224 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 240 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 256 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 272 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 288 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 304 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 320 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 336 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 352 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 368 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 384 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 400 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 416 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 432 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 448 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 464 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 480 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 496 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 512 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 528 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 544 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 560 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 576 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 592 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 608 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 624 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 640 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 656 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 672 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 688 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 704 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 720 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 736 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 752 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 768 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 784 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 800 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 816 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 832 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 848 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 864 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 880 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 896 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 912 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 928 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 944 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 960 - image: "plaintext.0.png" - } - Frame { - msec: 976 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 992 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1008 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1024 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1040 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1056 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1072 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1088 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1104 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1120 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1136 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1152 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1168 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1184 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Key { - type: 6 - key: 16777249 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1200 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1216 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1232 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1248 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1264 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1280 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1296 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1312 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1328 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } - Frame { - msec: 1344 - hash: "9f3d0a505dec1982d9b405be72c265f8" - } -} diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml b/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml deleted file mode 100644 index e971809..0000000 --- a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml +++ /dev/null @@ -1,359 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 32 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 48 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 64 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 80 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 96 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 112 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 128 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 144 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 160 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 176 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 192 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 208 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 224 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 240 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 256 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 272 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 288 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 304 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 320 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 336 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 352 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 368 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 384 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 400 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 416 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 432 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 448 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 464 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 480 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 496 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 512 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 528 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 544 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 560 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 576 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 592 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 608 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 624 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 640 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 656 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 672 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 688 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 704 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 720 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 736 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 752 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 768 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 784 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 800 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 816 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 832 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 848 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 864 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 880 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 896 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 912 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 928 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 944 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 960 - image: "richtext.0.png" - } - Frame { - msec: 976 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 992 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1008 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1024 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1040 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1056 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1072 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1088 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1104 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1120 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1136 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1152 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Key { - type: 6 - key: 16777249 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1168 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1184 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1200 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1216 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1232 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1248 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1264 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1280 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1296 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1312 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1328 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1344 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1360 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } - Frame { - msec: 1376 - hash: "259cc9829171ea866dac4ffe8ef6b489" - } -} diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.0.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.0.png Binary files differnew file mode 100644 index 0000000..3d5acbc --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.0.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.1.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.1.png Binary files differnew file mode 100644 index 0000000..bebb1aa --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.1.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.2.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.2.png Binary files differnew file mode 100644 index 0000000..d092053 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.2.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.3.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.3.png Binary files differnew file mode 100644 index 0000000..aa79f8b --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.3.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.4.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.4.png Binary files differnew file mode 100644 index 0000000..98e8817 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.4.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.5.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.5.png Binary files differnew file mode 100644 index 0000000..a3f9d8f --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.5.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.qml b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.qml new file mode 100644 index 0000000..5464d01 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.qml @@ -0,0 +1,1623 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 32 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 48 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 64 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 80 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 96 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 112 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 128 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 144 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 160 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 176 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 192 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 208 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 224 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 240 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 256 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 272 + hash: "73c06997014af4e008b546b53fe349fb" + } + Frame { + msec: 288 + hash: "73c06997014af4e008b546b53fe349fb" + } + Frame { + msec: 304 + hash: "73c06997014af4e008b546b53fe349fb" + } + Frame { + msec: 320 + hash: "451a9408b04826ab35749d9120efd6bb" + } + Frame { + msec: 336 + hash: "451a9408b04826ab35749d9120efd6bb" + } + Frame { + msec: 352 + hash: "1c25b3d65e8590f8c213afa76b722e97" + } + Frame { + msec: 368 + hash: "1c25b3d65e8590f8c213afa76b722e97" + } + Frame { + msec: 384 + hash: "1c25b3d65e8590f8c213afa76b722e97" + } + Frame { + msec: 400 + hash: "e64fa5eba05f81e6f263dc8543f21b1a" + } + Frame { + msec: 416 + hash: "e64fa5eba05f81e6f263dc8543f21b1a" + } + Frame { + msec: 432 + hash: "845581f8d03f4fe9323fc282e84f919b" + } + Frame { + msec: 448 + hash: "845581f8d03f4fe9323fc282e84f919b" + } + Frame { + msec: 464 + hash: "136fb272f4d806927b46a1269b18f63d" + } + Frame { + msec: 480 + hash: "8532ee7ce3488f9e038643e4fa48751d" + } + Frame { + msec: 496 + hash: "8532ee7ce3488f9e038643e4fa48751d" + } + Frame { + msec: 512 + hash: "af5f794f73e16a5c3b9e437418c873ee" + } + Frame { + msec: 528 + hash: "af5f794f73e16a5c3b9e437418c873ee" + } + Frame { + msec: 544 + hash: "d75e53f2cea8e9b61a5e50f95060552e" + } + Frame { + msec: 560 + hash: "0374aae76f8cfd75f119ff4b86dba817" + } + Frame { + msec: 576 + hash: "d36e1a56078d7cfa246b57f886c230b4" + } + Frame { + msec: 592 + hash: "d36e1a56078d7cfa246b57f886c230b4" + } + Frame { + msec: 608 + hash: "30692e6658ac730670a489c880fd4485" + } + Frame { + msec: 624 + hash: "3aace4dc5bc503ed0df1b00b444780f0" + } + Frame { + msec: 640 + hash: "b6936d72cbaff0c6bb64fc08152e8680" + } + Frame { + msec: 656 + hash: "b6936d72cbaff0c6bb64fc08152e8680" + } + Frame { + msec: 672 + hash: "8beee45f26f9f7b94b84a807a0c42217" + } + Frame { + msec: 688 + hash: "80529f6b8d12838b58c4af73c1985792" + } + Frame { + msec: 704 + hash: "967f7e4f58a8e29b5d76eac011af643d" + } + Frame { + msec: 720 + hash: "395863cffd5440b0a4805975b766a3cf" + } + Frame { + msec: 736 + hash: "f9c919f45316d93d2c8693b62930850f" + } + Frame { + msec: 752 + hash: "cf8ffc1132935b5df49da90953009fa0" + } + Frame { + msec: 768 + hash: "8e44d6cf4c29313352ad0118db003958" + } + Frame { + msec: 784 + hash: "31ca6f5b62fd8c08fa17b1008c4e6a22" + } + Frame { + msec: 800 + hash: "96773abcace99ba692a5be096df85a54" + } + Frame { + msec: 816 + hash: "e92daff761c739f231ba2c05785c44fb" + } + Frame { + msec: 832 + hash: "c1b1056ef06a0454680f2146bb87a56b" + } + Frame { + msec: 848 + hash: "dc02f4f6b0ff1572a64fd133819fd794" + } + Frame { + msec: 864 + hash: "9f87d4d33942d32a4048ca2b785a1fed" + } + Frame { + msec: 880 + hash: "57d989f52d8bee06694166bf8bdffef0" + } + Frame { + msec: 896 + hash: "09c3602a08d6d3e2afb654c328606871" + } + Frame { + msec: 912 + hash: "b075ae21dbd3acef5c4d0f11cadce3c9" + } + Frame { + msec: 928 + hash: "d54b5b295a9ca2bc65131a0775d8d009" + } + Frame { + msec: 944 + hash: "599b244ff9b4ddceb682a059338f6f97" + } + Frame { + msec: 960 + image: "test-flipable.0.png" + } + Frame { + msec: 976 + hash: "9fd5a0f023f89511bdd4b7e429f940ab" + } + Frame { + msec: 992 + hash: "ad18f401dc07032ffc52b90fd5581319" + } + Frame { + msec: 1008 + hash: "b12cbf8e97bc48e12d9543ffc1c578a2" + } + Frame { + msec: 1024 + hash: "7c9895dae776c2a4a6d5e1dd50d86336" + } + Frame { + msec: 1040 + hash: "ebd8018990ce867c3308121dccbfc1bc" + } + Frame { + msec: 1056 + hash: "4818f99e2f71c0ec7636aa777f4df875" + } + Frame { + msec: 1072 + hash: "09371a634d7801742075aadc131b5fb6" + } + Frame { + msec: 1088 + hash: "e03e96eaa2640cf6d820d9992c0c51f4" + } + Frame { + msec: 1104 + hash: "daf19227a7e51e437d0a13fdf8b1a26f" + } + Frame { + msec: 1120 + hash: "539ccebf96da504f0c5dfe5496ed95ce" + } + Frame { + msec: 1136 + hash: "63d851b3a8758e4cd95624b44cf9e7c9" + } + Frame { + msec: 1152 + hash: "8ee67f06977858444a775ca8c5109411" + } + Frame { + msec: 1168 + hash: "44849e7b8cc8d187da234daba784bc6e" + } + Frame { + msec: 1184 + hash: "ec9892a5602892ba5a2075b61672d91b" + } + Frame { + msec: 1200 + hash: "b12aec87daa7c09276ae5d4b619276a1" + } + Frame { + msec: 1216 + hash: "816d9d278fecde0867efadae2c4b5839" + } + Frame { + msec: 1232 + hash: "65daf0b21f860cb87c28a11c3d947f3b" + } + Frame { + msec: 1248 + hash: "f3bc5c605ac0cb287e8c1d1cb58d85ca" + } + Frame { + msec: 1264 + hash: "2988cc8030891abd7493294fc2c6964c" + } + Frame { + msec: 1280 + hash: "cbfc98561559f3aa8bdec7c40da559c0" + } + Frame { + msec: 1296 + hash: "636335822b15f32861696439773e1794" + } + Frame { + msec: 1312 + hash: "3fbb7a8920ff95fce7bfefcb540c6de8" + } + Frame { + msec: 1328 + hash: "4036080b6aafa72e5310ce33615ff8f8" + } + Frame { + msec: 1344 + hash: "48fb5685e63e81f1790f5481bc06dac4" + } + Frame { + msec: 1360 + hash: "f1f58f0eebbffc3b389c6669c5419081" + } + Frame { + msec: 1376 + hash: "5481248e889fb4fe9f4cf54f69d9f614" + } + Frame { + msec: 1392 + hash: "efbf81fc1db57a6020fcfe97077233b7" + } + Frame { + msec: 1408 + hash: "67ff11e6143718c95418f4851265081e" + } + Frame { + msec: 1424 + hash: "a403ec3d25e73b557ba08aa903cb9006" + } + Frame { + msec: 1440 + hash: "293b9f1cc31af93f22b4c1369567c4ba" + } + Frame { + msec: 1456 + hash: "8ff7cee41c6f19eeda417052c1b071d6" + } + Frame { + msec: 1472 + hash: "cd8d4484158d7dcdc7662ea8c8daea07" + } + Frame { + msec: 1488 + hash: "b991e62a7d6751bdd3e2d690e690821c" + } + Frame { + msec: 1504 + hash: "c60aca5007dadc628f242db9d593cf1f" + } + Frame { + msec: 1520 + hash: "e78af45d2042130a9d34b654157a9ada" + } + Frame { + msec: 1536 + hash: "cc35b2fcc585191d3f46840fdcacc94f" + } + Frame { + msec: 1552 + hash: "9e33a9f73e1019e7d694d108fd95f2ad" + } + Frame { + msec: 1568 + hash: "f08adfe4286703702c9393a905ec01d2" + } + Frame { + msec: 1584 + hash: "56bdfcb8fbb776b3799676ba7934a354" + } + Frame { + msec: 1600 + hash: "da3b8e41b9639bb71cf95b671d8a2c63" + } + Frame { + msec: 1616 + hash: "92855bf2208369f361b677bc66e9c79d" + } + Frame { + msec: 1632 + hash: "e5403ff384dca3c10b091e166160624f" + } + Frame { + msec: 1648 + hash: "932b5ebeaa4576575179b04a4c131ef5" + } + Frame { + msec: 1664 + hash: "37a23d4a895fa83226f66736caa87281" + } + Frame { + msec: 1680 + hash: "f6926e493dfd7deee613cf9bb7529f5e" + } + Frame { + msec: 1696 + hash: "338e40ae3e047cf7731377fc1b4d3cb7" + } + Frame { + msec: 1712 + hash: "0dfdd9a1d83a706a09318c83fd08b6fe" + } + Frame { + msec: 1728 + hash: "4487366ee7ec1e0fdafc88cfa82e7977" + } + Frame { + msec: 1744 + hash: "28f0b7824b5bb311d46c94afa7d7bb66" + } + Frame { + msec: 1760 + hash: "34b15e5a3602fd7bf2f217c308fa5d09" + } + Frame { + msec: 1776 + hash: "667b9286f32fe43a0cb5d65cdfa965cd" + } + Frame { + msec: 1792 + hash: "629888aae80ea85db07a383df352214a" + } + Frame { + msec: 1808 + hash: "9afbd09687efa09eb3b03570bf8be531" + } + Frame { + msec: 1824 + hash: "0e1dac5b9d2a0acab1516d01a286a0ec" + } + Frame { + msec: 1840 + hash: "dd058795bd3957d02dc296419c17819c" + } + Frame { + msec: 1856 + hash: "158618e8529cba8531183b2f72e90340" + } + Frame { + msec: 1872 + hash: "c9062e6405b3b7fd0b2a794119220b1d" + } + Frame { + msec: 1888 + hash: "8dadb6da9f12dac689406a43e7e61bea" + } + Frame { + msec: 1904 + hash: "fd66704ce98410a7b1dd69f7cd6ddd26" + } + Frame { + msec: 1920 + image: "test-flipable.1.png" + } + Frame { + msec: 1936 + hash: "d4a21104b4f8044486fbe6516e4ae7b5" + } + Frame { + msec: 1952 + hash: "20fd373c13d4d06b9105c80ed6f4edb7" + } + Frame { + msec: 1968 + hash: "ff9bc1aa538b69e72ed1a501ea0d56de" + } + Frame { + msec: 1984 + hash: "3f3d5f3ca770b84e86fea3188e082493" + } + Frame { + msec: 2000 + hash: "fe7de3d2083208993e527b13ae7edadd" + } + Frame { + msec: 2016 + hash: "b5f7c630f6e61c7ddac8493e17a1f53e" + } + Frame { + msec: 2032 + hash: "c80d37b370a4ada6217c81f5e82ecd6f" + } + Frame { + msec: 2048 + hash: "84051de621753e12e3e11316d14dfe73" + } + Frame { + msec: 2064 + hash: "fd238f83a26ed8c2cee3e3d042af903b" + } + Frame { + msec: 2080 + hash: "949d2ed3e1d1c674e77ef3c8a6b779ba" + } + Frame { + msec: 2096 + hash: "42f602bcd7b517cf16554a88998d16a8" + } + Frame { + msec: 2112 + hash: "318bd97d726826398887ff218e61df32" + } + Frame { + msec: 2128 + hash: "5a0699f422475f0d3f17cddb606b4715" + } + Frame { + msec: 2144 + hash: "3eb8e765ff9f38fd56a69a8bc2d534c3" + } + Frame { + msec: 2160 + hash: "dd548f565a0787789ec13e141f808b11" + } + Frame { + msec: 2176 + hash: "a78a6a9f014b8c2e7a202b80e6c2e09f" + } + Frame { + msec: 2192 + hash: "3d0ff083b6f1f994caa660016245876d" + } + Frame { + msec: 2208 + hash: "ce6a7491571ce3d5799791579428b615" + } + Frame { + msec: 2224 + hash: "67e700035648fd5354ec0806a412be89" + } + Frame { + msec: 2240 + hash: "b03f1bfe2bdbf52aae0dff6ae4821914" + } + Frame { + msec: 2256 + hash: "4d75ac3064288c3a56e9fd6ed6022fc6" + } + Frame { + msec: 2272 + hash: "dc6677725f6bf0bdcab25287a096a0e6" + } + Frame { + msec: 2288 + hash: "827e5e274fb331c6f9997172894b1f4d" + } + Frame { + msec: 2304 + hash: "c3cf3b3968441b735684fc6e55ebb1ce" + } + Frame { + msec: 2320 + hash: "01eebde46aff9d7484cffb0b0d27c415" + } + Frame { + msec: 2336 + hash: "614ad3481a993b5ff5ec008aa3d4751f" + } + Frame { + msec: 2352 + hash: "614ad3481a993b5ff5ec008aa3d4751f" + } + Frame { + msec: 2368 + hash: "2f253dcdbe2fabc768cdd5bfa8004a36" + } + Frame { + msec: 2384 + hash: "90b130853f8e28a01c90825c412f98b9" + } + Frame { + msec: 2400 + hash: "567bf7684e4b2f76715bcc588a2b7dfb" + } + Frame { + msec: 2416 + hash: "63412cfccdd8646530ebdb37eba16ee9" + } + Frame { + msec: 2432 + hash: "63412cfccdd8646530ebdb37eba16ee9" + } + Frame { + msec: 2448 + hash: "e1c5381a621dfe50e4b04d881ce2c4b7" + } + Frame { + msec: 2464 + hash: "553bff0aa031ed1279170c19bf024539" + } + Frame { + msec: 2480 + hash: "2b8c079d8526ce4d0640014cca38c6b8" + } + Frame { + msec: 2496 + hash: "2b8c079d8526ce4d0640014cca38c6b8" + } + Frame { + msec: 2512 + hash: "ac356478635b5d34001a50997eb3c82c" + } + Frame { + msec: 2528 + hash: "ac356478635b5d34001a50997eb3c82c" + } + Frame { + msec: 2544 + hash: "93d64e7bec7d9e254066d79c0db41f28" + } + Frame { + msec: 2560 + hash: "010ec13762826006a1dbf60b8c4660c9" + } + Frame { + msec: 2576 + hash: "010ec13762826006a1dbf60b8c4660c9" + } + Frame { + msec: 2592 + hash: "2f882016d4e3e29ec6689cfa1189e00e" + } + Frame { + msec: 2608 + hash: "2f882016d4e3e29ec6689cfa1189e00e" + } + Frame { + msec: 2624 + hash: "676f8aba3379c9935b9bd269bd140cf2" + } + Frame { + msec: 2640 + hash: "676f8aba3379c9935b9bd269bd140cf2" + } + Frame { + msec: 2656 + hash: "78e0dca60c04d3defbd90457685dbab3" + } + Frame { + msec: 2672 + hash: "78e0dca60c04d3defbd90457685dbab3" + } + Frame { + msec: 2688 + hash: "0ff9fd6b09fc14abacb794353b9500f6" + } + Frame { + msec: 2704 + hash: "0ff9fd6b09fc14abacb794353b9500f6" + } + Frame { + msec: 2720 + hash: "0ff9fd6b09fc14abacb794353b9500f6" + } + Frame { + msec: 2736 + hash: "6d813ee777a5900c65aca5939c004d0c" + } + Frame { + msec: 2752 + hash: "6d813ee777a5900c65aca5939c004d0c" + } + Frame { + msec: 2768 + hash: "0acaa3ece071ad4461cf4a79d65a0f03" + } + Frame { + msec: 2784 + hash: "0acaa3ece071ad4461cf4a79d65a0f03" + } + Frame { + msec: 2800 + hash: "0acaa3ece071ad4461cf4a79d65a0f03" + } + Frame { + msec: 2816 + hash: "0acaa3ece071ad4461cf4a79d65a0f03" + } + Frame { + msec: 2832 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 2848 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 2864 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 2880 + image: "test-flipable.2.png" + } + Frame { + msec: 2896 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 2912 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 2928 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 2944 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 2960 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 2976 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 2992 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 3008 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 3024 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 3040 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 3056 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 3072 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 3088 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 3104 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 3120 + hash: "1daeebce8e7eef80b135d2e4f83f780b" + } + Frame { + msec: 3136 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 3152 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 3168 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 3184 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 3200 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 3216 + hash: "b2ef52b66896649413b3852bcf642e1c" + } + Frame { + msec: 3232 + hash: "0acaa3ece071ad4461cf4a79d65a0f03" + } + Frame { + msec: 3248 + hash: "0acaa3ece071ad4461cf4a79d65a0f03" + } + Frame { + msec: 3264 + hash: "0acaa3ece071ad4461cf4a79d65a0f03" + } + Frame { + msec: 3280 + hash: "6d813ee777a5900c65aca5939c004d0c" + } + Frame { + msec: 3296 + hash: "6d813ee777a5900c65aca5939c004d0c" + } + Frame { + msec: 3312 + hash: "6d813ee777a5900c65aca5939c004d0c" + } + Frame { + msec: 3328 + hash: "0ff9fd6b09fc14abacb794353b9500f6" + } + Frame { + msec: 3344 + hash: "0ff9fd6b09fc14abacb794353b9500f6" + } + Frame { + msec: 3360 + hash: "78e0dca60c04d3defbd90457685dbab3" + } + Frame { + msec: 3376 + hash: "78e0dca60c04d3defbd90457685dbab3" + } + Frame { + msec: 3392 + hash: "78e0dca60c04d3defbd90457685dbab3" + } + Frame { + msec: 3408 + hash: "676f8aba3379c9935b9bd269bd140cf2" + } + Frame { + msec: 3424 + hash: "676f8aba3379c9935b9bd269bd140cf2" + } + Frame { + msec: 3440 + hash: "2f882016d4e3e29ec6689cfa1189e00e" + } + Frame { + msec: 3456 + hash: "2f882016d4e3e29ec6689cfa1189e00e" + } + Frame { + msec: 3472 + hash: "010ec13762826006a1dbf60b8c4660c9" + } + Frame { + msec: 3488 + hash: "93d64e7bec7d9e254066d79c0db41f28" + } + Frame { + msec: 3504 + hash: "93d64e7bec7d9e254066d79c0db41f28" + } + Frame { + msec: 3520 + hash: "ac356478635b5d34001a50997eb3c82c" + } + Frame { + msec: 3536 + hash: "ac356478635b5d34001a50997eb3c82c" + } + Frame { + msec: 3552 + hash: "2b8c079d8526ce4d0640014cca38c6b8" + } + Frame { + msec: 3568 + hash: "553bff0aa031ed1279170c19bf024539" + } + Frame { + msec: 3584 + hash: "e1c5381a621dfe50e4b04d881ce2c4b7" + } + Frame { + msec: 3600 + hash: "e1c5381a621dfe50e4b04d881ce2c4b7" + } + Frame { + msec: 3616 + hash: "63412cfccdd8646530ebdb37eba16ee9" + } + Frame { + msec: 3632 + hash: "567bf7684e4b2f76715bcc588a2b7dfb" + } + Frame { + msec: 3648 + hash: "90b130853f8e28a01c90825c412f98b9" + } + Frame { + msec: 3664 + hash: "90b130853f8e28a01c90825c412f98b9" + } + Frame { + msec: 3680 + hash: "2f253dcdbe2fabc768cdd5bfa8004a36" + } + Frame { + msec: 3696 + hash: "614ad3481a993b5ff5ec008aa3d4751f" + } + Frame { + msec: 3712 + hash: "01eebde46aff9d7484cffb0b0d27c415" + } + Frame { + msec: 3728 + hash: "c3cf3b3968441b735684fc6e55ebb1ce" + } + Frame { + msec: 3744 + hash: "827e5e274fb331c6f9997172894b1f4d" + } + Frame { + msec: 3760 + hash: "dc6677725f6bf0bdcab25287a096a0e6" + } + Frame { + msec: 3776 + hash: "4d75ac3064288c3a56e9fd6ed6022fc6" + } + Frame { + msec: 3792 + hash: "b03f1bfe2bdbf52aae0dff6ae4821914" + } + Frame { + msec: 3808 + hash: "67e700035648fd5354ec0806a412be89" + } + Frame { + msec: 3824 + hash: "ce6a7491571ce3d5799791579428b615" + } + Frame { + msec: 3840 + image: "test-flipable.3.png" + } + Frame { + msec: 3856 + hash: "a78a6a9f014b8c2e7a202b80e6c2e09f" + } + Frame { + msec: 3872 + hash: "dd548f565a0787789ec13e141f808b11" + } + Frame { + msec: 3888 + hash: "3eb8e765ff9f38fd56a69a8bc2d534c3" + } + Frame { + msec: 3904 + hash: "9729b36fe9dbabf0c46e78b723885530" + } + Frame { + msec: 3920 + hash: "5a0699f422475f0d3f17cddb606b4715" + } + Frame { + msec: 3936 + hash: "318bd97d726826398887ff218e61df32" + } + Frame { + msec: 3952 + hash: "42f602bcd7b517cf16554a88998d16a8" + } + Frame { + msec: 3968 + hash: "fd238f83a26ed8c2cee3e3d042af903b" + } + Frame { + msec: 3984 + hash: "84051de621753e12e3e11316d14dfe73" + } + Frame { + msec: 4000 + hash: "0c6d27488abbfd4f1ee4570a33a2c89e" + } + Frame { + msec: 4016 + hash: "c80d37b370a4ada6217c81f5e82ecd6f" + } + Frame { + msec: 4032 + hash: "fe7de3d2083208993e527b13ae7edadd" + } + Frame { + msec: 4048 + hash: "e5b616cefec125e8ad714d0c739ff902" + } + Frame { + msec: 4064 + hash: "3f3d5f3ca770b84e86fea3188e082493" + } + Frame { + msec: 4080 + hash: "20fd373c13d4d06b9105c80ed6f4edb7" + } + Frame { + msec: 4096 + hash: "2d6f6cf66bbd50a6546bc54e5aa91fb8" + } + Frame { + msec: 4112 + hash: "d4a21104b4f8044486fbe6516e4ae7b5" + } + Frame { + msec: 4128 + hash: "fd66704ce98410a7b1dd69f7cd6ddd26" + } + Frame { + msec: 4144 + hash: "33dcba73c46fa6513d4241e9cc75c417" + } + Frame { + msec: 4160 + hash: "c9062e6405b3b7fd0b2a794119220b1d" + } + Frame { + msec: 4176 + hash: "c1663c9ad895d67981a170f6b67a5331" + } + Frame { + msec: 4192 + hash: "dd058795bd3957d02dc296419c17819c" + } + Frame { + msec: 4208 + hash: "7cf357d1eb96e65f30a0cb4b7315b2f7" + } + Frame { + msec: 4224 + hash: "9afbd09687efa09eb3b03570bf8be531" + } + Frame { + msec: 4240 + hash: "321d29c57276959e095c5cb9366daf03" + } + Frame { + msec: 4256 + hash: "238c029a6be60ca4e1909d4f1de5633b" + } + Frame { + msec: 4272 + hash: "667b9286f32fe43a0cb5d65cdfa965cd" + } + Frame { + msec: 4288 + hash: "51bcca29caecbd92264f271818c400b8" + } + Frame { + msec: 4304 + hash: "4487366ee7ec1e0fdafc88cfa82e7977" + } + Frame { + msec: 4320 + hash: "f3cafcdab8b47c44dcc2222b9021f253" + } + Frame { + msec: 4336 + hash: "e8d25d1b5ea3f580cb46be911ea73556" + } + Frame { + msec: 4352 + hash: "f6926e493dfd7deee613cf9bb7529f5e" + } + Frame { + msec: 4368 + hash: "44e2f675f37feb23b53e58fc356a17aa" + } + Frame { + msec: 4384 + hash: "384478653302b604590c137d1e7289fe" + } + Frame { + msec: 4400 + hash: "fccc582ba920db36e797bdd7c4c329e5" + } + Frame { + msec: 4416 + hash: "92855bf2208369f361b677bc66e9c79d" + } + Frame { + msec: 4432 + hash: "9fc85a4e179b73bb5e92ed982ee13ee7" + } + Frame { + msec: 4448 + hash: "46e199e3311bf5643e4da28c1f1c687a" + } + Frame { + msec: 4464 + hash: "9d8a56893bf62535654fadd8b8a04977" + } + Frame { + msec: 4480 + hash: "b97e5629f4e9e2617e69361a0ca7f84a" + } + Frame { + msec: 4496 + hash: "eea82c42aa4eb22b2a3c5f1eb5a78d53" + } + Frame { + msec: 4512 + hash: "49d9c74894e3f1a5b03c126963296ecb" + } + Frame { + msec: 4528 + hash: "e78af45d2042130a9d34b654157a9ada" + } + Frame { + msec: 4544 + hash: "831fbf842a9107100ed7c91d664edaff" + } + Frame { + msec: 4560 + hash: "d1af7a53eef0b7dcb3da095bba7cdc12" + } + Frame { + msec: 4576 + hash: "8a02f7d3d53e98384d1f05dc7fc5fd37" + } + Frame { + msec: 4592 + hash: "6af3a8305b25a9a769b8cf00479c6ab3" + } + Frame { + msec: 4608 + hash: "f91c42910b17cb19be33a277b03e1cd2" + } + Frame { + msec: 4624 + hash: "67ff11e6143718c95418f4851265081e" + } + Frame { + msec: 4640 + hash: "e8dc4593c974902337ea7d58f26bae4c" + } + Frame { + msec: 4656 + hash: "9176a3f857d73d626bfba01878c5f213" + } + Frame { + msec: 4672 + hash: "08c7f417093c9e9da70c027ee12b0840" + } + Frame { + msec: 4688 + hash: "48fb5685e63e81f1790f5481bc06dac4" + } + Frame { + msec: 4704 + hash: "71e51c2b97140eb7810e489e6d809437" + } + Frame { + msec: 4720 + hash: "e8de71d4a2a253e366b2edf5d475824d" + } + Frame { + msec: 4736 + hash: "636335822b15f32861696439773e1794" + } + Frame { + msec: 4752 + hash: "ebd6d5f535f5356201aae297839777a6" + } + Frame { + msec: 4768 + hash: "ebc8a639c3ef849d47d79b6a91d940fd" + } + Frame { + msec: 4784 + hash: "2988cc8030891abd7493294fc2c6964c" + } + Frame { + msec: 4800 + image: "test-flipable.4.png" + } + Frame { + msec: 4816 + hash: "816d9d278fecde0867efadae2c4b5839" + } + Frame { + msec: 4832 + hash: "b40795c967d37d8cb6b73049a30f40cc" + } + Frame { + msec: 4848 + hash: "ec9892a5602892ba5a2075b61672d91b" + } + Frame { + msec: 4864 + hash: "38bd188beb6633cfe979f6881820c15d" + } + Frame { + msec: 4880 + hash: "8ee67f06977858444a775ca8c5109411" + } + Frame { + msec: 4896 + hash: "d3603c86488b02dc0136cc2588d00d7b" + } + Frame { + msec: 4912 + hash: "539ccebf96da504f0c5dfe5496ed95ce" + } + Frame { + msec: 4928 + hash: "b60450e46a2566d1feaf9749e897fa8b" + } + Frame { + msec: 4944 + hash: "daf19227a7e51e437d0a13fdf8b1a26f" + } + Frame { + msec: 4960 + hash: "09371a634d7801742075aadc131b5fb6" + } + Frame { + msec: 4976 + hash: "40b2a59c83f1223025eca6e2e19a87d8" + } + Frame { + msec: 4992 + hash: "4818f99e2f71c0ec7636aa777f4df875" + } + Frame { + msec: 5008 + hash: "7c9895dae776c2a4a6d5e1dd50d86336" + } + Frame { + msec: 5024 + hash: "b69f034a71b53c885cd177da422d5fc7" + } + Frame { + msec: 5040 + hash: "b12cbf8e97bc48e12d9543ffc1c578a2" + } + Frame { + msec: 5056 + hash: "9fd5a0f023f89511bdd4b7e429f940ab" + } + Frame { + msec: 5072 + hash: "39ed52571b12a9cea5409d5efc80c283" + } + Frame { + msec: 5088 + hash: "2dc05cabc6eb3e73e9946ebafed99fd4" + } + Frame { + msec: 5104 + hash: "599b244ff9b4ddceb682a059338f6f97" + } + Frame { + msec: 5120 + hash: "d54b5b295a9ca2bc65131a0775d8d009" + } + Frame { + msec: 5136 + hash: "b075ae21dbd3acef5c4d0f11cadce3c9" + } + Frame { + msec: 5152 + hash: "57d989f52d8bee06694166bf8bdffef0" + } + Frame { + msec: 5168 + hash: "9f87d4d33942d32a4048ca2b785a1fed" + } + Frame { + msec: 5184 + hash: "dc02f4f6b0ff1572a64fd133819fd794" + } + Frame { + msec: 5200 + hash: "c1b1056ef06a0454680f2146bb87a56b" + } + Frame { + msec: 5216 + hash: "e92daff761c739f231ba2c05785c44fb" + } + Frame { + msec: 5232 + hash: "96773abcace99ba692a5be096df85a54" + } + Frame { + msec: 5248 + hash: "31ca6f5b62fd8c08fa17b1008c4e6a22" + } + Frame { + msec: 5264 + hash: "8e44d6cf4c29313352ad0118db003958" + } + Frame { + msec: 5280 + hash: "cf8ffc1132935b5df49da90953009fa0" + } + Frame { + msec: 5296 + hash: "f9c919f45316d93d2c8693b62930850f" + } + Frame { + msec: 5312 + hash: "395863cffd5440b0a4805975b766a3cf" + } + Frame { + msec: 5328 + hash: "967f7e4f58a8e29b5d76eac011af643d" + } + Frame { + msec: 5344 + hash: "80529f6b8d12838b58c4af73c1985792" + } + Frame { + msec: 5360 + hash: "80529f6b8d12838b58c4af73c1985792" + } + Frame { + msec: 5376 + hash: "8beee45f26f9f7b94b84a807a0c42217" + } + Frame { + msec: 5392 + hash: "b6936d72cbaff0c6bb64fc08152e8680" + } + Frame { + msec: 5408 + hash: "3aace4dc5bc503ed0df1b00b444780f0" + } + Frame { + msec: 5424 + hash: "30692e6658ac730670a489c880fd4485" + } + Frame { + msec: 5440 + hash: "30692e6658ac730670a489c880fd4485" + } + Frame { + msec: 5456 + hash: "d36e1a56078d7cfa246b57f886c230b4" + } + Frame { + msec: 5472 + hash: "0374aae76f8cfd75f119ff4b86dba817" + } + Frame { + msec: 5488 + hash: "d75e53f2cea8e9b61a5e50f95060552e" + } + Frame { + msec: 5504 + hash: "d75e53f2cea8e9b61a5e50f95060552e" + } + Frame { + msec: 5520 + hash: "af5f794f73e16a5c3b9e437418c873ee" + } + Frame { + msec: 5536 + hash: "af5f794f73e16a5c3b9e437418c873ee" + } + Frame { + msec: 5552 + hash: "8532ee7ce3488f9e038643e4fa48751d" + } + Frame { + msec: 5568 + hash: "136fb272f4d806927b46a1269b18f63d" + } + Frame { + msec: 5584 + hash: "136fb272f4d806927b46a1269b18f63d" + } + Frame { + msec: 5600 + hash: "845581f8d03f4fe9323fc282e84f919b" + } + Frame { + msec: 5616 + hash: "845581f8d03f4fe9323fc282e84f919b" + } + Frame { + msec: 5632 + hash: "e64fa5eba05f81e6f263dc8543f21b1a" + } + Frame { + msec: 5648 + hash: "e64fa5eba05f81e6f263dc8543f21b1a" + } + Frame { + msec: 5664 + hash: "1c25b3d65e8590f8c213afa76b722e97" + } + Frame { + msec: 5680 + hash: "1c25b3d65e8590f8c213afa76b722e97" + } + Frame { + msec: 5696 + hash: "451a9408b04826ab35749d9120efd6bb" + } + Frame { + msec: 5712 + hash: "451a9408b04826ab35749d9120efd6bb" + } + Frame { + msec: 5728 + hash: "451a9408b04826ab35749d9120efd6bb" + } + Frame { + msec: 5744 + hash: "73c06997014af4e008b546b53fe349fb" + } + Frame { + msec: 5760 + image: "test-flipable.5.png" + } + Frame { + msec: 5776 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 5792 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 5808 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 5824 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 5840 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 5856 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 5872 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 5888 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 5904 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 5920 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 5936 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 5952 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 5968 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 5984 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 6000 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 6016 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 6032 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 6048 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 6064 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 6080 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 6096 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 6112 + hash: "7e16e6360fc2e9db67dbf11d58042745" + } + Frame { + msec: 6128 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 6144 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 6160 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 6176 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 6192 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Frame { + msec: 6208 + hash: "9becb90d9f8a61f5afacdc53d137ebcb" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6224 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 6240 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 6256 + hash: "90fb4e4ba04ac32b52c10b3258431c04" + } + Frame { + msec: 6272 + hash: "73c06997014af4e008b546b53fe349fb" + } + Frame { + msec: 6288 + hash: "73c06997014af4e008b546b53fe349fb" + } + Frame { + msec: 6304 + hash: "73c06997014af4e008b546b53fe349fb" + } + Frame { + msec: 6320 + hash: "451a9408b04826ab35749d9120efd6bb" + } + Frame { + msec: 6336 + hash: "451a9408b04826ab35749d9120efd6bb" + } + Frame { + msec: 6352 + hash: "1c25b3d65e8590f8c213afa76b722e97" + } + Frame { + msec: 6368 + hash: "1c25b3d65e8590f8c213afa76b722e97" + } + Frame { + msec: 6384 + hash: "1c25b3d65e8590f8c213afa76b722e97" + } + Frame { + msec: 6400 + hash: "e64fa5eba05f81e6f263dc8543f21b1a" + } + Frame { + msec: 6416 + hash: "e64fa5eba05f81e6f263dc8543f21b1a" + } + Frame { + msec: 6432 + hash: "845581f8d03f4fe9323fc282e84f919b" + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/test-flipable.qml b/tests/auto/declarative/visual/qmlgraphicsflipable/test-flipable.qml new file mode 100644 index 0000000..ba2e93f --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflipable/test-flipable.qml @@ -0,0 +1,83 @@ +import Qt 4.6 + +Rectangle { + width: 400; height: 240 + color: "white" + + Timer { + interval: 3000; running: true; repeat: true; triggeredOnStart: true + onTriggered: { + if (flipable.state == '') flipable.state = 'back'; else flipable.state = '' + if (flipable2.state == '') flipable2.state = 'back'; else flipable2.state = '' + } + } + + Flipable { + id: flipable + width: 200; height: 200 + + property int angle: 0 + + transform: Rotation { + origin.x: 100; origin.y: 100 + axis.x: 0; axis.y: 1; axis.z: 0 + angle: flipable.angle + } + + front: Rectangle { + color: "steelblue"; width: 200; height: 200 + } + + back: Rectangle { + color: "deeppink"; width: 200; height: 200 + } + + states: State { + name: "back" + PropertyChanges { target: flipable; angle: 180 } + } + + transitions: Transition { + NumberAnimation { easing: "easeInOutQuad"; matchProperties: "angle"; duration: 3000 } + } + } + + Flipable { + id: flipable2 + x: 200; width: 200; height: 200 + + property int angle: 0 + + transform: Rotation { + origin.x: 100; origin.y: 100 + axis.x: 1; axis.z: 0 + angle: flipable2.angle + } + + front: Rectangle { + color: "deeppink"; width: 200; height: 200 + } + + back: Rectangle { + color: "steelblue"; width: 200; height: 200 + } + + states: State { + name: "back" + PropertyChanges { target: flipable2; angle: 180 } + } + + transitions: Transition { + NumberAnimation { easing: "easeInOutQuad"; matchProperties: "angle"; duration: 3000 } + } + } + + Rectangle { + x: 25; width: 150; y: 210; height: 20; color: "black" + visible: flipable.side == Flipable.Front + } + Rectangle { + x: 225; width: 150; y: 210; height: 20; color: "black" + visible: flipable2.side == Flipable.Back + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.0.png b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.0.png Binary files differindex 30bdefd..4cc937d 100644 --- a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.0.png +++ b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.0.png diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.1.png b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.1.png Binary files differindex 799e028..ea04224 100644 --- a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.1.png +++ b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.1.png diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.2.png b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.2.png Binary files differindex ed267c2..241fd20 100644 --- a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.2.png +++ b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.2.png diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.qml b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.qml index 3199f31..a4339f8 100644 --- a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.qml +++ b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.qml @@ -10,235 +10,235 @@ VisualTest { } Frame { msec: 32 - hash: "1c129b1c4a39412bed2f23d712f2bc90" + hash: "71e690f8339f1829efc113d88d1a9023" } Frame { msec: 48 - hash: "fbcc4bc3fea46a43453aa39b032264c6" + hash: "856a757f3e83e1ede00854d2dacd856a" } Frame { msec: 64 - hash: "2cb13275faca414b7c8ba9d70067fd1f" + hash: "2a7926b693b9950aabc4e3a1ebe4b2d0" } Frame { msec: 80 - hash: "b017afb05f96085ee3395d62e62e457b" + hash: "0564ce95b47a7c3314a56921855b9244" } Frame { msec: 96 - hash: "642851d10c549c8ae72c057563e99e64" + hash: "bf207596dd69e7a872a23448621100cc" } Frame { msec: 112 - hash: "494c0942f7410d455a4b113fb908e570" + hash: "a0bb920166e777ea96afb811353a3488" } Frame { msec: 128 - hash: "cb0a2f9980f27757c0c1d62ef3dcfde0" + hash: "3d6297c684562d099fdb9c413b3e93a3" } Frame { msec: 144 - hash: "2fb9cf782ea106006af8bcd66c62869c" + hash: "29139f93cbd55faa0ea18f11db364d56" } Frame { msec: 160 - hash: "bf68518323f03e4f407831e8b34f247b" + hash: "f3637e44bf1b6c3fd030898e14a15443" } Frame { msec: 176 - hash: "c99abe9c0384ae339fdfa0c75dc8047d" + hash: "d687ef38c1d0e8d12c03a2e7b462a5e5" } Frame { msec: 192 - hash: "96f2eb402633c1aca8a1a2b0d60af5fb" + hash: "0f1f227bbce76122d081759752edf47e" } Frame { msec: 208 - hash: "6cba51a856f1ba54ee702761f196b915" + hash: "1112e4f9ec18958caa4efadbf8b369bd" } Frame { msec: 224 - hash: "9188926caa6c6ba8cb3aee04de635b96" + hash: "5bb7fd7dc06d79aa5ca35fa551753a38" } Frame { msec: 240 - hash: "81132a5e8768de0630311813170f166e" + hash: "c59e159877613eb09ba353bc0ef46086" } Frame { msec: 256 - hash: "a638698d7ccb73f20f6eeba3857f417c" + hash: "b7c583f85d89c833861324b3d06a6c8b" } Frame { msec: 272 - hash: "4761ba6847f6f0769b916106c5f3245b" + hash: "147641f03d92a48f49e0cfb4972bc1c7" } Frame { msec: 288 - hash: "13bc0c681962bada7fcb3b722895ffaa" + hash: "1627827cd3733d1177f111c6c347ab49" } Frame { msec: 304 - hash: "505c5824be16d812b7c339f1f9b8a10b" + hash: "0edccffd718ef10a0ea476201fc00c39" } Frame { msec: 320 - hash: "d191d502d9c685f8497583669147ee73" + hash: "4b7f426aaa31bdabc6c065b298e59c9e" } Frame { msec: 336 - hash: "c17f55cc5d7bf541e235791a157aa8b9" + hash: "4814f77f57bbae8d3c20995e37ec95fb" } Frame { msec: 352 - hash: "3ef401f87830c53b9b277d4420a9a742" + hash: "030092297087df89ab40e894a01f0ee2" } Frame { msec: 368 - hash: "d04816400e66ebbf797f9985a53f7cfb" + hash: "30b0d547b580daee9b1c49f5069570c5" } Frame { msec: 384 - hash: "d7a7df7c2a92449f42d61c0572e7dbac" + hash: "eaee106eaa1505e7d79ed21c36f381fd" } Frame { msec: 400 - hash: "f49a3bcf3842f554136ff9bd5bb470ef" + hash: "6527d1d44a75015d7eb163a660e15b0b" } Frame { msec: 416 - hash: "27bccc5933d7bfaad6d5f6a10efd283b" + hash: "3a3a7b7b36ede4aa1261b5f28c99984c" } Frame { msec: 432 - hash: "3067ac00a4d58c67bb96d813c344871d" + hash: "d2349319b0feeceaa7ef9301ae87d348" } Frame { msec: 448 - hash: "d38d7192688feecc38fd63285d37ce49" + hash: "f483ae316491e367922f6ef7ebfa0298" } Frame { msec: 464 - hash: "4172d1b74cdd6ea89be718977775a9e0" + hash: "3d94b3e9b409a4ca2200df226a25b2d5" } Frame { msec: 480 - hash: "2761a7e58cbfa46fc6d306c8270e4f10" + hash: "ce289f478dafd295ba82ef0c9e13ff3d" } Frame { msec: 496 - hash: "58a851b9fbcb98afc7c1bc58c2f45e4a" + hash: "6d618658faa9403ff9909f6c6a677cb2" } Frame { msec: 512 - hash: "0f7789f04bf20708d9d6f1e818b6b88a" + hash: "9e12eda314483bc5ef5a14a1b1ac26d7" } Frame { msec: 528 - hash: "8d8b8d109dce4c7b05ecb603b4718859" + hash: "ed34b0d26a18145028a5ec4c99e9b569" } Frame { msec: 544 - hash: "0fc6fde589932ac41787e8ebfe3fcbe3" + hash: "ea91dc7e837fa540af260f75c0f8ba49" } Frame { msec: 560 - hash: "e08bffd5a56795488f090a475513e5db" + hash: "a5b277747454ddeda3d66f3702f45a53" } Frame { msec: 576 - hash: "e089ab7c5feefd3d745bb665e2ff49ee" + hash: "7601784afb80a79267ade99961122186" } Frame { msec: 592 - hash: "e7b787fb1b21e991c19ec88b3d985b69" + hash: "e52696c37cc3a245a555c98038b51e76" } Frame { msec: 608 - hash: "a6f4f32287bd926e0eeff68717b80512" + hash: "7d94071d225e0105c794a238eaa8117e" } Frame { msec: 624 - hash: "3344ca9c97473bd922bd8efd5d6ab212" + hash: "60ebfb611c6f7515568574aecdfdcb57" } Frame { msec: 640 - hash: "a330510a9f62acb4f2163728939d0bb5" + hash: "0ea41ef8a82e97e62ed7507606ab6bf4" } Frame { msec: 656 - hash: "1ec473936f2279f13675b6b5fe2ee392" + hash: "009a12491a5f6e4b30942062f93a3f8c" } Frame { msec: 672 - hash: "b193b7d2917ee00c4cb29bf244186bef" + hash: "2fa053880413fc76b53b26b733b2168f" } Frame { msec: 688 - hash: "75137e977941e357bad2ad9af2cbc898" + hash: "fb53a57559de18a5b6f13f21d1daf098" } Frame { msec: 704 - hash: "31773ba8979a31b1691860b7dafe28dc" + hash: "f65a62bf7d5e8fbd996f7151398109a6" } Frame { msec: 720 - hash: "d8922452edbba4f1092b83e87c0330ea" + hash: "b0802484661f6fe4606f4ff915c03f81" } Frame { msec: 736 - hash: "982c80305b54236d1259f5672098652d" + hash: "b63c61e63cb23147a8377d3428d5a4fa" } Frame { msec: 752 - hash: "d8b23fb0867fb75558960216c8d0f2aa" + hash: "a320dcfa3907c85fa983035953b79ba3" } Frame { msec: 768 - hash: "daf7833f93a216d1e025c9129b3a7caa" + hash: "6b94696073ab8e1ef6be1f0b5cb22720" } Frame { msec: 784 - hash: "bb08e8fe2ce74018fc702e5dad8927fe" + hash: "5ed4ff5011c421e40bd0e1d021974efc" } Frame { msec: 800 - hash: "22a30051c87d4de7e734d9de6ce7eed8" + hash: "b183261aca9e8f887f4d489d8c81f583" } Frame { msec: 816 - hash: "d8625628587feace367fc97c1f11aff8" + hash: "c4672d92bb4f0e8cb8e10fcef11a36e2" } Frame { msec: 832 - hash: "e9dbbf715fc094cb22ecd5c6df602f95" + hash: "beb2c18162ea197b486b217f15f784e7" } Frame { msec: 848 - hash: "ca69b2b9f8e6b16e3bc6d93598b6c75a" + hash: "9f5198e08dc16e80f500804ba8ae7afb" } Frame { msec: 864 - hash: "87e09752e39df5042aef163fe4ed0b47" + hash: "d892706fd28d55adcdacdf72a2f7ad83" } Frame { msec: 880 - hash: "80adfaf02838c8bd372e53d0483fbac5" + hash: "1ed182b5b27ed7ed59c56c450a73975d" } Frame { msec: 896 - hash: "9934a1aece14ba7369b00cf2620cd207" + hash: "74756064676c5d5c9eacaea31a7b357d" } Frame { msec: 912 - hash: "954a70a949fdcca4e4412174f30653c3" + hash: "64f79b420b38bda6e102163b90be5f4f" } Frame { msec: 928 - hash: "850fa936516f8b145465eac39c9a74a6" + hash: "0d1f92cafc507af799953771cee7c265" } Frame { msec: 944 - hash: "1d844e8a7c710ccbf31f47470cc9abf2" + hash: "887ef63951fb56fd50f4de9afe8db1a8" } Frame { msec: 960 @@ -246,239 +246,239 @@ VisualTest { } Frame { msec: 976 - hash: "33f4eee3f6e3fb715463254d727ef898" + hash: "f09fc1e1ebc8c627c89c741ac263e3f4" } Frame { msec: 992 - hash: "68648a3f75f58b34dd9770a9edc2caea" + hash: "30bb26df58c83ff70d767e01f0df5140" } Frame { msec: 1008 - hash: "ad0d431ab7e6cfbb43053050a1cf5e40" + hash: "dbd83b1749a42edd6d26097ade1c67ba" } Frame { msec: 1024 - hash: "d1ae74c9bf3826d30fb461ca2fd8e36a" + hash: "7fa50f111158dc6a3e245eb23e57a3f3" } Frame { msec: 1040 - hash: "bda9d77c68a30d491abdfbfcf854c5ea" + hash: "267ef8b555a62abb44e8b5cf88c83110" } Frame { msec: 1056 - hash: "386ea303f8102339f8cd5ae88fd5f6bc" + hash: "78b2d13be078f2e7e94d685994b6488e" } Frame { msec: 1072 - hash: "8c81d3992851ebeb3cb820bc4510af66" + hash: "1d47caf40c85bc1e23bf8d22160d333d" } Frame { msec: 1088 - hash: "566813e312ffdde4a7d3af4276bc8cdd" + hash: "abeaf0a9bedfd62e56f12fa612bf287f" } Frame { msec: 1104 - hash: "d9c8b391b12ee40aa393f4fb39c12a16" + hash: "0f66d12b082398c9f43ef868632529ab" } Frame { msec: 1120 - hash: "f2bf70bda626089437f0ab67ad62d8f6" + hash: "957340efea7ce168889c2ae1b867c6d0" } Frame { msec: 1136 - hash: "88b2d1ecd7d51d0bf8c947a3433b7013" + hash: "4d83e6160f5d9097a4b73bf4104fa11b" } Frame { msec: 1152 - hash: "e93e0553c5dcc6dcd21dad0932d1e3fa" + hash: "d2811de76d3c0cc8ebd67583e50deaae" } Frame { msec: 1168 - hash: "c1ec148772d399ea4934cdfc514f6980" + hash: "cb13f2d6985e841b2da453860d7ddd65" } Frame { msec: 1184 - hash: "14f286793de5452f4677e8b6fd5c1e7e" + hash: "1e48b355ff1e136bcd982a749ba49089" } Frame { msec: 1200 - hash: "220a7df0af53fc9a2442956128091ad8" + hash: "9f9abd7b167a834449510a02d368155b" } Frame { msec: 1216 - hash: "84c49512f5e9f138901b3833a5adbcab" + hash: "6a75c81527b3bb85f70c08f669d46139" } Frame { msec: 1232 - hash: "b05410caa120f5a4191a44b84aa17a8c" + hash: "eafd6f87fb88f6f51cf27d5dd4faa7c8" } Frame { msec: 1248 - hash: "e1f6db204f62394205c1d4d56bbf9f52" + hash: "ba43e681c7f2677b81fa4fe87a5e612c" } Frame { msec: 1264 - hash: "f45033d1350009e09f62e81aeec297a5" + hash: "f83f06320c3e7c2352dd8e8839d63063" } Frame { msec: 1280 - hash: "dfd88b1dba38ab8260e00b3810b89318" + hash: "713afe22640941e9ea4925158099c514" } Frame { msec: 1296 - hash: "17503276f68e365cde03607d66fe4c8e" + hash: "53766caa0ab92bbd2e3d69e6ab9a8fe7" } Frame { msec: 1312 - hash: "28f03c5c0fe5c4647c5b9d3b72a07c76" + hash: "af98650b68d48fd3776d0334904b9e75" } Frame { msec: 1328 - hash: "ea2082529b50543fab22497e01938102" + hash: "62439fba28fbc0d4a129ccd5edf81b8b" } Frame { msec: 1344 - hash: "a700a2f3721625b1ec68107884d1ce67" + hash: "75c67b227f23a3ef5c01aca285f3617c" } Frame { msec: 1360 - hash: "ce717f1f1d98158aeef1cc6a9485dc80" + hash: "3a5e1fe4a9454e9636fbebdfb005e3ac" } Frame { msec: 1376 - hash: "7febe7c67e1c159881de72f62800a505" + hash: "2e4cdc140a9faedc8fbc9a0ec20b1a4c" } Frame { msec: 1392 - hash: "474931cb44a8e18426b9c2cc9f6df482" + hash: "f937d5b14fb0360afb14dbcce1b0ad9a" } Frame { msec: 1408 - hash: "1085b4873b9a4934882a163be72a2710" + hash: "20cb9e30c1a89bae3081427328887361" } Frame { msec: 1424 - hash: "59e7911800e915e6f159cb111ce61a54" + hash: "67f19061f97630a35b59357dcba9c5f0" } Frame { msec: 1440 - hash: "6d0d780ffc726b04f9885c25b08d1009" + hash: "f1b4041797873b7ff9e318542186eaf8" } Frame { msec: 1456 - hash: "bf896d6403dc1ad26536cc1165e71e9e" + hash: "ecbdc77e1b58decad29a6dfc654fba20" } Frame { msec: 1472 - hash: "86397c7dcf5ed34edbbaa465ae6eab43" + hash: "6d0b821c08b024aa8fc71ec5c0e98c53" } Frame { msec: 1488 - hash: "ed1b4967bf14eead9cb4d2dcfbdb46c2" + hash: "5137c7ee6879b98478a4edb1b5a0d79c" } Frame { msec: 1504 - hash: "67b7e59c8f945d1f3bdb1944fa736ecf" + hash: "17c80c758e9d0721a3b791dbabe0d34f" } Frame { msec: 1520 - hash: "b5f95e89f39d1c4821ba38547b0f2e3b" + hash: "abc1fe8d97b87f891ac53673fe64bf0d" } Frame { msec: 1536 - hash: "5bc91c9e35afa255a2dda28db9802b1e" + hash: "fe8c8ce5f0cf676310e4ce85c1755f0f" } Frame { msec: 1552 - hash: "84fab4042e0ff891ca1998cbfbb60e5a" + hash: "40eff7ab7370e7a3de28a55e200812ca" } Frame { msec: 1568 - hash: "7c5ef5025a06e990171dac3e8fd93977" + hash: "8ff86cc730f4b7877ed7890f62dd8f17" } Frame { msec: 1584 - hash: "ab4cd0e103d71a35250668ad850a5213" + hash: "a87e34b8d9e75d03493c94a96ef97c25" } Frame { msec: 1600 - hash: "aa974c4b2290f7febb121344623de86d" + hash: "807a4b4652ed228084660bfdf98efd50" } Frame { msec: 1616 - hash: "ff6ee1b50ca356dc98038a459e318b32" + hash: "ca245fcf490c3bc17bef1a38d793f573" } Frame { msec: 1632 - hash: "022fe9c391514fdd98bc1c38bc383df2" + hash: "6662d0e4e7778f560c8956e9fe4aa079" } Frame { msec: 1648 - hash: "b1a33c9c9cbdcc1c8c9c982eef041ccd" + hash: "c47d90df3dbb1656ef425209f1b528b1" } Frame { msec: 1664 - hash: "0945e66ab5aa81beacf662eb82ec39ed" + hash: "c9dbf06207cf9b8d03cf20f4e4131979" } Frame { msec: 1680 - hash: "ae293f675dbdd88dec8f924140033cc9" + hash: "dfab00fee3cf9f0f76d66f64eed6de84" } Frame { msec: 1696 - hash: "5ace5013e3d51a8db338f65011dd10f8" + hash: "b38a29a29bf30c197e5434a942e805cf" } Frame { msec: 1712 - hash: "9466a4e96d647f2bd8845697fce89399" + hash: "589496ebac7f7ea699b869291db7ed45" } Frame { msec: 1728 - hash: "73bbbfc57e020c6a0acbd5fdfa711c30" + hash: "c7a037e3e755c1c8fecd17db7596a9cd" } Frame { msec: 1744 - hash: "d71d7182107c3d6b004a57a321caee96" + hash: "faca2e1e88556ffd1f71bbc5ceae5cb1" } Frame { msec: 1760 - hash: "0902867c89e536cffcde69bde2eb1994" + hash: "5837a888d83513fb4c0bce11a34fc3df" } Frame { msec: 1776 - hash: "39fc26943f6077272c36e93b7cbf6994" + hash: "07f8fe9ded8271396db503c3927244bb" } Frame { msec: 1792 - hash: "92931d5a6e57fb9df60785a64d3a6f78" + hash: "345fffbc210b55a4bd78cb8a4e12d025" } Frame { msec: 1808 - hash: "fffd632552f88f2979ef85de0ce585c2" + hash: "7b9aa96eb9a1fe77fbb8b607140885b7" } Frame { msec: 1824 - hash: "9f97bfcffbb5d127c5eee852b30a13c4" + hash: "d66748cc52a364231ac8a6a677d9bdc6" } Frame { msec: 1840 - hash: "ea9ee0293fbc45d3467e29c09e42adcd" + hash: "40cf9aece08870358aef6c9836013472" } Frame { msec: 1856 - hash: "b5b75c50f8fae3fb3b88efad536c911b" + hash: "2015ab3c133862222b1375c775af743b" } Frame { msec: 1872 - hash: "25dcd3fa30c057d1a42c19cee1ce444b" + hash: "41e519acb18ed9f7cda2d3cd88fddd2c" } Frame { msec: 1888 - hash: "862d42abe7abd49d4a38e38a8c33a657" + hash: "8e583b74b2b90d7f5c78357f66801358" } Frame { msec: 1904 - hash: "a335f3c8c797c1bb5537b57f952c19d1" + hash: "3a6755e25045d937743371a98792a546" } Frame { msec: 1920 @@ -486,239 +486,239 @@ VisualTest { } Frame { msec: 1936 - hash: "da1cf98fdfe5acbe30cfbe66389aa240" + hash: "f80a8f65def55d556732bfefe3debe72" } Frame { msec: 1952 - hash: "088f3209c0363c06cf0607c58d00ca2d" + hash: "308cbe6344b9aea4c6b7ad2ef606de59" } Frame { msec: 1968 - hash: "47ba3bf2604b21f331a2e00f05926aaf" + hash: "fd2d31f6f4a3b4ce1aec1e309c48ae94" } Frame { msec: 1984 - hash: "5ff0de383abdefad76380af144bd9d80" + hash: "a02ed4aa3783049ffbf7ef6dfb4e8926" } Frame { msec: 2000 - hash: "b972d1c85d3d8777f84b54dc118172fd" + hash: "dde64769b3affc776fe0e747a4d621ef" } Frame { msec: 2016 - hash: "37581c3fbef2088b7d14b6c7bbf3cdc3" + hash: "3fa830b629939520c071b3e6fe94156e" } Frame { msec: 2032 - hash: "4ad6a06ac6de9dea66e9ce873a6618c1" + hash: "ae582350cba12ce47306f2a967e396fd" } Frame { msec: 2048 - hash: "3a0379ad966235044508c144ffbc336b" + hash: "a4483eadd2bf3e3e9fae51279b50e18a" } Frame { msec: 2064 - hash: "cb5a9510400943d77c9a296066f037e2" + hash: "742fc008fab89087b1bceee33889db19" } Frame { msec: 2080 - hash: "7bd5673a1d2ad8079df2569149e5811e" + hash: "5da9546b147737dd671813725cb196f7" } Frame { msec: 2096 - hash: "bd327ff6b8a4081b3a41cb0035403037" + hash: "c979bccf2603c400b4c93d1be6f698d1" } Frame { msec: 2112 - hash: "f0f9f559251f7648cd60e66ac745962d" + hash: "b7c6391ce59e054ae53e3731788dfc05" } Frame { msec: 2128 - hash: "18827630a859b0ce497f682e33558fae" + hash: "0371e17fdaa7be7af0cff132f164d6b4" } Frame { msec: 2144 - hash: "e22d8110cbe34acddba799942872645d" + hash: "6973ce2af671f4d500da3c5a37534693" } Frame { msec: 2160 - hash: "11564e7221524cc3655c2c5f1d7e42b6" + hash: "f9128da47afa801c6b3670752847a8d1" } Frame { msec: 2176 - hash: "6468721ee38209aaf2c82a320bcd122e" + hash: "2e4a7001c3c1bb7153f631da1b273aa1" } Frame { msec: 2192 - hash: "19772d0f422fd206645ae6cf0be30b59" + hash: "65d41139c27a4a94a817e1b5c8aa765d" } Frame { msec: 2208 - hash: "48b6c7e1317b9a66238c17afceb5121f" + hash: "36652e407957b59bad2e0e9b2fa5a8fe" } Frame { msec: 2224 - hash: "82a1af78709b78cce2d9b4eed7f8477c" + hash: "c0fe78ff8fc3119b30a1d9e5b98fafbb" } Frame { msec: 2240 - hash: "36e2366eccbdd2d16c19829c34fbff87" + hash: "41b798eac11e696e5e690d13e8ce88b1" } Frame { msec: 2256 - hash: "271db39ca46c59ddc279fb41a9d191af" + hash: "20efbef05b6eed5a916e55ba25c10a59" } Frame { msec: 2272 - hash: "ee279a90e86aa89b1c3d745ab030180d" + hash: "dc897fb0d232a39215d5d004e322cb2a" } Frame { msec: 2288 - hash: "14e8c72d770644f4cec99e65aeff0d75" + hash: "33c1f9bb344a31a1a0973a527c22edac" } Frame { msec: 2304 - hash: "56fa1756eb11a30f07f8f31c22c99973" + hash: "0b54b02eedc60e8d7b147092b9bd6bca" } Frame { msec: 2320 - hash: "165af677ff3921f06b89b2c8d76a7924" + hash: "02cb9a222c9b109cbff956238a61b31b" } Frame { msec: 2336 - hash: "d64aa248d9b207b87e5ba14bdabf2f6c" + hash: "bfb067d4519861b22e20847083447a22" } Frame { msec: 2352 - hash: "33e9716eb9ca62fe5c5cb1b1ee0e9e68" + hash: "86f599f6844c2046148c682abfe6c417" } Frame { msec: 2368 - hash: "cff2316820c469b84c3bacabfcf1a551" + hash: "fa07ac104183fe94fd3a381595582d76" } Frame { msec: 2384 - hash: "9f1359c4bab95244602254ca3954e2b7" + hash: "8ee792f06fa7e877ce0b160bcf170e70" } Frame { msec: 2400 - hash: "d6246d2aaea895755eab4c839c35ca9d" + hash: "bb39f4374215e9b4eafbc3320d4144b6" } Frame { msec: 2416 - hash: "d446e1ac91fec10482b0c6d38ce86d17" + hash: "d91f778ced58466dd6b79f50cdbfe1a8" } Frame { msec: 2432 - hash: "99f443af76a9e0d2d03638bc9927fda3" + hash: "0fd47896c9d9d74e40c38d0f532aa537" } Frame { msec: 2448 - hash: "a9169e293b8154947332d9754fd23af3" + hash: "0b7ec227fc884616bd17439bf0d40ac1" } Frame { msec: 2464 - hash: "cc6851cc5864615c000fbc8d552eb593" + hash: "e88d4e76d353701c738120e169ccf2a8" } Frame { msec: 2480 - hash: "58a3a6edb5842c88cb73b79a8a187717" + hash: "1564432d4aea1826e543f41dfc9a8113" } Frame { msec: 2496 - hash: "42bcf77c98c9a80508446bd8c66e935b" + hash: "02825fa9174c0a45e19c564030ba9ad0" } Frame { msec: 2512 - hash: "0f99350ae151591fbda95158c046e072" + hash: "c7671a2bb3f0dcb2be48805ef1970dbd" } Frame { msec: 2528 - hash: "9e817e2fd8377b7117f908c4e87d4d57" + hash: "2fa407b026edbb8b9e0edc263fd9ecc5" } Frame { msec: 2544 - hash: "72c105bce75feeeb7a86f823945b4ff9" + hash: "211f3c82cff939cd1ed324180d40aab2" } Frame { msec: 2560 - hash: "653b858445bdd8afdf8abd27f5e53fb8" + hash: "0fb3de6e1865e49ac281ac12e2032f07" } Frame { msec: 2576 - hash: "18bf39154fbf4b42c4d3303e018a2f27" + hash: "a08e0127a0b6172715aa6a10d6e0799e" } Frame { msec: 2592 - hash: "5ed5d52ab7da7ae77e97f3ace09b3b8d" + hash: "57a3d1530042f0d6a6dbf84059a8d730" } Frame { msec: 2608 - hash: "1d382462e5746ee9b6df980364b1c96b" + hash: "9aae6364941f988409b8db63db72fccb" } Frame { msec: 2624 - hash: "2a0a561f38c113a0f177b1c2b99ee5e1" + hash: "9e466ce9c8b54dc95960d21b0b41fdd1" } Frame { msec: 2640 - hash: "0605d3e2dd9132d9c1d25b75a870d647" + hash: "189e0f3c60cd521a6bf52054fa6039c6" } Frame { msec: 2656 - hash: "a1def1576f386c90bb80d46e254bd384" + hash: "1020f18d41a4d83e0b5ae387b486b5ff" } Frame { msec: 2672 - hash: "cf38d4ae577047048d2bd0a4005abfe2" + hash: "26fcea12cc2de8c8cb8caf049937d7c6" } Frame { msec: 2688 - hash: "d7cb6715cd89978bbca5ce4c93b488e5" + hash: "e5b9e752dc668cd4f6803ea772bbb7b0" } Frame { msec: 2704 - hash: "9a5075ee794af14d4f17a52bdbc47f1e" + hash: "a0df9360ed11207076fc77810c1d8605" } Frame { msec: 2720 - hash: "fd3d803a1e5e9e3eeae7d5edcddd0072" + hash: "56dea4551a9532e80dfd6c79031ec08b" } Frame { msec: 2736 - hash: "445114e7d10581a475989e469323d83d" + hash: "900c62773477b2843464b75f67d50c90" } Frame { msec: 2752 - hash: "58328c1d4c0ee7fca78b684697f1922c" + hash: "177de9647549a276256a5e74d5ef7134" } Frame { msec: 2768 - hash: "433df4d872b9565b43af5afce1b42e15" + hash: "cb3eb956096de4f6b51ab249d184a6dd" } Frame { msec: 2784 - hash: "3b694f15722a087c2c9a860cad8bb6de" + hash: "6671e46d013f72bef5e3d0d95ba70301" } Frame { msec: 2800 - hash: "1986c8036bd548ca06a32aa98ab4fc83" + hash: "33910dc69eff13f9c144b7ff84187a59" } Frame { msec: 2816 - hash: "7845dbb0e38145f54a9e4e0bfbd608db" + hash: "dfa20711b0821b66cb2bdd2806e34d03" } Frame { msec: 2832 - hash: "caed393910ae7467c307a314bdf459ef" + hash: "16e2674c2449bf059aa2a0add077e040" } Frame { msec: 2848 - hash: "f3f6b41b7ed04dbc1693c169bdae3b13" + hash: "cdd2a820076cfa9529d93787de61267e" } Frame { msec: 2864 - hash: "b9a87d15d48f951b0a1d6962fb1d5995" + hash: "a851a1e017e90877d6d8027633401bcc" } Frame { msec: 2880 @@ -726,58 +726,50 @@ VisualTest { } Frame { msec: 2896 - hash: "954300274b6a5785e03a6cdae67238e9" + hash: "f159f17caa8df7ae09141462cd9b75ab" } Frame { msec: 2912 - hash: "5b7f51afad796107289369c7d3494843" + hash: "f6a8787008d24bffa6813799042a0d69" } Frame { msec: 2928 - hash: "41164f28cbb94528eda719d590d1cf75" + hash: "18e79f454a628098c41ff8882b663a53" } Frame { msec: 2944 - hash: "5953d4c9a4b4c83ba1dfd83a57ec2742" + hash: "74676f4f2d8612bc02f72e3bf855c060" } Frame { msec: 2960 - hash: "0be7c6187a26b44f12bf71587372a6c7" + hash: "8276c61e080635dd37954837998a14a6" } Frame { msec: 2976 - hash: "a7cab1faf0cdd5649c8ea3c26d2e80d0" + hash: "4cceb2274ce5584315109ac45ef8fce7" } Frame { msec: 2992 - hash: "5f91bef1865623030aea20805993319a" + hash: "c4e87037c2265f85fef3b681b840c6f9" } Frame { msec: 3008 - hash: "69d34e2a27c471ad44f8aba8d906a961" + hash: "aed160bb820dc5cdf1ee320b019436c4" } Frame { msec: 3024 - hash: "5a987879aff30d6c6712c0631bc2f43d" + hash: "593acf3e67bc3428f61b723996093d8d" } Frame { msec: 3040 - hash: "62b9132c58cd5fdcfe7f1bc5e64885cf" + hash: "694d197caff9144204a82a682d47724c" } Frame { msec: 3056 - hash: "d394ef9b504abf94c1d28a9fb7f3c28b" + hash: "12519eda928f8aef0e2a21e9fc0f8756" } Frame { msec: 3072 - hash: "a559cc25af950227fa5fdf70be7fd94c" - } - Frame { - msec: 3088 - hash: "318dde40fc72c5f8ee45b865a68922b1" - } - Frame { - msec: 3104 - hash: "3cbfd55773e52f48f01fe66c28c0b992" + hash: "ae8cba17b25e9567211f4cd20080cb09" } } diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/particles.qml b/tests/auto/declarative/visual/qmlgraphicsparticles/particles.qml index 8fb793f..a7a8143 100644 --- a/tests/auto/declarative/visual/qmlgraphicsparticles/particles.qml +++ b/tests/auto/declarative/visual/qmlgraphicsparticles/particles.qml @@ -3,11 +3,12 @@ import Qt 4.6 Rectangle { width: 640; height: 480; color: "black" + Particles { emitting: false } Particles { id:particlesA y:0; width: 260; height:30; source: "star.png"; lifeSpan:1000; count: 50; angle:70; angleDeviation:36; velocity:30; velocityDeviation:10; emissionRate: 10 - ParticleMotionWander { xvariance:30; pace:100 } + ParticleMotionWander { yvariance:5; xvariance:30; pace:100 } } Particles { id:particlesB diff --git a/tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.0.png b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.0.png Binary files differindex 5631a46..5631a46 100644 --- a/tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.0.png diff --git a/tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.qml index cfd832e..cfd832e 100644 --- a/tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.qml +++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.qml diff --git a/tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.0.png b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.0.png Binary files differindex 6e2b625..6e2b625 100644 --- a/tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.0.png diff --git a/tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.qml index 0c06196..0c06196 100644 --- a/tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.qml +++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.qml diff --git a/tests/auto/declarative/visual/qfxtext/elide/data/elide.0.png b/tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.0.png Binary files differindex 1a8c89b..1a8c89b 100644 --- a/tests/auto/declarative/visual/qfxtext/elide/data/elide.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.0.png diff --git a/tests/auto/declarative/visual/qfxtext/elide/data/elide.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.qml index 59f17f7..59f17f7 100644 --- a/tests/auto/declarative/visual/qfxtext/elide/data/elide.qml +++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.qml diff --git a/tests/auto/declarative/visual/qfxtext/elide/elide.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/elide.qml index 3c9ea5b..3c9ea5b 100644 --- a/tests/auto/declarative/visual/qfxtext/elide/elide.qml +++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/elide.qml diff --git a/tests/auto/declarative/visual/qfxtext/elide/multilength.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/multilength.qml index fa74cc4..fa74cc4 100644 --- a/tests/auto/declarative/visual/qfxtext/elide/multilength.qml +++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/multilength.qml diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.0.png b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.0.png Binary files differindex a54a327..05a6e51 100644 --- a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.0.png diff --git a/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.qml new file mode 100644 index 0000000..7e591c8 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.qml @@ -0,0 +1,351 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 32 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 48 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 64 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 80 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 96 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 112 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 128 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 144 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 160 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 176 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 192 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 208 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 224 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 240 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 256 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 272 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 288 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 304 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 320 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 336 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 352 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 368 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 384 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 400 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 416 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 432 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 448 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 464 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 480 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 496 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 512 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 528 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 544 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 560 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 576 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 592 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 608 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 624 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 640 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 656 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 672 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 688 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 704 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 720 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 736 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 752 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 768 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 784 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 800 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 816 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 832 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 848 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 864 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 880 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 896 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 912 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 928 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 944 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 960 + image: "plaintext.0.png" + } + Frame { + msec: 976 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 992 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1008 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1024 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1040 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1056 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1072 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1088 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1104 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1120 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1136 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1152 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1168 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1184 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1200 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1216 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1232 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1248 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1264 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1280 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1296 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1312 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1328 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } + Frame { + msec: 1344 + hash: "d6479cc04d67055c2fd8f4ed2fca829b" + } +} diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.0.png b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.0.png Binary files differindex c2ddee1..6379942 100644 --- a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.0.png diff --git a/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.qml new file mode 100644 index 0000000..4414c1c --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.qml @@ -0,0 +1,359 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 32 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 48 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 64 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 80 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 96 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 112 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 128 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 144 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 160 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 176 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 192 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 208 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 224 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 240 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 256 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 272 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 288 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 304 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 320 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 336 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 352 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 368 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 384 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 400 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 416 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 432 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 448 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 464 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 480 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 496 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 512 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 528 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 544 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 560 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 576 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 592 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 608 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 624 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 640 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 656 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 672 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 688 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 704 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 720 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 736 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 752 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 768 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 784 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 800 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 816 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 832 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 848 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 864 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 880 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 896 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 912 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 928 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 944 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 960 + image: "richtext.0.png" + } + Frame { + msec: 976 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 992 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1008 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1024 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1040 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1056 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1072 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1088 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1104 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1120 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1136 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1152 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1168 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1184 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1200 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1216 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1232 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1248 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1264 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1280 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1296 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1312 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1328 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1344 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1360 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } + Frame { + msec: 1376 + hash: "b902ff73e7c943bb09b5d2ae6c7a760e" + } +} diff --git a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.0.png b/tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.0.png Binary files differindex 50d56dc..50d56dc 100644 --- a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.0.png diff --git a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.qml index f4cbcbd..f4cbcbd 100644 --- a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.qml +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.qml diff --git a/tests/auto/declarative/visual/qfxtext/font/data/richtext.0.png b/tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.0.png Binary files differindex 2910670..2910670 100644 --- a/tests/auto/declarative/visual/qfxtext/font/data/richtext.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.0.png diff --git a/tests/auto/declarative/visual/qfxtext/font/data/richtext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.qml index 9f396c2..9f396c2 100644 --- a/tests/auto/declarative/visual/qfxtext/font/data/richtext.qml +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.qml diff --git a/tests/auto/declarative/visual/qfxtext/font/plaintext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/plaintext.qml index f219e09..a3aa929 100644 --- a/tests/auto/declarative/visual/qfxtext/font/plaintext.qml +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/plaintext.qml @@ -55,10 +55,10 @@ Rectangle { text: s.text; horizontalAlignment: Text.AlignLeft; width: 800 } Text { - text: s.text; horizontalAlignment: Text.AlignHCenter; width: 800 + text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20 } Text { - text: s.text; horizontalAlignment: Text.AlignRight; width: 800 + text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20 } Text { text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrap: true; width: 200 diff --git a/tests/auto/declarative/visual/qfxtext/font/richtext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/richtext.qml index 00a9749..35aa232 100644 --- a/tests/auto/declarative/visual/qfxtext/font/richtext.qml +++ b/tests/auto/declarative/visual/qmlgraphicstext/font/richtext.qml @@ -55,10 +55,10 @@ Rectangle { text: s.text; horizontalAlignment: Text.AlignLeft; width: 800 } Text { - text: s.text; horizontalAlignment: Text.AlignHCenter; width: 800 + text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20 } Text { - text: s.text; horizontalAlignment: Text.AlignRight; width: 800 + text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20 } Text { text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrap: true; width: 200 diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.0.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.0.png Binary files differnew file mode 100644 index 0000000..d753c97 --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.0.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.1.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.1.png Binary files differnew file mode 100644 index 0000000..98fc111 --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.1.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.2.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.2.png Binary files differnew file mode 100644 index 0000000..b1d109e --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.2.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.3.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.3.png Binary files differnew file mode 100644 index 0000000..595d92e --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.3.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.4.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.4.png Binary files differnew file mode 100644 index 0000000..93e1536 --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.4.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.5.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.5.png Binary files differnew file mode 100644 index 0000000..b27cc9f --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.5.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.qml b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.qml new file mode 100644 index 0000000..3c0dad8 --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.qml @@ -0,0 +1,1691 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "ea677d128f47343d81a081c438aa2f6c" + } + Frame { + msec: 32 + hash: "ea677d128f47343d81a081c438aa2f6c" + } + Frame { + msec: 48 + hash: "403e130b7cf0a41d8348a227293d98d1" + } + Frame { + msec: 64 + hash: "d2250ca93235b6a087b5e582f7e941d6" + } + Frame { + msec: 80 + hash: "3e95bdb5546de8ed7bb33de704d2890e" + } + Frame { + msec: 96 + hash: "438612a44780d6587f99a44c943eb60f" + } + Frame { + msec: 112 + hash: "057d47c73edcd149c0b1e6274f98deae" + } + Frame { + msec: 128 + hash: "c15ca80f3efb55d067e38bd92f360b14" + } + Frame { + msec: 144 + hash: "9f1b15db2eb172d97eef4f7c78d11e4f" + } + Frame { + msec: 160 + hash: "a81514d058846ae1c60575534ad47b21" + } + Frame { + msec: 176 + hash: "48d0f3971ed369d6a82b06ca9febc435" + } + Frame { + msec: 192 + hash: "8277eb954d0ca9293f3d05b979db3fe3" + } + Frame { + msec: 208 + hash: "edb64bdcb13f67813fcd3cbedb608cf3" + } + Frame { + msec: 224 + hash: "3a51a89e15b0709fcf6591ce4096c52d" + } + Frame { + msec: 240 + hash: "ffe486e038988cea3ff2ec6b2fcc516f" + } + Frame { + msec: 256 + hash: "1267aa3970ac861827e84c5da93523c7" + } + Frame { + msec: 272 + hash: "c5c0d501f102876a0b06f6d100f19a77" + } + Frame { + msec: 288 + hash: "b78207cb082771fc608a084c69c38399" + } + Frame { + msec: 304 + hash: "86cc014a4601ddf84478c8a0f44de7ed" + } + Frame { + msec: 320 + hash: "fbe34a8c894aa1c1ddb26171069c92f6" + } + Frame { + msec: 336 + hash: "c916a45687baa73e1023cdb03be42669" + } + Frame { + msec: 352 + hash: "1157f5c96e49fdc0afeb126453e19260" + } + Frame { + msec: 368 + hash: "c7528a6f57f4241dc2f5867436c44fd9" + } + Frame { + msec: 384 + hash: "054ac7e1cd4448fdd12f0175b3bdff90" + } + Frame { + msec: 400 + hash: "4ccf29d6ce92332683f6b49b89357579" + } + Frame { + msec: 416 + hash: "c46e42accdeba8b32bd4d6d43894c61c" + } + Frame { + msec: 432 + hash: "2ab2e8d8a3d58ac1c17932b9485cbc67" + } + Frame { + msec: 448 + hash: "347092c3876535e41e8368be2cd19aed" + } + Frame { + msec: 464 + hash: "311b1c44074b0e55a990e971f877c898" + } + Frame { + msec: 480 + hash: "198908af8468b4500fac85262eb82596" + } + Frame { + msec: 496 + hash: "202c33e301ad850a888223d3abdd06e6" + } + Frame { + msec: 512 + hash: "f3e0ce1386571c9e6be2656d402b4960" + } + Frame { + msec: 528 + hash: "b9c900bfedc7159ee2c0b0af6e66fc92" + } + Frame { + msec: 544 + hash: "f978850a8977c3c32e4ae9a43b7a3a8b" + } + Frame { + msec: 560 + hash: "637e5d9580d783864134b403e49cb47b" + } + Frame { + msec: 576 + hash: "8082c1e1eccb8588ebdbb739e31bda49" + } + Frame { + msec: 592 + hash: "c513f544df3d94223bb4fbf06befa2d7" + } + Frame { + msec: 608 + hash: "e7f589e64d3cd054349161971d4ef42e" + } + Frame { + msec: 624 + hash: "bb375339d4155f13c353bc90eb9b9cbf" + } + Frame { + msec: 640 + hash: "924368c60be4be048a19af942a8e402c" + } + Frame { + msec: 656 + hash: "c0142a6872bf5a445302952aaa6daa0d" + } + Frame { + msec: 672 + hash: "fab2a7e79b235f6432cd4c48740e3020" + } + Frame { + msec: 688 + hash: "fda751a9b20100007c33669bdb6f7f23" + } + Frame { + msec: 704 + hash: "d97d2d108dba9aefd36b0f6b2f160f23" + } + Frame { + msec: 720 + hash: "bf3683eb4308904de61fb3fb59802e37" + } + Frame { + msec: 736 + hash: "908f34ec52d59027f65c673c17077ca6" + } + Frame { + msec: 752 + hash: "19ae0ec52c077eff92451c9924be2c23" + } + Frame { + msec: 768 + hash: "898277481841e4c4f8992fd755784e5a" + } + Frame { + msec: 784 + hash: "9613da2dcdf470561d20a982777f50f6" + } + Frame { + msec: 800 + hash: "fdfc54fa3657be02c2ee65d787e8c7a5" + } + Frame { + msec: 816 + hash: "1d3b6cff6e62890db90213ebab88dca3" + } + Frame { + msec: 832 + hash: "713e9c0f768f6cc8cc6c78c72b41b47c" + } + Frame { + msec: 848 + hash: "9068d912a8d3e6e0b5b458c12ddad126" + } + Frame { + msec: 864 + hash: "e85192393e4911dbaf9c734d2e386bbf" + } + Frame { + msec: 880 + hash: "4f2374e6c8763e1e5b3b7cebdf5b8ebc" + } + Frame { + msec: 896 + hash: "986a32decb18065294356fb85953891e" + } + Frame { + msec: 912 + hash: "faa36d337589c59761814e3065874aa3" + } + Frame { + msec: 928 + hash: "9c823d92cd71932f0ad1d247fdd8c66e" + } + Frame { + msec: 944 + hash: "3ebcf592e427bcbc8a92dc1bee903845" + } + Frame { + msec: 960 + image: "follow.0.png" + } + Frame { + msec: 976 + hash: "b1a205f75f5ab7b69f4d9bd0582d7896" + } + Frame { + msec: 992 + hash: "0cf4ce09fd895a174271e3cb37c72de6" + } + Frame { + msec: 1008 + hash: "e6487b45fc20afc4c1a24c8669919611" + } + Frame { + msec: 1024 + hash: "fe2a4eb899611495fa5ad88b7c5f4c7e" + } + Frame { + msec: 1040 + hash: "07b880170d1ba41e4d1a1277e8184089" + } + Frame { + msec: 1056 + hash: "27afbfb4b961570f8844e05595b11d4f" + } + Frame { + msec: 1072 + hash: "1b6cfd4c2c2c007837cfb9746f44ec20" + } + Frame { + msec: 1088 + hash: "8f82c7f1cb2ded469a7cb3a0827e919e" + } + Frame { + msec: 1104 + hash: "d8581781550c21bc0fa6b75fc6de3f57" + } + Frame { + msec: 1120 + hash: "104a6c18b4a16732de9dba9bfb92eb5a" + } + Frame { + msec: 1136 + hash: "ebbdeb2de19644aeb41c03f852d1fc15" + } + Frame { + msec: 1152 + hash: "a8cc1328eb65fed5ca75d79c6e628ec1" + } + Frame { + msec: 1168 + hash: "a1192d371ffd3e9f8a23abca6a8b4d98" + } + Frame { + msec: 1184 + hash: "06b7749eace5d149bd35f668c4df9811" + } + Frame { + msec: 1200 + hash: "de1f7eb2c3224754a75d0a953ee24a76" + } + Frame { + msec: 1216 + hash: "1bc3c2cf2058ab5f8d491ad35605c6d7" + } + Frame { + msec: 1232 + hash: "4c2b7e3f7cad28a424f3fdb574d732b6" + } + Frame { + msec: 1248 + hash: "ebb9c07b34f4acd9ee2652324c81e5d1" + } + Frame { + msec: 1264 + hash: "fef63629bdae6f1d744633916c6b0852" + } + Frame { + msec: 1280 + hash: "aacb966d803ed6986db40e51d2a63dff" + } + Frame { + msec: 1296 + hash: "796bb7137a909d524b1cec022c1be6ea" + } + Frame { + msec: 1312 + hash: "d88526b472d9ba58b93f868a150154f3" + } + Frame { + msec: 1328 + hash: "d6a24e9f446565c0d0d0bf25db80e88e" + } + Frame { + msec: 1344 + hash: "08902af1f5ba7566f2fef79200ac0362" + } + Frame { + msec: 1360 + hash: "b655edf8bd25f5e05fcb1cce64aaad89" + } + Frame { + msec: 1376 + hash: "5f526a0e92c1846ca7099c5640208dd0" + } + Frame { + msec: 1392 + hash: "c354f31e4e75d6ccf4c284113c54377b" + } + Frame { + msec: 1408 + hash: "2f8143ead16b7c65c8f43469754c09dd" + } + Frame { + msec: 1424 + hash: "b486f4056d300e22860fa995b6f09f92" + } + Frame { + msec: 1440 + hash: "4a24f651b8ad911b04426a07b4663a3d" + } + Frame { + msec: 1456 + hash: "aad02861a66647d27ea3746d9b455e91" + } + Frame { + msec: 1472 + hash: "ce4225df7a187919c91cc2dd950e11f0" + } + Frame { + msec: 1488 + hash: "5479a97041b64406883100567df4b9b7" + } + Frame { + msec: 1504 + hash: "76e67f9c5b552f1ff47c3c7b23eb1b76" + } + Frame { + msec: 1520 + hash: "8c3e1d2fd58eaf2a8da16bb0349b1e5e" + } + Frame { + msec: 1536 + hash: "4642a396f4a4bb3b97845782e1d1ce93" + } + Frame { + msec: 1552 + hash: "4d3e8c9ea7c8c1407db564a3a6e430ff" + } + Frame { + msec: 1568 + hash: "e041300f1d2956f35baebed6c7c9c750" + } + Frame { + msec: 1584 + hash: "b20e241906a2b9e38b03c0991d21160e" + } + Frame { + msec: 1600 + hash: "cb5c32ad57d1931a69c20328f8f2d060" + } + Frame { + msec: 1616 + hash: "021ba4fc38e1652afeab73047e126a17" + } + Frame { + msec: 1632 + hash: "d27728f36491ba432e3655850402ee6b" + } + Frame { + msec: 1648 + hash: "20a87f4d9afd2039e44c2b5b539d0298" + } + Frame { + msec: 1664 + hash: "46c4016acfe390495307d3d64b93902d" + } + Frame { + msec: 1680 + hash: "a356b011266d901d7148e662393e5f72" + } + Frame { + msec: 1696 + hash: "43b4a8e0d73ab2c6be5db2b48c3e7013" + } + Frame { + msec: 1712 + hash: "b7a5bfbecabbf0f20b0e2c0959051b66" + } + Frame { + msec: 1728 + hash: "8eff269aeb6f3bc540dd8cf6491d53b8" + } + Frame { + msec: 1744 + hash: "9c524c30ef7cd6dbfb911ec1c75d0e32" + } + Frame { + msec: 1760 + hash: "a064e420983d68f2f2baca9ea9119236" + } + Frame { + msec: 1776 + hash: "99739628a95e72704e503ed6d1dea712" + } + Frame { + msec: 1792 + hash: "1f0f916ed7382f10c23eb63052377fe1" + } + Frame { + msec: 1808 + hash: "d99f731943018a50e8738bf638ca3b31" + } + Frame { + msec: 1824 + hash: "10182c1206e73d5a59b377f5d6061bef" + } + Frame { + msec: 1840 + hash: "a272abb9905b17e4bdd717db87514c11" + } + Frame { + msec: 1856 + hash: "81ffae766d85d829d7e16071ac44fcc1" + } + Frame { + msec: 1872 + hash: "4e2402d3eafa149d0b8ad9238c3b985d" + } + Frame { + msec: 1888 + hash: "70ad42fd0824ce00181514bac4b6b0f4" + } + Frame { + msec: 1904 + hash: "6d1ff46bd1606662fec47f14152bfd4a" + } + Frame { + msec: 1920 + image: "follow.1.png" + } + Frame { + msec: 1936 + hash: "9a37d437b9476375b3a34ac293a0789a" + } + Frame { + msec: 1952 + hash: "0a5fa0cd8bc22d274b00d32383ffc486" + } + Frame { + msec: 1968 + hash: "1a284b36906f0adcef2ed66c0cfb5a9d" + } + Frame { + msec: 1984 + hash: "049ca635405f3f88f85629f559919569" + } + Frame { + msec: 2000 + hash: "d8d3d7b55f2a04dbf187d2296e8da84a" + } + Frame { + msec: 2016 + hash: "57a04352e211d888d8182449b8f970e0" + } + Frame { + msec: 2032 + hash: "48229fc62e5ea19c54f961d3b0bb5b26" + } + Frame { + msec: 2048 + hash: "8c5d645cdbbb343789fc6ac27482b76e" + } + Frame { + msec: 2064 + hash: "3c4d50a07778ae5105f2e7514bff37ca" + } + Frame { + msec: 2080 + hash: "ce97d094ede43b3e74e81fa63e04dad7" + } + Frame { + msec: 2096 + hash: "2b2e4e9681bbc672b51148c10b183ec8" + } + Frame { + msec: 2112 + hash: "0421ac4f53c050bfffb2c8de16aafd46" + } + Frame { + msec: 2128 + hash: "953bdaacefe42a841bf1cdd7da3b442a" + } + Frame { + msec: 2144 + hash: "7209f7d812af5bdbca4b15f303cb5ff7" + } + Frame { + msec: 2160 + hash: "3f64635e9c43b8b6a402c5d6fe26e648" + } + Frame { + msec: 2176 + hash: "92926b4cf66b15cd0ddb468f2bd8bd62" + } + Frame { + msec: 2192 + hash: "ee0810fe7509d2d61d9306908816bba4" + } + Frame { + msec: 2208 + hash: "55249aae2bb6db6c363ecb4b89f56270" + } + Frame { + msec: 2224 + hash: "73ea66c3c61e8105ac61d26c8cfdbba3" + } + Frame { + msec: 2240 + hash: "f75b56ced71167a1bc1800b0d2f0f249" + } + Frame { + msec: 2256 + hash: "e0d09e7a8007bfbc1efd4bd89f49847a" + } + Frame { + msec: 2272 + hash: "159e98e8340375c6700015288660cbf8" + } + Frame { + msec: 2288 + hash: "b7aa76fced5c78eb8e55ce9f36d081e2" + } + Frame { + msec: 2304 + hash: "ac87e65a58914c1984b2dc95cf6de76d" + } + Frame { + msec: 2320 + hash: "7a0131b0a9ec395a2286438625881bee" + } + Frame { + msec: 2336 + hash: "84da8fd2b435b3ac9bad3350cd3a9ec0" + } + Frame { + msec: 2352 + hash: "1ed376000e60129b4bcf06ea73cb5819" + } + Frame { + msec: 2368 + hash: "8c713e210143ab5f19bdddd918f86ef3" + } + Frame { + msec: 2384 + hash: "269b595c5691747b56be58d5b92ae497" + } + Frame { + msec: 2400 + hash: "486d80316c88da4adc736df72fc86f45" + } + Frame { + msec: 2416 + hash: "b67cc78a3bfcd026264cfb9b7146c4d5" + } + Frame { + msec: 2432 + hash: "9d2cdecf3e9f067e68b81b202c8f62b2" + } + Frame { + msec: 2448 + hash: "02748271316f8382f4788322fda807c1" + } + Frame { + msec: 2464 + hash: "669986c581c162b8d3160336b92b2479" + } + Frame { + msec: 2480 + hash: "5dc604aaa95f45eba0dfc7aa3a73bca4" + } + Frame { + msec: 2496 + hash: "2199d6e809fc1e1879861fbbd63974e8" + } + Frame { + msec: 2512 + hash: "335a5561620f779a4fd0c1f33da2fc05" + } + Frame { + msec: 2528 + hash: "3e312b8de56c902ca20aba259c8559b2" + } + Frame { + msec: 2544 + hash: "37634addfe0cb2efdd9d6a1a134fae1e" + } + Frame { + msec: 2560 + hash: "a3cdb1d331845e268e393dd493a71613" + } + Frame { + msec: 2576 + hash: "ccfb90a921e74f4e172ea1fba8c38eb5" + } + Frame { + msec: 2592 + hash: "370f60a35849b7a8221f9474cbdaa201" + } + Frame { + msec: 2608 + hash: "e1b8d1d7298a3d3ade82493fb6f99909" + } + Frame { + msec: 2624 + hash: "e1b8d1d7298a3d3ade82493fb6f99909" + } + Frame { + msec: 2640 + hash: "74ecfaced66f630d1863c04000fa7f01" + } + Frame { + msec: 2656 + hash: "74ecfaced66f630d1863c04000fa7f01" + } + Frame { + msec: 2672 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 2688 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 2704 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 2720 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 2736 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 2752 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 2768 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 2784 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 2800 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2816 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2832 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2848 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2864 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2880 + image: "follow.2.png" + } + Frame { + msec: 2896 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 2912 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 2928 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 2944 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 2960 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 2976 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 2992 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3008 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3024 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3040 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3056 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3072 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3088 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3104 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3120 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3136 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3152 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3168 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3184 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3200 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3216 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3232 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3248 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3264 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3280 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3296 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3312 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3328 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 3344 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3360 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3376 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3392 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3408 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3424 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3440 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3456 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3472 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3488 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3504 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3520 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 3536 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 3552 + hash: "60b86cce6d76291148c7c49a5eabcf55" + } + Frame { + msec: 3568 + hash: "b0dadf051b5b328f56fab390a2c33052" + } + Frame { + msec: 3584 + hash: "b6b75a9723b46aa072bf7c779dc84e64" + } + Frame { + msec: 3600 + hash: "ef4e8b36b5afc762e1f8f714eee61240" + } + Frame { + msec: 3616 + hash: "a322a2446fd3506c243766233ec9303e" + } + Frame { + msec: 3632 + hash: "5723527da987b29f74502e5abd25a5f7" + } + Frame { + msec: 3648 + hash: "d9f98fa248099936c6307457c935326f" + } + Frame { + msec: 3664 + hash: "54224ce16b717d0accb9cca7dc5e94d3" + } + Frame { + msec: 3680 + hash: "cb036f8c7e3c464d0210fca8b21b2d5f" + } + Frame { + msec: 3696 + hash: "729ff15f4b129e1bd7a522007c96d49b" + } + Frame { + msec: 3712 + hash: "6c3791f76fbed468ce6e23938d321874" + } + Frame { + msec: 3728 + hash: "970eebc8fa4fd8d92db49450ed3474a7" + } + Frame { + msec: 3744 + hash: "4c97641854bb6997fc5106d7981e4ac9" + } + Frame { + msec: 3760 + hash: "adb4c29247d0bf785be36ccdf74f4293" + } + Frame { + msec: 3776 + hash: "5133846ed6886846426495aba011ab6f" + } + Frame { + msec: 3792 + hash: "010771e4dea5c93de852bead35fc6a1e" + } + Frame { + msec: 3808 + hash: "6115a50835cbc196ae322ad2727d1b68" + } + Frame { + msec: 3824 + hash: "4e37fde35f4f577c3b62881fa526e369" + } + Frame { + msec: 3840 + image: "follow.3.png" + } + Frame { + msec: 3856 + hash: "1ea7000fd392a0799775b6783ffe332c" + } + Frame { + msec: 3872 + hash: "40e69b98954b40ce8dc78d60eac882d7" + } + Frame { + msec: 3888 + hash: "690b93596e7fb7c1f7de4ca81b96ce48" + } + Frame { + msec: 3904 + hash: "6e8910061829e1111227a9854e18e742" + } + Frame { + msec: 3920 + hash: "f6f60ef03e3f2829510c325effde9f39" + } + Frame { + msec: 3936 + hash: "6c3d2d3903cd20969f8f2994f6a22592" + } + Frame { + msec: 3952 + hash: "10febc71c9120a591510e123955424c1" + } + Frame { + msec: 3968 + hash: "c06b52a3814791a56fc2cefa1544a693" + } + Frame { + msec: 3984 + hash: "ca3a6e577490b5e88cf0c3d63bd69b76" + } + Frame { + msec: 4000 + hash: "a4ebd4f687d38bd803aa61fc247e88e9" + } + Frame { + msec: 4016 + hash: "099b8d7fea937bba6092a5c8ad1cc395" + } + Frame { + msec: 4032 + hash: "c04384eb7d5c172a529d682ae7e916bf" + } + Frame { + msec: 4048 + hash: "d0131c92bd3a2a7fa8cd83e3818370ed" + } + Frame { + msec: 4064 + hash: "62e721f0344142fb7742675f644748f8" + } + Frame { + msec: 4080 + hash: "5bddfcb4cb01efa0dc8603f3c4f4f553" + } + Frame { + msec: 4096 + hash: "d31e44ad6cdfbd4076c66d41bb1d957e" + } + Frame { + msec: 4112 + hash: "35126d01091d50a41dd073d2a5ae974a" + } + Frame { + msec: 4128 + hash: "2c876aaf36e4d2a8d94bf3c3f4b934eb" + } + Frame { + msec: 4144 + hash: "f75683d97c9d1f33a918c68f4651f31b" + } + Frame { + msec: 4160 + hash: "f372de89a29d19b5c234f39a8ce85ed2" + } + Frame { + msec: 4176 + hash: "fe2cd973de16bf92c552829d89332048" + } + Frame { + msec: 4192 + hash: "bbcb60bd8b845e8fd2c885d3f42d9a91" + } + Frame { + msec: 4208 + hash: "28addd32d7c28198425d41f42f1f7f38" + } + Frame { + msec: 4224 + hash: "82cee6bac4d343adb86d02836728ccd7" + } + Frame { + msec: 4240 + hash: "b0eeb40c5f7e7e5bb17566772686c8df" + } + Frame { + msec: 4256 + hash: "e5372f9fe3dbe6b111da81de6e2088b8" + } + Frame { + msec: 4272 + hash: "d6e476458ad03a13c7f14bdb2b530394" + } + Frame { + msec: 4288 + hash: "4a5185a2cf033ca6f9250ab9e995dc7a" + } + Frame { + msec: 4304 + hash: "6fd086e35b33ca714f31c1a50f64ccba" + } + Frame { + msec: 4320 + hash: "ae8cae69a702811a897e7d5790c806cc" + } + Frame { + msec: 4336 + hash: "073e2e1af434447c3000b03e3a89925a" + } + Frame { + msec: 4352 + hash: "3c75c7586c1dca2fd21266395ccc8ac4" + } + Frame { + msec: 4368 + hash: "aa36ac379ac9953bd165b5164cd047da" + } + Frame { + msec: 4384 + hash: "09d6ab311429cfe29a68c428669b5d5a" + } + Frame { + msec: 4400 + hash: "11ebcb0a744bc3faa746560d9c1a824d" + } + Frame { + msec: 4416 + hash: "aa01ba99122f89bff8fc45ef88326f6a" + } + Frame { + msec: 4432 + hash: "6980292ba8a4bf8ead3581e5899f5d78" + } + Frame { + msec: 4448 + hash: "65fa1a0fe53b9a0580c14e96d42fe993" + } + Frame { + msec: 4464 + hash: "7837c0a533839f94629be4e64294b89f" + } + Frame { + msec: 4480 + hash: "5edbf632047ae4130f580e4a0ece8e57" + } + Frame { + msec: 4496 + hash: "0a5fdc57898cb56f00a76ecaa3a6b9e0" + } + Frame { + msec: 4512 + hash: "58d1b36e738042af44dab04a8c842259" + } + Frame { + msec: 4528 + hash: "2efb1f742d7f823d13b9724c1c10ce1a" + } + Frame { + msec: 4544 + hash: "e0286eb0b3fbb17e422554a8ef25489c" + } + Frame { + msec: 4560 + hash: "8252caa2841f07d29802a7b822388253" + } + Frame { + msec: 4576 + hash: "eaabd4b3610c0bcbbdc113f86bc52e6c" + } + Frame { + msec: 4592 + hash: "55b17d049e1c791d33094f64717bca06" + } + Frame { + msec: 4608 + hash: "1bd607f6d0658f46b1f0df51e8a9a9fe" + } + Frame { + msec: 4624 + hash: "4a52ea4de14098978931155f11168f68" + } + Frame { + msec: 4640 + hash: "343df8fb45e1e70183bb61a1111909a5" + } + Frame { + msec: 4656 + hash: "bcf1363d9912a3d626ef933387b4e01b" + } + Frame { + msec: 4672 + hash: "67709ea579481537e532120de35619b2" + } + Frame { + msec: 4688 + hash: "a7542255a10a120812880b1243bd573d" + } + Frame { + msec: 4704 + hash: "b4f3e597e489d32a473bb2ad6bb92fc4" + } + Frame { + msec: 4720 + hash: "f0df46d1b819edda5a616e858ed9171c" + } + Frame { + msec: 4736 + hash: "2416564198b4b853d9c4f5ad55ee5db5" + } + Frame { + msec: 4752 + hash: "342e5adcd2fca99c88c33cd8b56b8650" + } + Frame { + msec: 4768 + hash: "01806799adce1d0069cfdd739f383a7f" + } + Frame { + msec: 4784 + hash: "c045fdefdd4606d2c68c8cde2a7a40f4" + } + Frame { + msec: 4800 + image: "follow.4.png" + } + Frame { + msec: 4816 + hash: "c7371c0594fb9f4de0a7f8a3cdce061a" + } + Frame { + msec: 4832 + hash: "6df0c2a27c672e36a3d7eb5b4e0c46bf" + } + Frame { + msec: 4848 + hash: "97fa050a5790b1f722d25dbee9efba95" + } + Frame { + msec: 4864 + hash: "85c26ed45e79793fc5b7521a8157d3a2" + } + Frame { + msec: 4880 + hash: "9ff5d272ec8deed3e70164b78bc425c6" + } + Frame { + msec: 4896 + hash: "d1e3f6d51d6b8e96261b902e6f88576d" + } + Frame { + msec: 4912 + hash: "02c12e50ed6b7111f301e142a2fbc5db" + } + Frame { + msec: 4928 + hash: "5177873aa73342ada32d7ebfe3f26e0e" + } + Frame { + msec: 4944 + hash: "05d0364f67f317ee617f1a64d9543fe2" + } + Frame { + msec: 4960 + hash: "20e50922d7763c7572776fc98d0e007b" + } + Frame { + msec: 4976 + hash: "f449eb14e0c0e08a79a220cb13551c4f" + } + Frame { + msec: 4992 + hash: "defe5fa356688a25ed2b8174d9baf2ce" + } + Frame { + msec: 5008 + hash: "f1697f95d67a0a15088c3f934dfc466f" + } + Frame { + msec: 5024 + hash: "7a962dad8227d367b4af7dee6ea09c20" + } + Frame { + msec: 5040 + hash: "49a806b0bee9e3145395fb68cb85dbaf" + } + Frame { + msec: 5056 + hash: "d0e4ffd3e12dd4b8e5553e613119ef86" + } + Frame { + msec: 5072 + hash: "41270d843d00eaabf2f95f051541013e" + } + Frame { + msec: 5088 + hash: "e8fd158c923d389a2d87db0023522934" + } + Frame { + msec: 5104 + hash: "9cfa7783d37010c10271d680d205ebc4" + } + Frame { + msec: 5120 + hash: "5e81c936f9627cf537f96a1674c920be" + } + Frame { + msec: 5136 + hash: "28679a61a44bf0d81d6a93d8ea301b97" + } + Frame { + msec: 5152 + hash: "ef41d71b99f078abe8a2a8326ed236c9" + } + Frame { + msec: 5168 + hash: "b0c77c16e9d13360992d3781d389a773" + } + Frame { + msec: 5184 + hash: "fe053081bc92e2a16322e6839749c49c" + } + Frame { + msec: 5200 + hash: "fdde556b8d7b31510b9b07686e3bf81f" + } + Frame { + msec: 5216 + hash: "f3f9c7ad55f4cabdcc9ff4a515163523" + } + Frame { + msec: 5232 + hash: "8ae1b429bcb1d7698efaca4abbe91d3f" + } + Frame { + msec: 5248 + hash: "c741a05290271260b8b916faa480e3aa" + } + Frame { + msec: 5264 + hash: "eebc4a70e557084577fb93f4b71da41c" + } + Frame { + msec: 5280 + hash: "4926f2fa2728d80f0799e67f06ae8be3" + } + Frame { + msec: 5296 + hash: "cf8ea67beade2f31d6ddd257578ef191" + } + Frame { + msec: 5312 + hash: "d041cad9a659449da739470ce03d6152" + } + Frame { + msec: 5328 + hash: "eae75c3364a13697c79aec42c221181d" + } + Frame { + msec: 5344 + hash: "2db70310d6a3b4900e749975e52d5f78" + } + Frame { + msec: 5360 + hash: "609838796118ab89566fe2fe664dfcb4" + } + Frame { + msec: 5376 + hash: "ae66ff91af5924e99231a811d0d00549" + } + Frame { + msec: 5392 + hash: "2b5ba8d8c340a92d4d6ef76dbd88c4b8" + } + Frame { + msec: 5408 + hash: "6b4ce7512194d65b7c8679822cb58274" + } + Frame { + msec: 5424 + hash: "36a58e3b3a057969c8a6b1ba4e704ec7" + } + Frame { + msec: 5440 + hash: "a2164ae8f60b27534392077358e057e2" + } + Frame { + msec: 5456 + hash: "9ceb838f32b76cc267283ef829a64f95" + } + Frame { + msec: 5472 + hash: "a372e42839d42e9f7dac83ae3b845be4" + } + Frame { + msec: 5488 + hash: "9e1226a6cb6585694a0b44b356f0b6d2" + } + Frame { + msec: 5504 + hash: "7bdfe1d332fdd3b8b241a3fb9dafa584" + } + Frame { + msec: 5520 + hash: "e7f3ef39c35f7bca75ae049a25790509" + } + Frame { + msec: 5536 + hash: "5bfcd4c96095d66825df5d94f8936659" + } + Frame { + msec: 5552 + hash: "d47fc61cedde2748d1c35d65c4278ce9" + } + Frame { + msec: 5568 + hash: "ee86ff1ea3a447ebf749a5b31ff147c9" + } + Frame { + msec: 5584 + hash: "05a3b141e33596e88ff3a6a3e09b13b9" + } + Frame { + msec: 5600 + hash: "2294c4c9f84c4398918524c41fe08317" + } + Frame { + msec: 5616 + hash: "2e19dc61944aa7671ac18303949e1c9e" + } + Frame { + msec: 5632 + hash: "37b4864ed528a3be221d7abb4106ec3a" + } + Frame { + msec: 5648 + hash: "c2bf99e089bc984abea63b8b43270859" + } + Frame { + msec: 5664 + hash: "c2bf99e089bc984abea63b8b43270859" + } + Frame { + msec: 5680 + hash: "d8de63e15f1f6e9c0cf0dd43afa03c42" + } + Frame { + msec: 5696 + hash: "3643a50c30b6d6f9b724155e49db7276" + } + Frame { + msec: 5712 + hash: "582e871460fe3056f7f3df97d5939d69" + } + Frame { + msec: 5728 + hash: "e46da1072974efc1c4df89d9c6243609" + } + Frame { + msec: 5744 + hash: "705ac82bb7a03eb5843aae7292739851" + } + Frame { + msec: 5760 + image: "follow.5.png" + } + Frame { + msec: 5776 + hash: "b2949af515524933f740057cae6d8c40" + } + Frame { + msec: 5792 + hash: "72a3526dbfeb42935a737f7876c86499" + } + Frame { + msec: 5808 + hash: "43907b91dec1412d0e6c8b53cec8e06f" + } + Frame { + msec: 5824 + hash: "66db45ca42d42e8a6eb279b892493af9" + } + Frame { + msec: 5840 + hash: "1f2d69898b90d344f337ac37a000e797" + } + Frame { + msec: 5856 + hash: "9c09edc9541d69e7565ef05fbe58fadf" + } + Frame { + msec: 5872 + hash: "0d68b6d05150981eff443cd7437b3d95" + } + Frame { + msec: 5888 + hash: "85558e393a1e0483ba27844cf409af47" + } + Frame { + msec: 5904 + hash: "83a73b6b3eb1052a9b1a12fb78326b26" + } + Frame { + msec: 5920 + hash: "4839882ecc497916b4ac964a5cc71d1b" + } + Frame { + msec: 5936 + hash: "28d6f5066f186a0d9ab7f4781374d3eb" + } + Frame { + msec: 5952 + hash: "d89148926c6dd636de953a55082e50f1" + } + Frame { + msec: 5968 + hash: "dbab902e252561849dba5551fc8f07d3" + } + Frame { + msec: 5984 + hash: "84a3a891fbbb1a0fca24324a3ea10c6a" + } + Frame { + msec: 6000 + hash: "64563bb68129f527b1c33c0d9a543f09" + } + Frame { + msec: 6016 + hash: "64563bb68129f527b1c33c0d9a543f09" + } + Frame { + msec: 6032 + hash: "7f3ae8ac99bf202414b03e9b33473044" + } + Frame { + msec: 6048 + hash: "7f3ae8ac99bf202414b03e9b33473044" + } + Frame { + msec: 6064 + hash: "7fbdf6396050da5b8945f1111c2ca973" + } + Frame { + msec: 6080 + hash: "5bf4fa18f24fc221685234a92c4cafb6" + } + Frame { + msec: 6096 + hash: "5bf4fa18f24fc221685234a92c4cafb6" + } + Frame { + msec: 6112 + hash: "e1b8d1d7298a3d3ade82493fb6f99909" + } + Frame { + msec: 6128 + hash: "6320b7b0bd1926c625f914d30f1f1fd9" + } + Frame { + msec: 6144 + hash: "74ecfaced66f630d1863c04000fa7f01" + } + Frame { + msec: 6160 + hash: "74ecfaced66f630d1863c04000fa7f01" + } + Frame { + msec: 6176 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 6192 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 6208 + hash: "8d359f95ee869714bb3972986637642d" + } + Frame { + msec: 6224 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 6240 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 6256 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 6272 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 6288 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 6304 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6320 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6336 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6352 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6368 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6384 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6400 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6416 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6432 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6448 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6464 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6480 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6496 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6512 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6528 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6544 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6560 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6576 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6592 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6608 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6624 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6640 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6656 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6672 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6688 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6704 + hash: "20dd4407adca55737dd4231405c38cff" + } +} diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.0.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.0.png Binary files differnew file mode 100644 index 0000000..d173ee9 --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.0.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.1.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.1.png Binary files differnew file mode 100644 index 0000000..09b7bda --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.1.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.2.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.2.png Binary files differnew file mode 100644 index 0000000..b1d109e --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.2.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.3.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.3.png Binary files differnew file mode 100644 index 0000000..5cdcafb --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.3.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.4.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.4.png Binary files differnew file mode 100644 index 0000000..93e1536 --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.4.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.5.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.5.png Binary files differnew file mode 100644 index 0000000..b27cc9f --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.5.png diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.qml b/tests/auto/declarative/visual/qmlspringfollow/data/follow.qml new file mode 100644 index 0000000..f87372a --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.qml @@ -0,0 +1,1691 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "ea677d128f47343d81a081c438aa2f6c" + } + Frame { + msec: 32 + hash: "ea677d128f47343d81a081c438aa2f6c" + } + Frame { + msec: 48 + hash: "403e130b7cf0a41d8348a227293d98d1" + } + Frame { + msec: 64 + hash: "d2250ca93235b6a087b5e582f7e941d6" + } + Frame { + msec: 80 + hash: "3e95bdb5546de8ed7bb33de704d2890e" + } + Frame { + msec: 96 + hash: "438612a44780d6587f99a44c943eb60f" + } + Frame { + msec: 112 + hash: "6e840f3afd93a11034e128d70f76e642" + } + Frame { + msec: 128 + hash: "abbb1839aa7989e89d72368c501c5a12" + } + Frame { + msec: 144 + hash: "eefe846a36bf21929d83241b117d98b5" + } + Frame { + msec: 160 + hash: "ab39c7386555dc0a0edbd1e021fa3d93" + } + Frame { + msec: 176 + hash: "8cd9ac8226579bfd1d653ad5b9ff3302" + } + Frame { + msec: 192 + hash: "976c950140ce9f793884daa8d032c8fb" + } + Frame { + msec: 208 + hash: "c49ea9cb59a4ced0572a251c1ed53011" + } + Frame { + msec: 224 + hash: "d84a156021c5f61cb49f60cba5c0b7b7" + } + Frame { + msec: 240 + hash: "d47f16922533e186844448ad4540cc9d" + } + Frame { + msec: 256 + hash: "be16f676e94426dedc747de959f41658" + } + Frame { + msec: 272 + hash: "abe13e483ca63c485f8c66f6edbbc368" + } + Frame { + msec: 288 + hash: "71294e92418a4a586328a510916942e2" + } + Frame { + msec: 304 + hash: "2f201846d62d8885c8d4659c9622e711" + } + Frame { + msec: 320 + hash: "bfeb1da5c3ab5bda2def25682ae7f113" + } + Frame { + msec: 336 + hash: "00767a8b29a0de270f2485e430332c0b" + } + Frame { + msec: 352 + hash: "df1bac2a1f24ab2669c156f86ff3949a" + } + Frame { + msec: 368 + hash: "755a39579c403923c93a4a962e135374" + } + Frame { + msec: 384 + hash: "e176ba5703d6bd80f0de1a88f02ac678" + } + Frame { + msec: 400 + hash: "51d44c2913947f44708615b5e38b2bd3" + } + Frame { + msec: 416 + hash: "72a6d96e70ffd20c12139306103b4f4e" + } + Frame { + msec: 432 + hash: "96f82039287cbf4b403298436421c778" + } + Frame { + msec: 448 + hash: "0e86e386afdf7649dfdcd489137ad4ea" + } + Frame { + msec: 464 + hash: "8e78f10e410638680810c65e5bddd665" + } + Frame { + msec: 480 + hash: "765d52574fa75873e97f2e9b2a44e7a0" + } + Frame { + msec: 496 + hash: "a72e4be872da024c8af9b914d8baabc2" + } + Frame { + msec: 512 + hash: "3689c9af15bb91d4ae5b570ecffecfdd" + } + Frame { + msec: 528 + hash: "8147683fb527fdb2f71356e85abae6e9" + } + Frame { + msec: 544 + hash: "853f9220075a3782cf7fcc0bb8715263" + } + Frame { + msec: 560 + hash: "61b08b1ac4a0f8edcaa9984db4c2ba26" + } + Frame { + msec: 576 + hash: "9656cb5164be56f449f1f82b1555e6de" + } + Frame { + msec: 592 + hash: "17290bf0cb6f35ee421286e01bd47e98" + } + Frame { + msec: 608 + hash: "6f0d0cec511f59ff1e96cdbd9444eaf6" + } + Frame { + msec: 624 + hash: "d4bcf568361214c0eb8fa3998bbf1480" + } + Frame { + msec: 640 + hash: "41adf355d26d44b157f59d9fcb2e1c69" + } + Frame { + msec: 656 + hash: "e5e19a9529a4e7fc1f680fec3505e78f" + } + Frame { + msec: 672 + hash: "c5340333b27b030404dfb7f84c885f5a" + } + Frame { + msec: 688 + hash: "0d78d4df108698cbf01f85b543240a23" + } + Frame { + msec: 704 + hash: "3100a83fa0217e229bfe5b1014c85bd0" + } + Frame { + msec: 720 + hash: "d48a5e885a7ffe2164561a5e8db49af2" + } + Frame { + msec: 736 + hash: "f53ff65dde7676e467569cb4046c6151" + } + Frame { + msec: 752 + hash: "dfe16b338d9afba04ba20fe27e2f3871" + } + Frame { + msec: 768 + hash: "da60124324209ccb2bd0e025d0484ca5" + } + Frame { + msec: 784 + hash: "bb7c9e645bead664dfbb3b0b2d6350a5" + } + Frame { + msec: 800 + hash: "b4229201bd33515da83605b3e8c61f3e" + } + Frame { + msec: 816 + hash: "65d73e930b2117714e6020f3580b9c5f" + } + Frame { + msec: 832 + hash: "7635a572c1cedd66c27da128de4596aa" + } + Frame { + msec: 848 + hash: "9068d912a8d3e6e0b5b458c12ddad126" + } + Frame { + msec: 864 + hash: "e935bc3503eefd745f0086417322ccd0" + } + Frame { + msec: 880 + hash: "fad1a3e6f64818638e6d866af9554f72" + } + Frame { + msec: 896 + hash: "c80cd40121ad2b365a58b919db910fdb" + } + Frame { + msec: 912 + hash: "e9c7e153a429fc2b7a7afcbe69f48291" + } + Frame { + msec: 928 + hash: "f848e529d7ed9170c107556ffff2c7da" + } + Frame { + msec: 944 + hash: "5176b37586cd38607f7324ea5fe4a84e" + } + Frame { + msec: 960 + image: "follow.0.png" + } + Frame { + msec: 976 + hash: "13db39c0f6b2d2633fc6e9e25363649c" + } + Frame { + msec: 992 + hash: "709b27d74b5d63173dcc47315b6a98ad" + } + Frame { + msec: 1008 + hash: "3f1a3ec8c35f18109b00f596dddb2dee" + } + Frame { + msec: 1024 + hash: "7b5a87922adf288a3479c5772b87dc05" + } + Frame { + msec: 1040 + hash: "389a4ceae2a2c2b65d8b8f4a14e302fe" + } + Frame { + msec: 1056 + hash: "5e734ba84842d9ebacedea131c2cea43" + } + Frame { + msec: 1072 + hash: "2ca1665bc6e8fcc79fa3ed27d063ef2d" + } + Frame { + msec: 1088 + hash: "a133bcf3571762dac5ed8093835d0f32" + } + Frame { + msec: 1104 + hash: "100e33528137240152983158c89831c2" + } + Frame { + msec: 1120 + hash: "1b327165fcce6d61577e2c1715a77efe" + } + Frame { + msec: 1136 + hash: "724352ffdfa1a7e8aa0ffaa138706b14" + } + Frame { + msec: 1152 + hash: "c13dbf3fdd202d6fdb007622e2f3c9ee" + } + Frame { + msec: 1168 + hash: "50517cf68a3f6f8c84fc6520500ccf00" + } + Frame { + msec: 1184 + hash: "8fd426597afbc940a3778870118e2541" + } + Frame { + msec: 1200 + hash: "67434d0c791fc4c2761c1869a6cee081" + } + Frame { + msec: 1216 + hash: "3397a81fa89f46f55b7716325a722c82" + } + Frame { + msec: 1232 + hash: "7207230d6be72411aadc3064af25dcc6" + } + Frame { + msec: 1248 + hash: "709bc2b0d2ca7fa5e8b33e4a17a130bd" + } + Frame { + msec: 1264 + hash: "0b721aaffded67b507e896c2c2d9c6f2" + } + Frame { + msec: 1280 + hash: "a473144a3d3af4dfd27dd17eed95e050" + } + Frame { + msec: 1296 + hash: "264760a5a9ce988ce880084161dbc983" + } + Frame { + msec: 1312 + hash: "ea1ebaa56e24e0ca23723539ad8a18cf" + } + Frame { + msec: 1328 + hash: "d85e695424a7883354b9e807d0dca75a" + } + Frame { + msec: 1344 + hash: "2a5beec661122970528b4589c6a30184" + } + Frame { + msec: 1360 + hash: "c6b398270707e794cb41ac6dfc413559" + } + Frame { + msec: 1376 + hash: "5f0496a3db352ac7d68d37d0b40821de" + } + Frame { + msec: 1392 + hash: "60b6cf54208fe05cad90a5475ba44b6f" + } + Frame { + msec: 1408 + hash: "b375733a02dba8d856e6a54962701728" + } + Frame { + msec: 1424 + hash: "dca9a423a2b43c9edf294f707ffeb3e9" + } + Frame { + msec: 1440 + hash: "43d04fee9d2fbe1807f4d6b599a227fd" + } + Frame { + msec: 1456 + hash: "169446930a064cabd9dfc8cce5669967" + } + Frame { + msec: 1472 + hash: "3dc4b0e80ae663022ae9acda781cdb10" + } + Frame { + msec: 1488 + hash: "fc7b862abfc6f1694cbbe00ede57d883" + } + Frame { + msec: 1504 + hash: "76e67f9c5b552f1ff47c3c7b23eb1b76" + } + Frame { + msec: 1520 + hash: "8c3e1d2fd58eaf2a8da16bb0349b1e5e" + } + Frame { + msec: 1536 + hash: "4642a396f4a4bb3b97845782e1d1ce93" + } + Frame { + msec: 1552 + hash: "4d3e8c9ea7c8c1407db564a3a6e430ff" + } + Frame { + msec: 1568 + hash: "e041300f1d2956f35baebed6c7c9c750" + } + Frame { + msec: 1584 + hash: "a900c3551c5d3bbaf1ce6e0372e69a70" + } + Frame { + msec: 1600 + hash: "cb5c32ad57d1931a69c20328f8f2d060" + } + Frame { + msec: 1616 + hash: "021ba4fc38e1652afeab73047e126a17" + } + Frame { + msec: 1632 + hash: "d27728f36491ba432e3655850402ee6b" + } + Frame { + msec: 1648 + hash: "20a87f4d9afd2039e44c2b5b539d0298" + } + Frame { + msec: 1664 + hash: "e03dfc3f89c5e4f6a31bc4b624b249f4" + } + Frame { + msec: 1680 + hash: "e52c42cbc1c362bd77f72b71dedc34da" + } + Frame { + msec: 1696 + hash: "b3e15bd0354fa84d13f1f9163be12b73" + } + Frame { + msec: 1712 + hash: "eb6517d72b7943654215ad46e8b165a9" + } + Frame { + msec: 1728 + hash: "1be17ea113f704b1a3a1fda63d10c23a" + } + Frame { + msec: 1744 + hash: "f288d004dd459b90acf9e70045de51bc" + } + Frame { + msec: 1760 + hash: "750d6c78b8e3e3311935faacfe37c44f" + } + Frame { + msec: 1776 + hash: "08a12d133eab365b639204e6b327143b" + } + Frame { + msec: 1792 + hash: "4641237f37091b2aebfb17255999f8e1" + } + Frame { + msec: 1808 + hash: "389c3a75932dc695f3aa323569cf0ebe" + } + Frame { + msec: 1824 + hash: "4f03b3b47db131f4604b1f2487303012" + } + Frame { + msec: 1840 + hash: "b29afbba738730b089f257a133874540" + } + Frame { + msec: 1856 + hash: "04b3014bf60cc25920724d0c18424830" + } + Frame { + msec: 1872 + hash: "1f09172690083f6051d4807c287d64a4" + } + Frame { + msec: 1888 + hash: "fb32eec375d5f1abd7f651f022df8d20" + } + Frame { + msec: 1904 + hash: "251e61f514db494cb47ae18234abd9a4" + } + Frame { + msec: 1920 + image: "follow.1.png" + } + Frame { + msec: 1936 + hash: "8acec26bf4ab5f93ccc5d77d4866826a" + } + Frame { + msec: 1952 + hash: "2490ddc2c74c525ecc51ffc83357611e" + } + Frame { + msec: 1968 + hash: "f7f67dc93d3ff7aad6df8917f7f6f285" + } + Frame { + msec: 1984 + hash: "d034044a9e2f2712aa1f0c10a5e4355f" + } + Frame { + msec: 2000 + hash: "7760794170cfbb7ca93aebf12874a603" + } + Frame { + msec: 2016 + hash: "a680699dda95e5a59dcf310cf5671d6e" + } + Frame { + msec: 2032 + hash: "df3a0ffa7089defb0f3db08f4f34cba6" + } + Frame { + msec: 2048 + hash: "4e0ce20d81cd4acad3270bfe5a650d18" + } + Frame { + msec: 2064 + hash: "1f46926406a5f0bb33159bba6ef740f3" + } + Frame { + msec: 2080 + hash: "321e4cbbb7f4fbe748a2fe45db13d184" + } + Frame { + msec: 2096 + hash: "185c0357a585aafabe5dbc3573ea135d" + } + Frame { + msec: 2112 + hash: "0421ac4f53c050bfffb2c8de16aafd46" + } + Frame { + msec: 2128 + hash: "953bdaacefe42a841bf1cdd7da3b442a" + } + Frame { + msec: 2144 + hash: "3f64635e9c43b8b6a402c5d6fe26e648" + } + Frame { + msec: 2160 + hash: "3f64635e9c43b8b6a402c5d6fe26e648" + } + Frame { + msec: 2176 + hash: "92926b4cf66b15cd0ddb468f2bd8bd62" + } + Frame { + msec: 2192 + hash: "fe78f7f7ecd3242aa75f3590884e0f44" + } + Frame { + msec: 2208 + hash: "55249aae2bb6db6c363ecb4b89f56270" + } + Frame { + msec: 2224 + hash: "73ea66c3c61e8105ac61d26c8cfdbba3" + } + Frame { + msec: 2240 + hash: "ac77e83366b34b7375ad7c150ccebd01" + } + Frame { + msec: 2256 + hash: "b0a94b3ab562b469c622c4c7438f2c04" + } + Frame { + msec: 2272 + hash: "73ab6f0a829f92533bbabef8b8097d5d" + } + Frame { + msec: 2288 + hash: "0c2301bd28a080f113bd786b6875bf53" + } + Frame { + msec: 2304 + hash: "026811ab3517257daf6a597d96bf2b20" + } + Frame { + msec: 2320 + hash: "5740c6aacc1d1a5a402974bb977d9b13" + } + Frame { + msec: 2336 + hash: "41f0a093fc87c4d519a9b72bac518514" + } + Frame { + msec: 2352 + hash: "1ed376000e60129b4bcf06ea73cb5819" + } + Frame { + msec: 2368 + hash: "8c713e210143ab5f19bdddd918f86ef3" + } + Frame { + msec: 2384 + hash: "269b595c5691747b56be58d5b92ae497" + } + Frame { + msec: 2400 + hash: "486d80316c88da4adc736df72fc86f45" + } + Frame { + msec: 2416 + hash: "f76e6c0a9e7957730ac646b73d1373d1" + } + Frame { + msec: 2432 + hash: "e0a6765306f92e32b7a778f882ba5c15" + } + Frame { + msec: 2448 + hash: "b01834ca90ee836643083593a558d2ef" + } + Frame { + msec: 2464 + hash: "02748271316f8382f4788322fda807c1" + } + Frame { + msec: 2480 + hash: "ce5adbd1a713777476d2468f67e531f3" + } + Frame { + msec: 2496 + hash: "840be99d6372f9ebf3c580765b71be74" + } + Frame { + msec: 2512 + hash: "dd1cfa3fcec2fba91b0120a8aab3c137" + } + Frame { + msec: 2528 + hash: "023843739f78eb77767aa1cacae824e9" + } + Frame { + msec: 2544 + hash: "3e312b8de56c902ca20aba259c8559b2" + } + Frame { + msec: 2560 + hash: "23fe7c60751c2e3a57a418ad57d290f1" + } + Frame { + msec: 2576 + hash: "0cec0db315715c41c4086bdeb72af721" + } + Frame { + msec: 2592 + hash: "1b633a8efad433e7dbf159d49ebd00e8" + } + Frame { + msec: 2608 + hash: "35e46ea3f3a46297c403aa177ee66ede" + } + Frame { + msec: 2624 + hash: "e1b8d1d7298a3d3ade82493fb6f99909" + } + Frame { + msec: 2640 + hash: "74ecfaced66f630d1863c04000fa7f01" + } + Frame { + msec: 2656 + hash: "74ecfaced66f630d1863c04000fa7f01" + } + Frame { + msec: 2672 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 2688 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 2704 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 2720 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 2736 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 2752 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 2768 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 2784 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 2800 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2816 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2832 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2848 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2864 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 2880 + image: "follow.2.png" + } + Frame { + msec: 2896 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 2912 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 2928 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 2944 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 2960 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 2976 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 2992 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3008 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3024 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3040 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3056 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3072 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3088 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3104 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3120 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3136 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3152 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3168 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3184 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 3200 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3216 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3232 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3248 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3264 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3280 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3296 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3312 + hash: "20dd4407adca55737dd4231405c38cff" + } + Frame { + msec: 3328 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 3344 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3360 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3376 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3392 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3408 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3424 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3440 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3456 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3472 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3488 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3504 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 3520 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 3536 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 3552 + hash: "080910b835e134dfd06b83f1e92c92e8" + } + Frame { + msec: 3568 + hash: "317c01c691f0b46d5d809c3ccc1e78e6" + } + Frame { + msec: 3584 + hash: "475f4da1be823b57b58aecbb5a853892" + } + Frame { + msec: 3600 + hash: "b60a6387e955cd8e5e907a6b22a2aecc" + } + Frame { + msec: 3616 + hash: "4674eae7d8db1bf7eb35c7798948f7c4" + } + Frame { + msec: 3632 + hash: "7b4a143d0bf44ddf87d3bfd03c143025" + } + Frame { + msec: 3648 + hash: "e794d7ee32bcec9e0790ee95d89c9e06" + } + Frame { + msec: 3664 + hash: "0581724e928d25f276dd4ad19a9ffd4e" + } + Frame { + msec: 3680 + hash: "d8ef5e95454db4fd40fe51bcd9cf57b2" + } + Frame { + msec: 3696 + hash: "22ca96df911b74025fc771e945850adf" + } + Frame { + msec: 3712 + hash: "e0a88fb75e9193322fd5f925e89d7828" + } + Frame { + msec: 3728 + hash: "ee82a5192ea9af94d1a6ab169b438c34" + } + Frame { + msec: 3744 + hash: "c9d0d8514a783f3a9d0da651439990e2" + } + Frame { + msec: 3760 + hash: "9378795141098714f3ab5b2f28d219af" + } + Frame { + msec: 3776 + hash: "d61c4a67039e5a56ccd59df8afa24d38" + } + Frame { + msec: 3792 + hash: "62be79759a2a15ac73355457fa515b0a" + } + Frame { + msec: 3808 + hash: "d8f09c05c188fe3d09b8409a62bee29c" + } + Frame { + msec: 3824 + hash: "0285dead7580a8064116cf32bd31b40d" + } + Frame { + msec: 3840 + image: "follow.3.png" + } + Frame { + msec: 3856 + hash: "1921975bdfbe8a9817808919c97d2bac" + } + Frame { + msec: 3872 + hash: "9c58d55cc025dd022451971ba6735a79" + } + Frame { + msec: 3888 + hash: "c2163f3ab875bdb5728b16abcb65dfa4" + } + Frame { + msec: 3904 + hash: "48bd0e85564e411c4ae6d042487cb0d5" + } + Frame { + msec: 3920 + hash: "2e2c9f62acdc703fff7c28e7b7a59d47" + } + Frame { + msec: 3936 + hash: "d749acc91c1b271aac00c00a6088e9ac" + } + Frame { + msec: 3952 + hash: "cfa2c65f6f1a9bf242e073166a6e7b97" + } + Frame { + msec: 3968 + hash: "bb6f98350cbb89cf96c2f159659b944e" + } + Frame { + msec: 3984 + hash: "b7f087705eb7e2c7c4bd197aa08c1509" + } + Frame { + msec: 4000 + hash: "57f217985d1850bfa3d21c2cdd164d99" + } + Frame { + msec: 4016 + hash: "ded1e29fb83d6ec1d888fbd610c8a875" + } + Frame { + msec: 4032 + hash: "c2a9f250bca3e1f7906a577c0ae6b724" + } + Frame { + msec: 4048 + hash: "9cb2ca74308f519da85389ae959980ce" + } + Frame { + msec: 4064 + hash: "5b0d50ee5f7d077deec51159cebfd767" + } + Frame { + msec: 4080 + hash: "c41d847a89ece0dc9cfa1d0a0a8a16b1" + } + Frame { + msec: 4096 + hash: "d372cb387ad3f01614aaaf720f133d6e" + } + Frame { + msec: 4112 + hash: "9458ad068c95ff80e1dc4b1efd52683e" + } + Frame { + msec: 4128 + hash: "2e976c4a780503c6a71c4e9f8bd14178" + } + Frame { + msec: 4144 + hash: "b2f36762c85fcdbb0e1be545a3c49936" + } + Frame { + msec: 4160 + hash: "c29fdeb241221a29d0ad928f6401a2d4" + } + Frame { + msec: 4176 + hash: "bdbaaa347e20d21cc02b4c98953255ea" + } + Frame { + msec: 4192 + hash: "34e9b69f851e1d719467d08962d8a657" + } + Frame { + msec: 4208 + hash: "140a90804138dadb42e08b75fc1eed67" + } + Frame { + msec: 4224 + hash: "67418a2069d491022c28232b392b1631" + } + Frame { + msec: 4240 + hash: "df39748a385186ee0bdffa87485c2746" + } + Frame { + msec: 4256 + hash: "c3276e48ede008a43baf350a79b3443b" + } + Frame { + msec: 4272 + hash: "85473441e2560d8000640deecedef3bf" + } + Frame { + msec: 4288 + hash: "4d3d07ed1acec99052ebf530cb2c20da" + } + Frame { + msec: 4304 + hash: "3fb8ec07500be6d951f30121bcbcba13" + } + Frame { + msec: 4320 + hash: "ae8cae69a702811a897e7d5790c806cc" + } + Frame { + msec: 4336 + hash: "073e2e1af434447c3000b03e3a89925a" + } + Frame { + msec: 4352 + hash: "3c75c7586c1dca2fd21266395ccc8ac4" + } + Frame { + msec: 4368 + hash: "aa36ac379ac9953bd165b5164cd047da" + } + Frame { + msec: 4384 + hash: "09d6ab311429cfe29a68c428669b5d5a" + } + Frame { + msec: 4400 + hash: "11ebcb0a744bc3faa746560d9c1a824d" + } + Frame { + msec: 4416 + hash: "aa01ba99122f89bff8fc45ef88326f6a" + } + Frame { + msec: 4432 + hash: "6980292ba8a4bf8ead3581e5899f5d78" + } + Frame { + msec: 4448 + hash: "65fa1a0fe53b9a0580c14e96d42fe993" + } + Frame { + msec: 4464 + hash: "7837c0a533839f94629be4e64294b89f" + } + Frame { + msec: 4480 + hash: "5edbf632047ae4130f580e4a0ece8e57" + } + Frame { + msec: 4496 + hash: "0a5fdc57898cb56f00a76ecaa3a6b9e0" + } + Frame { + msec: 4512 + hash: "58d1b36e738042af44dab04a8c842259" + } + Frame { + msec: 4528 + hash: "2efb1f742d7f823d13b9724c1c10ce1a" + } + Frame { + msec: 4544 + hash: "e0286eb0b3fbb17e422554a8ef25489c" + } + Frame { + msec: 4560 + hash: "8252caa2841f07d29802a7b822388253" + } + Frame { + msec: 4576 + hash: "eaabd4b3610c0bcbbdc113f86bc52e6c" + } + Frame { + msec: 4592 + hash: "55b17d049e1c791d33094f64717bca06" + } + Frame { + msec: 4608 + hash: "1bd607f6d0658f46b1f0df51e8a9a9fe" + } + Frame { + msec: 4624 + hash: "4a52ea4de14098978931155f11168f68" + } + Frame { + msec: 4640 + hash: "343df8fb45e1e70183bb61a1111909a5" + } + Frame { + msec: 4656 + hash: "bcf1363d9912a3d626ef933387b4e01b" + } + Frame { + msec: 4672 + hash: "67709ea579481537e532120de35619b2" + } + Frame { + msec: 4688 + hash: "a7542255a10a120812880b1243bd573d" + } + Frame { + msec: 4704 + hash: "b4f3e597e489d32a473bb2ad6bb92fc4" + } + Frame { + msec: 4720 + hash: "f0df46d1b819edda5a616e858ed9171c" + } + Frame { + msec: 4736 + hash: "2416564198b4b853d9c4f5ad55ee5db5" + } + Frame { + msec: 4752 + hash: "342e5adcd2fca99c88c33cd8b56b8650" + } + Frame { + msec: 4768 + hash: "01806799adce1d0069cfdd739f383a7f" + } + Frame { + msec: 4784 + hash: "c045fdefdd4606d2c68c8cde2a7a40f4" + } + Frame { + msec: 4800 + image: "follow.4.png" + } + Frame { + msec: 4816 + hash: "c7371c0594fb9f4de0a7f8a3cdce061a" + } + Frame { + msec: 4832 + hash: "6df0c2a27c672e36a3d7eb5b4e0c46bf" + } + Frame { + msec: 4848 + hash: "97fa050a5790b1f722d25dbee9efba95" + } + Frame { + msec: 4864 + hash: "85c26ed45e79793fc5b7521a8157d3a2" + } + Frame { + msec: 4880 + hash: "9ff5d272ec8deed3e70164b78bc425c6" + } + Frame { + msec: 4896 + hash: "d1e3f6d51d6b8e96261b902e6f88576d" + } + Frame { + msec: 4912 + hash: "02c12e50ed6b7111f301e142a2fbc5db" + } + Frame { + msec: 4928 + hash: "5177873aa73342ada32d7ebfe3f26e0e" + } + Frame { + msec: 4944 + hash: "05d0364f67f317ee617f1a64d9543fe2" + } + Frame { + msec: 4960 + hash: "0b93625274bf1e3585664e56aff0197c" + } + Frame { + msec: 4976 + hash: "988083e19b15662ec09247c381bfaef5" + } + Frame { + msec: 4992 + hash: "6caa6b74ba935c2c9a6bf75ef94afedf" + } + Frame { + msec: 5008 + hash: "541ecf2b40931f8009a15c9c981e09aa" + } + Frame { + msec: 5024 + hash: "7a962dad8227d367b4af7dee6ea09c20" + } + Frame { + msec: 5040 + hash: "0c175618366090b8f21334e94a865464" + } + Frame { + msec: 5056 + hash: "f8e32badd5a839892ee4982ca37933db" + } + Frame { + msec: 5072 + hash: "3a91f3a25b245e79ddeb72778075ba8f" + } + Frame { + msec: 5088 + hash: "e8fd158c923d389a2d87db0023522934" + } + Frame { + msec: 5104 + hash: "9cfa7783d37010c10271d680d205ebc4" + } + Frame { + msec: 5120 + hash: "5e81c936f9627cf537f96a1674c920be" + } + Frame { + msec: 5136 + hash: "28679a61a44bf0d81d6a93d8ea301b97" + } + Frame { + msec: 5152 + hash: "ef41d71b99f078abe8a2a8326ed236c9" + } + Frame { + msec: 5168 + hash: "753da9af5dd15cbb6c9df83460f32631" + } + Frame { + msec: 5184 + hash: "49bbb9f30cf72a64b64ab19f0c2d5b9e" + } + Frame { + msec: 5200 + hash: "03d829cdb7da915da606dc1475debae8" + } + Frame { + msec: 5216 + hash: "1ee5d8c3c868e2f7d7f034f9bdc91c8f" + } + Frame { + msec: 5232 + hash: "0f497c52a8b4a7bbd9246c466182644c" + } + Frame { + msec: 5248 + hash: "1574e08a7db9c9a164147ca329d48dbd" + } + Frame { + msec: 5264 + hash: "bff3837578fd069d2b9000ad60123be3" + } + Frame { + msec: 5280 + hash: "99ce71c69566b92715a27014548d7346" + } + Frame { + msec: 5296 + hash: "78a78f00e598405d4e906a930ace9cb5" + } + Frame { + msec: 5312 + hash: "a0f44f1a8772d4dd8d70795811fdd4ab" + } + Frame { + msec: 5328 + hash: "3d5fd500d5c771b437a999659ea57dd7" + } + Frame { + msec: 5344 + hash: "53fbb22689627f55af20b3cb15a7a8cf" + } + Frame { + msec: 5360 + hash: "609838796118ab89566fe2fe664dfcb4" + } + Frame { + msec: 5376 + hash: "c2d7d5cb7cf470ed4d84f705c187f768" + } + Frame { + msec: 5392 + hash: "63c6de2754a0b9c23e5b652aa331716f" + } + Frame { + msec: 5408 + hash: "8cacae37981ebd8c0a6772f97d8e9342" + } + Frame { + msec: 5424 + hash: "b8ab40dbd1bb086eae5b80f2e751efe4" + } + Frame { + msec: 5440 + hash: "fb4211ee009b224b64092d106369f6a0" + } + Frame { + msec: 5456 + hash: "b59dd1dcbb128b6f7df51bd30ac0af31" + } + Frame { + msec: 5472 + hash: "075ff90195b6a0d37944aaf32eb560e7" + } + Frame { + msec: 5488 + hash: "26cb5dda92cfec934e4068322eb0c792" + } + Frame { + msec: 5504 + hash: "0938c360b6c8911074cda8fd58de5650" + } + Frame { + msec: 5520 + hash: "6491ba15d6566ab6f17ee6eb9c5472ab" + } + Frame { + msec: 5536 + hash: "83518cf990f5050d68bf1f09c774ae74" + } + Frame { + msec: 5552 + hash: "4ce84b0d70bc3ebf970e9161ffb7dc21" + } + Frame { + msec: 5568 + hash: "57270cebd25e5c6dd7fb204232e18eb3" + } + Frame { + msec: 5584 + hash: "d93f26948e6deb4bf074139468d12c27" + } + Frame { + msec: 5600 + hash: "581fe059cd632e242dd308b11ef8288a" + } + Frame { + msec: 5616 + hash: "2e19dc61944aa7671ac18303949e1c9e" + } + Frame { + msec: 5632 + hash: "37b4864ed528a3be221d7abb4106ec3a" + } + Frame { + msec: 5648 + hash: "4261fe6049e5dff81b33e503a4d1825d" + } + Frame { + msec: 5664 + hash: "c2bf99e089bc984abea63b8b43270859" + } + Frame { + msec: 5680 + hash: "d8de63e15f1f6e9c0cf0dd43afa03c42" + } + Frame { + msec: 5696 + hash: "3643a50c30b6d6f9b724155e49db7276" + } + Frame { + msec: 5712 + hash: "582e871460fe3056f7f3df97d5939d69" + } + Frame { + msec: 5728 + hash: "e46da1072974efc1c4df89d9c6243609" + } + Frame { + msec: 5744 + hash: "705ac82bb7a03eb5843aae7292739851" + } + Frame { + msec: 5760 + image: "follow.5.png" + } + Frame { + msec: 5776 + hash: "b2949af515524933f740057cae6d8c40" + } + Frame { + msec: 5792 + hash: "72a3526dbfeb42935a737f7876c86499" + } + Frame { + msec: 5808 + hash: "43907b91dec1412d0e6c8b53cec8e06f" + } + Frame { + msec: 5824 + hash: "66db45ca42d42e8a6eb279b892493af9" + } + Frame { + msec: 5840 + hash: "1f2d69898b90d344f337ac37a000e797" + } + Frame { + msec: 5856 + hash: "9c09edc9541d69e7565ef05fbe58fadf" + } + Frame { + msec: 5872 + hash: "0d68b6d05150981eff443cd7437b3d95" + } + Frame { + msec: 5888 + hash: "85558e393a1e0483ba27844cf409af47" + } + Frame { + msec: 5904 + hash: "83a73b6b3eb1052a9b1a12fb78326b26" + } + Frame { + msec: 5920 + hash: "4839882ecc497916b4ac964a5cc71d1b" + } + Frame { + msec: 5936 + hash: "28d6f5066f186a0d9ab7f4781374d3eb" + } + Frame { + msec: 5952 + hash: "d89148926c6dd636de953a55082e50f1" + } + Frame { + msec: 5968 + hash: "dbab902e252561849dba5551fc8f07d3" + } + Frame { + msec: 5984 + hash: "84a3a891fbbb1a0fca24324a3ea10c6a" + } + Frame { + msec: 6000 + hash: "64563bb68129f527b1c33c0d9a543f09" + } + Frame { + msec: 6016 + hash: "64563bb68129f527b1c33c0d9a543f09" + } + Frame { + msec: 6032 + hash: "7f3ae8ac99bf202414b03e9b33473044" + } + Frame { + msec: 6048 + hash: "7f3ae8ac99bf202414b03e9b33473044" + } + Frame { + msec: 6064 + hash: "7fbdf6396050da5b8945f1111c2ca973" + } + Frame { + msec: 6080 + hash: "5bf4fa18f24fc221685234a92c4cafb6" + } + Frame { + msec: 6096 + hash: "5bf4fa18f24fc221685234a92c4cafb6" + } + Frame { + msec: 6112 + hash: "e1b8d1d7298a3d3ade82493fb6f99909" + } + Frame { + msec: 6128 + hash: "6320b7b0bd1926c625f914d30f1f1fd9" + } + Frame { + msec: 6144 + hash: "74ecfaced66f630d1863c04000fa7f01" + } + Frame { + msec: 6160 + hash: "74ecfaced66f630d1863c04000fa7f01" + } + Frame { + msec: 6176 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 6192 + hash: "c803b3258d0e1d8e6c1292ea2a00f76b" + } + Frame { + msec: 6208 + hash: "8d359f95ee869714bb3972986637642d" + } + Frame { + msec: 6224 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 6240 + hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f" + } + Frame { + msec: 6256 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 6272 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 6288 + hash: "cd2c4e1a288d09f46dd557973c22e1be" + } + Frame { + msec: 6304 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6320 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6336 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6352 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6368 + hash: "8109005d7e21d16b77f88efce2b530e4" + } + Frame { + msec: 6384 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6400 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6416 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6432 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6448 + hash: "e009f65ae035fb8a9c27a1d57f10c35f" + } + Frame { + msec: 6464 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6480 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6496 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6512 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6528 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6544 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6560 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6576 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6592 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6608 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6624 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6640 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6656 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6672 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6688 + hash: "31a446fab3c9a92f20fbb065b62d4357" + } + Frame { + msec: 6704 + hash: "20dd4407adca55737dd4231405c38cff" + } +} diff --git a/tests/auto/declarative/visual/qmlspringfollow/follow.qml b/tests/auto/declarative/visual/qmlspringfollow/follow.qml new file mode 100644 index 0000000..3e164f9 --- /dev/null +++ b/tests/auto/declarative/visual/qmlspringfollow/follow.qml @@ -0,0 +1,73 @@ +import Qt 4.6 + +Rectangle { + color: "#ffffff" + width: 320; height: 240 + Rectangle { + id: rect + color: "#00ff00" + y: 200; width: 60; height: 20 + y: SequentialAnimation { + running: true; repeat: true + NumberAnimation { + to: 20; duration: 500 + easing: "easeInOutQuad" + } + NumberAnimation { + to: 200; duration: 2000 + easing: "easeOutBounce" + } + PauseAnimation { duration: 1000 } + } + } + + // Velocity + Rectangle { + color: "#ff0000" + x: rect.width; width: rect.width; height: 20 + y: 200 + y: SpringFollow { source: rect.y; velocity: 200 } + } + Text { x: rect.width; y: 220; text: "Velocity" } + + // Spring + Rectangle { + color: "#ff0000" + x: rect.width * 2; width: rect.width/2; height: 20 + y: 200 + y: SpringFollow { source: rect.y; spring: 1.0; damping: 0.2 } + } + Rectangle { + color: "#880000" + x: rect.width * 2.5; width: rect.width/2; height: 20 + y: 200 + y: SpringFollow { source: rect.y; spring: 1.0; damping: 0.2; mass: 3.0 } // "heavier" object + } + Text { x: rect.width * 2; y: 220; text: "Spring" } + + // Follow mouse + MouseRegion { + id: mouseRegion + anchors.fill: parent + Rectangle { + id: ball + width: 20; height: 20 + radius: 10 + color: "#0000ff" + x: SpringFollow { id: f1; source: mouseRegion.mouseX-10; spring: 1.0; damping: 0.05; epsilon: 0.25 } + y: SpringFollow { id: f2; source: mouseRegion.mouseY-10; spring: 1.0; damping: 0.05; epsilon: 0.25 } + states: [ + State { + name: "following" + when: !f1.inSync || !f2.inSync + PropertyChanges { target: ball; color: "#ff0000" } + } + ] + transitions: [ + Transition { + ColorAnimation { duration: 200 } + } + ] + } + } +} diff --git a/tests/auto/declarative/visual/tst_visual.cpp b/tests/auto/declarative/visual/tst_visual.cpp index e40dec7..5a5318a 100644 --- a/tests/auto/declarative/visual/tst_visual.cpp +++ b/tests/auto/declarative/visual/tst_visual.cpp @@ -59,13 +59,13 @@ public: static QString toTestScript(const QString &, Mode=Test); static QString viewer(); + static QStringList findQmlFiles(const QDir &d); private slots: void visual_data(); void visual(); private: QString qmlviewer; - QStringList findQmlFiles(const QDir &d); }; @@ -257,6 +257,7 @@ void usage() { fprintf(stderr, "\n"); fprintf(stderr, "QML related options\n"); + fprintf(stderr, " -listtests : list all the tests seen by tst_visual, and then exit immediately\n"); fprintf(stderr, " -record file : record new test data for file\n"); fprintf(stderr, " -recordnovisuals file : record new test data for file, but ignore visuals\n"); fprintf(stderr, " -play file : playback test data for file, printing errors\n"); @@ -267,12 +268,12 @@ void usage() "Visual tests are recordings of manual interactions with a QML test,\n" "that can then be run automatically. To record a new test, run:\n" "\n" - " tst_visuals -record yourtestdir/yourtest # Note, no .qml extension\n" + " tst_visual -record yourtestdir/yourtest.qml\n" "\n" "This records everything you do (try to keep it short).\n" "To play back a test, run:\n" "\n" - " tst_visuals -play yourtestdir/yourtest\n" + " tst_visual -play yourtestdir/yourtest.qml\n" "\n" "Your test may include QML code to test itself, reporting any error to an\n" "'error' property on the root object - the test will fail if this property\n" @@ -281,7 +282,7 @@ void usage() "If your test changes slightly but is still correct (check with -play), you\n" "can update the visuals by running:\n" "\n" - " tst_visuals -updatevisuals yourtestdir/yourtest\n" + " tst_visual -updatevisuals yourtestdir/yourtest.qml\n" "\n" "If your test includes platform-sensitive visuals (eg. text in system fonts),\n" "you should create platform-specific visuals, using -updateplatformvisuals\n" @@ -332,10 +333,18 @@ int main(int argc, char **argv) newArgv[newArgc++] = argv[ii]; } - if (arg == "-help" || arg == "-?") { + if (arg == "-help" || arg == "-?" || arg == "--help") { atexit(usage); showHelp = true; } + + if (arg == "-listtests") { + QStringList list = tst_visual::findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); + foreach (QString test, list) { + qWarning() << qPrintable(test); + } + return 0; + } } if (mode == Test || showHelp) { |