diff options
Diffstat (limited to 'tests/auto/controls/data/tst_scrollbar.qml')
-rw-r--r-- | tests/auto/controls/data/tst_scrollbar.qml | 101 |
1 files changed, 79 insertions, 22 deletions
diff --git a/tests/auto/controls/data/tst_scrollbar.qml b/tests/auto/controls/data/tst_scrollbar.qml index 92fe8496..8727b6da 100644 --- a/tests/auto/controls/data/tst_scrollbar.qml +++ b/tests/auto/controls/data/tst_scrollbar.qml @@ -40,7 +40,7 @@ import QtQuick 2.2 import QtTest 1.0 -import QtQuick.Controls 2.1 +import QtQuick.Controls 2.2 TestCase { id: testCase @@ -73,7 +73,7 @@ TestCase { } function test_attach() { - var container = flickable.createObject(testCase) + var container = createTemporaryObject(flickable, testCase) verify(container) waitForRendering(container) @@ -105,7 +105,7 @@ TestCase { container.width += 10 compare(vertical.x, 123) - var horizontal = scrollBar.createObject() + var horizontal = createTemporaryObject(scrollBar, null) verify(!horizontal.parent) compare(horizontal.size, 0.0) compare(horizontal.position, 0.0) @@ -170,8 +170,6 @@ TestCase { container.width += 10 compare(horizontal.x, oldX - 10) compare(horizontal.width, oldWidth) - - container.destroy() } function test_mouse_data() { @@ -182,7 +180,7 @@ TestCase { } function test_mouse(data) { - var control = scrollBar.createObject(testCase, data.properties) + var control = createTemporaryObject(scrollBar, testCase, data.properties) verify(control) var pressedSpy = signalSpy.createObject(control, {target: control, signalName: "pressedChanged"}) @@ -227,8 +225,6 @@ TestCase { compare(pressedSpy.count, 4) compare(control.pressed, false) compare(control.position, 0.25) - - control.destroy() } function test_increase_decrease_data() { @@ -241,7 +237,7 @@ TestCase { } function test_increase_decrease(data) { - var control = scrollBar.createObject(testCase, {position: 0.5, active: data.active}) + var control = createTemporaryObject(scrollBar, testCase, {position: 0.5, active: data.active}) verify(control) if (data.increase) { @@ -252,8 +248,6 @@ TestCase { compare(control.position, 0.4) } compare(control.active, data.active) - - control.destroy() } function test_stepSize_data() { @@ -265,7 +259,7 @@ TestCase { } function test_stepSize(data) { - var control = scrollBar.createObject(testCase, {stepSize: data.stepSize}) + var control = createTemporaryObject(scrollBar, testCase, {stepSize: data.stepSize}) verify(control) compare(control.stepSize, data.stepSize) @@ -290,8 +284,6 @@ TestCase { } control.decrease() compare(control.position, 0.0) - - control.destroy() } function test_padding_data() { @@ -302,14 +294,12 @@ TestCase { } function test_padding(data) { - var control = scrollBar.createObject(testCase, data.properties) + var control = createTemporaryObject(scrollBar, testCase, data.properties) mousePress(control, control.leftPadding + control.availableWidth * 0.5, control.topPadding + control.availableHeight * 0.5, Qt.LeftButton) mouseRelease(control, control.leftPadding + control.availableWidth * 0.5, control.topPadding + control.availableHeight * 0.5, Qt.LeftButton) compare(control.position, 0.5) - - control.destroy() } function test_warning() { @@ -318,7 +308,7 @@ TestCase { } function test_mirrored() { - var container = flickable.createObject(testCase) + var container = createTemporaryObject(flickable, testCase) verify(container) waitForRendering(container) @@ -326,8 +316,6 @@ TestCase { compare(container.ScrollBar.vertical.x, container.width - container.ScrollBar.vertical.width) container.ScrollBar.vertical.locale = Qt.locale("ar_EG") compare(container.ScrollBar.vertical.x, 0) - - container.destroy() } function test_hover_data() { @@ -338,7 +326,7 @@ TestCase { } function test_hover(data) { - var control = scrollBar.createObject(testCase, {hoverEnabled: data.hoverEnabled}) + var control = createTemporaryObject(scrollBar, testCase, {hoverEnabled: data.hoverEnabled}) verify(control) compare(control.hovered, false) @@ -350,7 +338,76 @@ TestCase { mouseMove(control, -1, -1) compare(control.hovered, false) compare(control.active, false) + } + + function test_snapMode_data() { + return [ + { tag: "NoSnap", snapMode: ScrollBar.NoSnap, stepSize: 0.1, size: 0.2, width: 100, steps: 80 }, /* 0.8*100 */ + { tag: "NoSnap2", snapMode: ScrollBar.NoSnap, stepSize: 0.2, size: 0.1, width: 200, steps: 180 }, /* 0.9*200 */ + + { tag: "SnapAlways", snapMode: ScrollBar.SnapAlways, stepSize: 0.1, size: 0.2, width: 100, steps: 10 }, + { tag: "SnapAlways2", snapMode: ScrollBar.SnapAlways, stepSize: 0.2, size: 0.1, width: 200, steps: 5 }, + + { tag: "SnapOnRelease", snapMode: ScrollBar.SnapOnRelease, stepSize: 0.1, size: 0.2, width: 100, steps: 80 }, /* 0.8*100 */ + { tag: "SnapOnRelease2", snapMode: ScrollBar.SnapOnRelease, stepSize: 0.2, size: 0.1, width: 200, steps: 180 }, /* 0.9*200 */ + ] + } + + function test_snapMode_mouse_data() { + return test_snapMode_data() + } + + function test_snapMode_mouse(data) { + var control = createTemporaryObject(scrollBar, testCase, {snapMode: data.snapMode, orientation: Qt.Horizontal, stepSize: data.stepSize, size: data.size, width: data.width}) + verify(control) + + function snappedPosition(pos) { + var effectiveStep = control.stepSize * (1.0 - control.size) + return Math.round(pos / effectiveStep) * effectiveStep + } + + function boundPosition(pos) { + return Math.max(0, Math.min(pos, 1.0 - control.size)) + } + + mousePress(control, 0, 0) + compare(control.position, 0) + + mouseMove(control, control.width * 0.3, 0) + var expectedMovePos = 0.3 + if (control.snapMode === ScrollBar.SnapAlways) { + expectedMovePos = snappedPosition(expectedMovePos) + verify(expectedMovePos !== 0.3) + } + compare(control.position, expectedMovePos) + + mouseRelease(control, control.width * 0.75, 0) + var expectedReleasePos = 0.75 + if (control.snapMode !== ScrollBar.NoSnap) { + expectedReleasePos = snappedPosition(expectedReleasePos) + verify(expectedReleasePos !== 0.75) + } + compare(control.position, expectedReleasePos) + + control.position = 0 + mousePress(control, 0, 0) + + var steps = 0 + var prevPos = 0 + + for (var x = 0; x < control.width; ++x) { + mouseMove(control, x, 0) + expectedMovePos = boundPosition(x / control.width) + if (control.snapMode === ScrollBar.SnapAlways) + expectedMovePos = snappedPosition(expectedMovePos) + compare(control.position, expectedMovePos) + + if (control.position !== prevPos) + ++steps + prevPos = control.position + } + compare(steps, data.steps) - control.destroy() + mouseRelease(control, control.width - 1, 0) } } |