diff options
author | Albert Astals Cid <albert.astals@canonical.com> | 2017-01-09 15:22:22 +0100 |
---|---|---|
committer | Robin Burchell <robin.burchell@crimson.no> | 2017-01-27 18:11:30 +0000 |
commit | d0649a1b457f321cfafee1aaf443543fd11a7112 (patch) | |
tree | 08beaa9b918087163ce68da34e8547bc99985490 /tests/auto/qmltest | |
parent | 68932f24c66e2589bc202f4b5b7c248b7d19e6be (diff) |
Make Item::grabToImage work in more cases, and improve test coverage
This fixes a regression caused by 9c50216c7bbbdb2bb51d4485286bf09e12fb5b62
when the Image specified fillMode: aspectRatioCrop/Fit.
[ChangeLog][QtQuick][Image] Item::grabToImage on an Image element will now work
regardless of the Image's sourceSize or cache properties.
Change-Id: I225854c48f0c35a3cb2ef0dd56bf51bd88c31779
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
Diffstat (limited to 'tests/auto/qmltest')
-rw-r--r-- | tests/auto/qmltest/itemgrabber/tst_itemgrabber.qml | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/tests/auto/qmltest/itemgrabber/tst_itemgrabber.qml b/tests/auto/qmltest/itemgrabber/tst_itemgrabber.qml index 022e98a202..a80814d6de 100644 --- a/tests/auto/qmltest/itemgrabber/tst_itemgrabber.qml +++ b/tests/auto/qmltest/itemgrabber/tst_itemgrabber.qml @@ -37,8 +37,9 @@ Item { TestCase { id: testCase name: "item-grabber" - when: imageOnDisk.ready && imageOnDiskSmall.ready && imageInCache.ready && imageInCacheSmall.ready - function test_endresult() { + when: imageOnDisk.ready && imageOnDiskSmall.ready + + function test_endresult_disk() { var image = grabImage(root); // imageOnDisk at (0, 0) - (100x100) @@ -52,6 +53,40 @@ Item { compare(imageOnDiskSmall.height, 50); verify(image.pixel(100, 0) === Qt.rgba(1, 0, 0, 1)); verify(image.pixel(149, 49) === Qt.rgba(0, 0, 1, 1)); + } + + function test_endresult_cache_data() { + return [ + { cache: true, sourceSize: Qt.size(-1, -1), fillMode: Image.Stretch }, + { cache: true, sourceSize: Qt.size(-1, -1), fillMode: Image.PreserveAspectFit }, + { cache: true, sourceSize: Qt.size(-1, -1), fillMode: Image.PreserveAspectCrop }, + { cache: true, sourceSize: Qt.size(10, 10), fillMode: Image.Stretch }, + { cache: true, sourceSize: Qt.size(10, 10), fillMode: Image.PreserveAspectFit }, + { cache: true, sourceSize: Qt.size(10, 10), fillMode: Image.PreserveAspectCrop }, + { cache: false, sourceSize: Qt.size(-1, -1), fillMode: Image.Stretch }, + { cache: false, sourceSize: Qt.size(-1, -1), fillMode: Image.PreserveAspectFit }, + { cache: false, sourceSize: Qt.size(-1, -1), fillMode: Image.PreserveAspectCrop }, + { cache: false, sourceSize: Qt.size(10, 10), fillMode: Image.Stretch }, + { cache: false, sourceSize: Qt.size(10, 10), fillMode: Image.PreserveAspectFit }, + { cache: false, sourceSize: Qt.size(10, 10), fillMode: Image.PreserveAspectCrop }, + ]; + } + + function test_endresult_cache(data) { + imageInCache.cache = data.cache; + imageInCache.sourceSize = data.sourceSize; + imageInCache.fillMode = data.fillMode; + imageInCacheSmall.cache = data.cache; + imageInCacheSmall.sourceSize = data.sourceSize; + imageInCacheSmall.fillMode = data.fillMode; + + box.grabToImage(imageInCache.handleGrab); + box.grabToImage(imageInCacheSmall.handleGrab, Qt.size(50, 50)); + + tryCompare(imageInCache, "ready", true); + tryCompare(imageInCacheSmall, "ready", true); + + var image = grabImage(root); // imageInCache at (0, 100) - 100x100 compare(imageInCache.width, 100); @@ -72,8 +107,6 @@ Item { onWindowShownChanged: { box.grabToImage(imageOnDisk.handleGrab); box.grabToImage(imageOnDiskSmall.handleGrab, Qt.size(50, 50)); - box.grabToImage(imageInCache.handleGrab); - box.grabToImage(imageInCacheSmall.handleGrab, Qt.size(50, 50)); } } |