From dcef08f3b30471300945f0e611723a9a8ad89bb7 Mon Sep 17 00:00:00 2001 From: Stefan Date: Tue, 19 Apr 2022 21:46:46 +0400 Subject: [PATCH] test(Controls.StatusImageCrop): basic validation tests for the image crop control updates #5401 --- .../TestControls/tst_test-StatusImageCrop.qml | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 tests/TestControls/tst_test-StatusImageCrop.qml diff --git a/tests/TestControls/tst_test-StatusImageCrop.qml b/tests/TestControls/tst_test-StatusImageCrop.qml new file mode 100644 index 00000000..fd85c731 --- /dev/null +++ b/tests/TestControls/tst_test-StatusImageCrop.qml @@ -0,0 +1,137 @@ +import QtQuick 2.0 +import QtTest 1.0 + +import StatusQ.Controls 0.1 + +import StatusQ.TestHelpers 0.1 + +Item { + width: 400 + height: 300 + + Component { + id: noSourceComponent + + StatusImageCrop { + anchors.fill: parent + + windowStyle: StatusImageCrop.WindowStyle.Rounded + } + } + + Component { + id: withSourceComponent + + StatusImageCrop { + anchors.fill: parent + + // TODO: generate test image and break the sandbox dependency + source: `${Qt.resolvedUrl(".")}../../sandbox/demoapp/data/logo-test-image.png` + windowStyle: StatusImageCrop.WindowStyle.Rectangular + Component.onCompleted: setCropRect(Qt.rect(10, 0, sourceSize.width - 20, sourceSize.height)) + } + } + + Loader { + id: testLoader + + anchors.fill: parent + active: false + } + + TestCase { + id: qmlWarningsTest + + name: "CheckQmlWarnings" + + when: windowShown + + // + // Test guards + + function init() { + qtOuput.restartCapturing() + } + + function cleanup() { + testLoader.active = false + } + + // + // Tests + + function test_no_source_initialization() { + testLoader.sourceComponent = noSourceComponent + testLoader.active = true + verify(waitForRendering(testLoader.item)) + testLoader.active = false + wait(100) + verify(qtOuput.qtOuput().length === 0, `No output expected. Found:\n"${qtOuput.qtOuput()}"\n`) + } + + function test_with_source_initialization() { + testLoader.sourceComponent = withSourceComponent + testLoader.active = true + verify(waitForRendering(testLoader.item)) + testLoader.active = false + wait(100) + verify(qtOuput.qtOuput().length === 0, `No output expected. Found:\n"${qtOuput.qtOuput()}"\n`) + } + } + + StatusImageCrop { + id: testControl + + // TODO: generate test image and break the sandbox dependency + source: `${Qt.resolvedUrl(".")}../../sandbox/demoapp/data/logo-test-image.png` + windowStyle: StatusImageCrop.WindowStyle.Rectangular + Component.onCompleted: setCropRect(Qt.rect(10, 0, sourceSize.width - 20, sourceSize.height)) + } + + TestCase { + name: "TestFunctionality" + + // + // Test guards + + function init() { + qtOuput.restartCapturing() + } + + function cleanup() { + } + + // + // Tests + + function test_inflateRect_by2() { + const refRect = Qt.rect(2,2,5,6) + const infateResult = testControl.inflateRectBy(refRect, 2) + const inflatedBy2Rect = Qt.rect(-0.5, -1, 10, 12) + compare(infateResult, inflatedBy2Rect, "Inflating rectangle failed") + verify(qtOuput.qtOuput().length === 0, `No output expected. Found:\n"${qtOuput.qtOuput()}"\n`) + } + + function test_inflateRectBy_deflateByHalf() { + const refRect = Qt.rect(3,4,2,3) + const inflateResult = testControl.inflateRectBy(refRect, 0.5) + const defaltedByHalfRect = Qt.rect(3.5, 4.75, 1, 1.5) + compare(inflateResult, defaltedByHalfRect, "Inflating rectangle failed") + verify(qtOuput.qtOuput().length === 0, `No output expected. Found:\n"${qtOuput.qtOuput()}"\n`) + } + + function test_rectCenter() { + compare(testControl.rectCenter(Qt.rect(2, 3, 2, 4)), Qt.point(3, 5), "Fail to retrieve center"); + compare(testControl.rectCenter(Qt.rect(-1, 3, 1, 3)), Qt.point(-0.5, 4.5), "Fail to retrieve center"); + } + + function test_recenterRect() { + compare(testControl.recenterRect(Qt.rect(1.5, 2, 3, 4), Qt.point(0, 0)), Qt.rect(-1.5, -2, 3, 4)) + compare(testControl.recenterRect(Qt.rect(0, 0, 1.5, 3), Qt.point(0.75, 1.5)), Qt.rect(0, 0, 1.5, 3)) + } + } + + MonitorQtOutput { + id: qtOuput + } +}