diff options
Diffstat (limited to 'tests/auto/quick')
26 files changed, 410 insertions, 7 deletions
diff --git a/tests/auto/quick/pointerhandlers/qquicktaphandler/BLACKLIST b/tests/auto/quick/pointerhandlers/qquicktaphandler/BLACKLIST deleted file mode 100644 index 9cc6783375..0000000000 --- a/tests/auto/quick/pointerhandlers/qquicktaphandler/BLACKLIST +++ /dev/null @@ -1,4 +0,0 @@ -# QTBUG-103072 -[gesturePolicyDragWithinBounds] -android - diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_arc.qml b/tests/auto/quick/qquickcanvasitem/data/tst_arc.qml index 33fffd4cb1..00d13f31f4 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_arc.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_arc.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_angle_1(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -21,6 +22,7 @@ CanvasTestCase { } function test_angle_2(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -36,6 +38,7 @@ CanvasTestCase { } function test_angle_3(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#0f0'; @@ -53,6 +56,7 @@ CanvasTestCase { } function test_angle_4(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -71,6 +75,7 @@ CanvasTestCase { } function test_angle_5(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -90,6 +95,7 @@ CanvasTestCase { function test_angle_6(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -110,6 +116,7 @@ CanvasTestCase { function test_empty(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -125,6 +132,7 @@ CanvasTestCase { } function test_nonempty(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -141,6 +149,7 @@ CanvasTestCase { } function test_nonfinite(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -199,6 +208,7 @@ CanvasTestCase { } function test_end(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -216,6 +226,7 @@ CanvasTestCase { } function test_negative(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -234,6 +245,7 @@ CanvasTestCase { function test_scale_1(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -270,6 +282,7 @@ CanvasTestCase { function test_scale_2(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -296,6 +309,7 @@ CanvasTestCase { function test_selfintersect_1(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -316,6 +330,7 @@ CanvasTestCase { function test_selfintersect_2(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -340,6 +355,7 @@ CanvasTestCase { function test_shape_1(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -361,6 +377,7 @@ CanvasTestCase { function test_shape_2(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -381,6 +398,7 @@ CanvasTestCase { } function test_shape_3(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -401,6 +419,7 @@ CanvasTestCase { function test_shape_4(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -421,6 +440,7 @@ CanvasTestCase { function test_shape_5(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -441,6 +461,7 @@ CanvasTestCase { function test_twopie(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -488,6 +509,7 @@ CanvasTestCase { function test_zero(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_arcto.qml b/tests/auto/quick/qquickcanvasitem/data/tst_arcto.qml index ef1b7a7b2a..81412d98c9 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_arcto.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_arcto.qml @@ -7,6 +7,7 @@ CanvasTestCase { function test_coincide(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -44,6 +45,7 @@ CanvasTestCase { } function test_collinear(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -109,6 +111,7 @@ CanvasTestCase { } function test_subpath(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -135,6 +138,7 @@ CanvasTestCase { function test_negative(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -152,6 +156,7 @@ CanvasTestCase { function test_nonfinite(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -208,6 +213,7 @@ CanvasTestCase { } function test_scale(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -237,6 +243,7 @@ CanvasTestCase { function test_shape(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -348,6 +355,7 @@ CanvasTestCase { function test_transform(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -374,6 +382,7 @@ CanvasTestCase { } function test_zero(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_composite.qml b/tests/auto/quick/qquickcanvasitem/data/tst_composite.qml index 8a5a52cf1e..4ee24ad437 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_composite.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_composite.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_clearRect(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -17,6 +18,7 @@ CanvasTestCase { function test_clip(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); var composites = [ {compsite:"copy"}, {compsite:"destination-atop"}, @@ -47,6 +49,7 @@ CanvasTestCase { function test_globalAlpha(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); compare(ctx.globalAlpha, 1.0); @@ -83,6 +86,7 @@ CanvasTestCase { function test_operation(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.globalCompositeOperation = 'xor'; @@ -137,6 +141,7 @@ CanvasTestCase { function test_solid(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = Qt.rgba(0, 1, 1, 1.0); @@ -233,6 +238,7 @@ CanvasTestCase { } function test_transparent(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; @@ -330,6 +336,7 @@ CanvasTestCase { function test_uncovered(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_fillStyle.qml b/tests/auto/quick/qquickcanvasitem/data/tst_fillStyle.qml index 58ea6d7f59..9e8c0785c3 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_fillStyle.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_fillStyle.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_default(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); verify(ctx.fillStyle, "#000000"); @@ -14,6 +15,7 @@ CanvasTestCase { } function test_get(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#fa0'; @@ -23,6 +25,7 @@ CanvasTestCase { } function test_hex(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -37,6 +40,7 @@ CanvasTestCase { } function test_invalid(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#fa0'; @@ -60,6 +64,7 @@ CanvasTestCase { } function test_saverestore(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); var old = ctx.fillStyle; ctx.save(); @@ -75,6 +80,7 @@ CanvasTestCase { } function test_namedColor(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = "red"; @@ -91,6 +97,7 @@ CanvasTestCase { } function test_rgba(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = "rgb(-100, 300, 255)"; @@ -108,6 +115,7 @@ CanvasTestCase { function test_hsla(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = "hsla(120, 100%, 50%, 0.499)"; diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_fillrect.qml b/tests/auto/quick/qquickcanvasitem/data/tst_fillrect.qml index ce1c27c6bc..213abdd622 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_fillrect.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_fillrect.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_fillRect(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.fillStyle = "red"; ctx.fillRect(0, 0, canvas.width, canvas.height); diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_gradient.qml b/tests/auto/quick/qquickcanvasitem/data/tst_gradient.qml index 7c87d896fb..70e77c8760 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_gradient.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_gradient.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_basic(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#0f0'; @@ -18,6 +19,7 @@ CanvasTestCase { function test_interpolate(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -166,6 +168,7 @@ CanvasTestCase { } function test_radial(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#0f0'; @@ -788,6 +791,7 @@ CanvasTestCase { } function test_linear(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); try { var err = false; @@ -907,6 +911,7 @@ CanvasTestCase { } function test_object(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); var g1 = ctx.createLinearGradient(0, 0, 100, 0); @@ -978,6 +983,7 @@ CanvasTestCase { function test_conical(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); var g = ctx.createConicalGradient(10, 10, 50); diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_image.qml b/tests/auto/quick/qquickcanvasitem/data/tst_image.qml index 1f695d7080..a1eb272cd0 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_image.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_image.qml @@ -11,12 +11,12 @@ CanvasTestCase { canvas.loadImage('rgrg-256x256.png'); canvas.loadImage('ggrr-256x256.png'); canvas.loadImage('broken.png'); - while (!canvas.isImageLoaded('green.png')) - wait(200); + tryVerify(function() { return canvas.isImageLoaded('green.png'); }) } function test_3args(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); ctx.reset(); @@ -35,6 +35,7 @@ CanvasTestCase { } function test_5args(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -54,6 +55,7 @@ CanvasTestCase { } function test_9args(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -118,6 +120,7 @@ CanvasTestCase { } function test_animated(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -125,6 +128,7 @@ CanvasTestCase { } function test_clip(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -139,6 +143,7 @@ CanvasTestCase { } function test_self(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -170,6 +175,7 @@ CanvasTestCase { function test_outsidesource(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -207,6 +213,7 @@ CanvasTestCase { function test_null(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -220,15 +227,18 @@ CanvasTestCase { function test_url(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); canvas.loadImage(testCase.green); + tryVerify(function() { return canvas.isImageLoaded(testCase.green); }) ctx.drawImage(testCase.green, 0, 0); comparePixel(ctx, 0,0, 0,255,0,255,2); } function test_composite(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -241,12 +251,14 @@ CanvasTestCase { } function test_path(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); } function test_transform(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -260,6 +272,7 @@ CanvasTestCase { function test_imageitem(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -268,6 +281,7 @@ CanvasTestCase { function test_imageData(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -276,6 +290,7 @@ CanvasTestCase { function test_wrongtype(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -293,6 +308,7 @@ CanvasTestCase { function test_nonfinite(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -606,6 +622,7 @@ CanvasTestCase { function test_negative(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -661,6 +678,7 @@ CanvasTestCase { function test_canvas(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -684,6 +702,7 @@ CanvasTestCase { function test_broken(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -694,6 +713,7 @@ CanvasTestCase { function test_alpha(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); @@ -706,6 +726,7 @@ CanvasTestCase { } function test_multiple_painting(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); loadImages(canvas); diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_imagedata.qml b/tests/auto/quick/qquickcanvasitem/data/tst_imagedata.qml index 76b99a765e..aab7a95589 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_imagedata.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_imagedata.qml @@ -11,6 +11,7 @@ CanvasTestCase { skip("ctx.getImageData crashes on offscreen/minimal platforms"); var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); var size = 17 ctx.reset(); diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_line.qml b/tests/auto/quick/qquickcanvasitem/data/tst_line.qml index ba7ff09728..e5d03e5db7 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_line.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_line.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_default(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); compare(ctx.lineWidth, 1); @@ -16,6 +17,7 @@ CanvasTestCase { function test_cross(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#0f0'; @@ -43,6 +45,7 @@ CanvasTestCase { function test_join(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -306,6 +309,7 @@ CanvasTestCase { } function test_miter(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -481,6 +485,7 @@ CanvasTestCase { } function test_width(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#0f0'; @@ -625,6 +630,7 @@ CanvasTestCase { skip("line::test_cap crashes on Android, QTBUG-103257") var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -841,6 +847,7 @@ CanvasTestCase { function test_lineDash(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.strokeStyle = "#fff"; @@ -899,6 +906,7 @@ CanvasTestCase { function test_lineDashReset(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.strokeStyle = "#ff0000"; @@ -930,6 +938,7 @@ CanvasTestCase { function test_lineDashOffset(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.strokeStyle = "#fff"; diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_path.qml b/tests/auto/quick/qquickcanvasitem/data/tst_path.qml index 60c782c8fa..ae08b58519 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_path.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_path.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_basic(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#0f0'; @@ -36,6 +37,7 @@ CanvasTestCase { } function test_beginPath(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -48,6 +50,7 @@ CanvasTestCase { } function test_closePath(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#0f0'; @@ -86,6 +89,7 @@ CanvasTestCase { function test_isPointInPath(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.arc(50, 25, 10, 0, Math.PI, false); @@ -256,6 +260,7 @@ CanvasTestCase { function test_fill(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -378,6 +383,7 @@ CanvasTestCase { } function test_stroke(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#0f0'; @@ -662,6 +668,7 @@ CanvasTestCase { } function test_clip(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -784,6 +791,7 @@ CanvasTestCase { function test_moveTo(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -839,6 +847,7 @@ CanvasTestCase { } function test_lineTo(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -904,6 +913,7 @@ CanvasTestCase { } function test_bezierCurveTo(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -1072,6 +1082,7 @@ CanvasTestCase { } function test_quadraticCurveTo(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -1173,6 +1184,7 @@ CanvasTestCase { } function test_rect(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -1371,6 +1383,7 @@ CanvasTestCase { function test_clearRect(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#0f0'; @@ -1383,6 +1396,7 @@ CanvasTestCase { } function test_fillRect(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.beginPath(); @@ -1397,6 +1411,7 @@ CanvasTestCase { function test_strokeRect(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.beginPath(); @@ -1412,6 +1427,7 @@ CanvasTestCase { } function test_transform(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_pattern.qml b/tests/auto/quick/qquickcanvasitem/data/tst_pattern.qml index 1d7fd2c12f..e0a4d7ad23 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_pattern.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_pattern.qml @@ -6,36 +6,42 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_basic(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_animated(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_image(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_modified(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_paint(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_repeat(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_pixel.qml b/tests/auto/quick/qquickcanvasitem/data/tst_pixel.qml index 281264ba92..ef908db92a 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_pixel.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_pixel.qml @@ -7,6 +7,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_createImageData(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); var imageData = ctx.createImageData(1, 1); var imageDataValues = imageData.data; @@ -20,24 +21,28 @@ CanvasTestCase { } function test_getImageData(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_object(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_putImageData(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_filters(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_shadow.qml b/tests/auto/quick/qquickcanvasitem/data/tst_shadow.qml index 2baaa072d0..14318b3f56 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_shadow.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_shadow.qml @@ -6,12 +6,14 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_basic(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_blur(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() @@ -19,6 +21,7 @@ CanvasTestCase { function test_clip(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() @@ -26,6 +29,7 @@ CanvasTestCase { function test_composite(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() @@ -33,6 +37,7 @@ CanvasTestCase { function test_enable(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() @@ -40,36 +45,42 @@ CanvasTestCase { function test_gradient(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_image(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_offset(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_pattern(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_stroke(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_tranform(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_state.qml b/tests/auto/quick/qquickcanvasitem/data/tst_state.qml index 18464def7c..ce02f9d7f7 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_state.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_state.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_bitmap(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -19,6 +20,7 @@ CanvasTestCase { } function test_clip(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -35,6 +37,7 @@ CanvasTestCase { } function test_fillStyle(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); // Test that restore() undoes any modifications @@ -56,6 +59,7 @@ CanvasTestCase { } function test_font(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -78,6 +82,7 @@ CanvasTestCase { } function test_globalAlpha(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -100,6 +105,7 @@ CanvasTestCase { } function test_globalCompositeOperation(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -122,6 +128,7 @@ CanvasTestCase { } function test_lineCap(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -144,6 +151,7 @@ CanvasTestCase { } function test_lineJoin(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -166,6 +174,7 @@ CanvasTestCase { } function test_lineWidth(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -188,6 +197,7 @@ CanvasTestCase { } function test_miterLimit(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -210,6 +220,7 @@ CanvasTestCase { } function test_path(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -225,6 +236,7 @@ CanvasTestCase { } function test_shadow(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -295,6 +307,7 @@ CanvasTestCase { } function test_stack(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -330,6 +343,7 @@ CanvasTestCase { } function test_strokeStyle(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -353,6 +367,7 @@ CanvasTestCase { function test_text(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -392,6 +407,7 @@ CanvasTestCase { function test_transform(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_strokeStyle.qml b/tests/auto/quick/qquickcanvasitem/data/tst_strokeStyle.qml index a3f1ab0a9b..0dc39b8b4c 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_strokeStyle.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_strokeStyle.qml @@ -8,6 +8,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_default(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); compare(ctx.strokeStyle, "#000000") @@ -17,6 +18,7 @@ CanvasTestCase { } function test_saverestore(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); var old = ctx.strokeStyle; ctx.save(); @@ -33,6 +35,7 @@ CanvasTestCase { } function test_namedColor(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.strokeStyle = "red"; @@ -50,6 +53,7 @@ CanvasTestCase { } function test_colorFromObjectToString(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -68,6 +72,7 @@ CanvasTestCase { } function test_withInvalidColor(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_svgpath.qml b/tests/auto/quick/qquickcanvasitem/data/tst_svgpath.qml index 2b39357bed..011fbd497b 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_svgpath.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_svgpath.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_svgpath(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); var svgs = [ // Absolute coordinates, explicit commands. diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_text.qml b/tests/auto/quick/qquickcanvasitem/data/tst_text.qml index bfc4067040..f7cd66890b 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_text.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_text.qml @@ -6,36 +6,42 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_baseLine(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_align(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_stroke(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_fill(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_font(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() } function test_measure(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); canvas.destroy() diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_transform.qml b/tests/auto/quick/qquickcanvasitem/data/tst_transform.qml index b2f5b51fa5..bbfec6a106 100644 --- a/tests/auto/quick/qquickcanvasitem/data/tst_transform.qml +++ b/tests/auto/quick/qquickcanvasitem/data/tst_transform.qml @@ -6,6 +6,7 @@ CanvasTestCase { function init_data() { return testData("2d"); } function test_order(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -20,6 +21,7 @@ CanvasTestCase { } function test_rotate(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -90,6 +92,7 @@ CanvasTestCase { } function test_scale(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); @@ -182,6 +185,7 @@ CanvasTestCase { } function test_setTransform(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -325,6 +329,7 @@ CanvasTestCase { } function test_transform(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; @@ -460,6 +465,7 @@ CanvasTestCase { } function test_translate(row) { var canvas = createCanvasObject(row); + tryVerify(function() { return canvas.available; }); var ctx = canvas.getContext('2d'); ctx.reset(); ctx.fillStyle = '#f00'; diff --git a/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp b/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp index a6fb0fcb59..51020672b7 100644 --- a/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp +++ b/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp @@ -3117,7 +3117,12 @@ void tst_qquickflickable::setContentPositionWhileDragging() // QTBUG-104966 } else if (newExtent >= 0) { // ...or reduce the content size be be less than current (contentX, contentY) position // This forces the content item to move. - expectedContentPos = moveDelta; + // contentY: 150 + // 320 - 150 = 170 pixels down to bottom + // Now reduce contentHeight to 200 + // since we are at the bottom, and the flickable is 100 pixels tall, contentY must land + // at newExtent - 100. + if (isHorizontal) { flickable->setContentWidth(newExtent); } else { @@ -3127,6 +3132,7 @@ void tst_qquickflickable::setContentPositionWhileDragging() // QTBUG-104966 // We therefore cannot scroll/flick it further down. Drag it up towards the top instead // (by moving mouse down). pos += moveDelta; + expectedContentPos = unitDelta * (newExtent - (isHorizontal ? flickable->width() : flickable->height())); } QTest::mouseMove(&window, pos); diff --git a/tests/auto/quick/qquickflipable/data/flip-y-axis-flipable.qml b/tests/auto/quick/qquickflipable/data/flip-y-axis-flipable.qml new file mode 100644 index 0000000000..1b6a3f5018 --- /dev/null +++ b/tests/auto/quick/qquickflipable/data/flip-y-axis-flipable.qml @@ -0,0 +1,32 @@ +// Copyright (C) 2023 UnionTech Software Technology Co., Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import QtQuick + +Flipable { + id: flipable + + property real angle: 0 + width: 3840 // wider than 1024 * 2: part of it goes behind the camera while flipping + height: 2160 + + front: Rectangle { + width: parent.width + height: parent.height + color: "red" + anchors.centerIn: parent + } + back: Rectangle { + color: "yellow" + anchors.centerIn: parent + width: parent.width + height: parent.height + } + transform: Rotation { + id: rotation + origin.x: flipable.width / 2 + origin.y: flipable.height / 2 + axis.x: 0; axis.y: 1; axis.z: 0 + angle: flipable.angle + } +} diff --git a/tests/auto/quick/qquickflipable/tst_qquickflipable.cpp b/tests/auto/quick/qquickflipable/tst_qquickflipable.cpp index 7106041eda..55747a7cdd 100644 --- a/tests/auto/quick/qquickflipable/tst_qquickflipable.cpp +++ b/tests/auto/quick/qquickflipable/tst_qquickflipable.cpp @@ -52,6 +52,9 @@ private slots: void QTBUG_9161_crash(); void QTBUG_8474_qgv_abort(); + void flipRotationAngle_data(); + void flipRotationAngle(); + private: QQmlEngine engine; }; @@ -137,6 +140,31 @@ void tst_qquickflipable::QTBUG_8474_qgv_abort() delete window; } +void tst_qquickflipable::flipRotationAngle_data() +{ + QTest::addColumn<int>("angle"); + QTest::addColumn<QQuickFlipable::Side>("side"); + + QTest::newRow("89") << 89 << QQuickFlipable::Front; + QTest::newRow("91") << 91 << QQuickFlipable::Back; + QTest::newRow("-89") << -89 << QQuickFlipable::Front; + QTest::newRow("-91") << -91 << QQuickFlipable::Back; +} + +void tst_qquickflipable::flipRotationAngle() // QTBUG-75954 +{ + QFETCH(int, angle); + QFETCH(QQuickFlipable::Side, side); + + QQmlEngine engine; + QQmlComponent c(&engine, testFileUrl("flip-y-axis-flipable.qml")); + QQuickFlipable *obj = qobject_cast<QQuickFlipable*>(c.create()); + QVERIFY(obj != nullptr); + obj->setProperty("angle", angle); + QCOMPARE(obj->side(), side); + delete obj; +} + QTEST_MAIN(tst_qquickflipable) #include "tst_qquickflipable.moc" diff --git a/tests/auto/quick/qquicklistview2/data/qtbug86744.qml b/tests/auto/quick/qquicklistview2/data/qtbug86744.qml new file mode 100644 index 0000000000..c69a4f7ec6 --- /dev/null +++ b/tests/auto/quick/qquicklistview2/data/qtbug86744.qml @@ -0,0 +1,25 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQml.Models + +Item { + height: 200 + width: 100 + DelegateModel { + id: dm + model: 2 + delegate: Item { + width: 100 + height: 20 + property bool isCurrent: ListView.isCurrentItem + } + } + ListView { + objectName: "listView" + model: dm + currentIndex: 1 + anchors.fill: parent + } +} diff --git a/tests/auto/quick/qquicklistview2/data/qtbug98315.qml b/tests/auto/quick/qquicklistview2/data/qtbug98315.qml new file mode 100644 index 0000000000..bf2ed857b1 --- /dev/null +++ b/tests/auto/quick/qquicklistview2/data/qtbug98315.qml @@ -0,0 +1,98 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQml.Models + +Item { + width: 500 + height: 200 + + property list<QtObject> myModel: [ + QtObject { + objectName: "Item 0" + property bool selected: true + }, + QtObject { + objectName: "Item 1" + property bool selected: false + }, + QtObject { + objectName: "Item 2" + property bool selected: false + }, + QtObject { + objectName: "Item 3" + property bool selected: true + }, + QtObject { + objectName: "Item 4" + property bool selected: true + }, + QtObject { + objectName: "Item 5" + property bool selected: true + }, + QtObject { + objectName: "Item 6" + property bool selected: false + } + ] + + ListView { + objectName: "listView" + id: listview + width: 500 + height: 200 + + focus: true + clip: true + spacing: 2 + orientation: ListView.Horizontal + highlightMoveDuration: 300 + highlightMoveVelocity: -1 + preferredHighlightBegin: (500 - 100) / 2 + preferredHighlightEnd: (500 + 100) / 2 + highlightRangeMode: ListView.StrictlyEnforceRange + cacheBuffer: 500 + currentIndex: 1 + + model: DelegateModel { + id: delegateModel + filterOnGroup: "visible" + model: myModel + groups: [ + DelegateModelGroup { + name: "visible" + includeByDefault: true + } + ] + delegate: Rectangle { + id: tile + objectName: model.modelData.objectName + + width: 100 + height: 100 + border.width: 0 + anchors.verticalCenter: parent.verticalCenter + + visible: model.modelData.selected + Component.onCompleted: { + DelegateModel.inPersistedItems = true + DelegateModel.inVisible = Qt.binding(function () { + return model.modelData.selected + }) + } + + property bool isCurrent: ListView.isCurrentItem + color: isCurrent ? "red" : "green" + + Text { + id: valueText + anchors.centerIn: parent + text: model.modelData.objectName + } + } + } + } +} diff --git a/tests/auto/quick/qquicklistview2/tst_qquicklistview2.cpp b/tests/auto/quick/qquicklistview2/tst_qquicklistview2.cpp index 2c701bd5dc..4c6f9c70e2 100644 --- a/tests/auto/quick/qquicklistview2/tst_qquicklistview2.cpp +++ b/tests/auto/quick/qquicklistview2/tst_qquicklistview2.cpp @@ -63,6 +63,8 @@ private slots: void tapDelegateDuringFlicking(); void flickDuringFlicking_data(); void flickDuringFlicking(); + void isCurrentItem_DelegateModel(); + void isCurrentItem_NoRegressionWithDelegateModelGroups(); private: void flickWithTouch(QQuickWindow *window, const QPoint &from, const QPoint &to); @@ -423,6 +425,45 @@ void tst_QQuickListView2::delegateModelRefresh() QTRY_VERIFY(engine.rootObjects().first()->property("done").toBool()); } +void tst_QQuickListView2::isCurrentItem_DelegateModel() +{ + QScopedPointer<QQuickView> window(createView()); + window->setSource(testFileUrl("qtbug86744.qml")); + window->resize(640, 480); + window->show(); + QVERIFY(QTest::qWaitForWindowExposed(window.data())); + QQuickListView* listView = window->rootObject()->findChild<QQuickListView*>("listView"); + QVERIFY(listView); + QVariant value = listView->itemAtIndex(1)->property("isCurrent"); + QVERIFY(value.toBool() == true); +} + +void tst_QQuickListView2::isCurrentItem_NoRegressionWithDelegateModelGroups() +{ + QScopedPointer<QQuickView> window(createView()); + window->setSource(testFileUrl("qtbug98315.qml")); + window->show(); + QVERIFY(QTest::qWaitForWindowExposed(window.data())); + QQuickListView* listView = window->rootObject()->findChild<QQuickListView*>("listView"); + QVERIFY(listView); + + QQuickItem *item3 = listView->itemAtIndex(1); + QVERIFY(item3); + QCOMPARE(item3->property("isCurrent").toBool(), true); + + QObject *item0 = listView->itemAtIndex(0); + QVERIFY(item0); + QCOMPARE(item0->property("isCurrent").toBool(), false); + + // Press left arrow key -> Item 1 should become current, Item 3 should not + // be current anymore. After a previous fix of QTBUG-86744 it was working + // incorrectly - see QTBUG-98315 + QTest::keyPress(window.get(), Qt::Key_Left); + + QTRY_COMPARE(item0->property("isCurrent").toBool(), true); + QCOMPARE(item3->property("isCurrent").toBool(), false); +} + QTEST_MAIN(tst_QQuickListView2) #include "tst_qquicklistview2.moc" diff --git a/tests/auto/quick/qquickloader/tst_qquickloader.cpp b/tests/auto/quick/qquickloader/tst_qquickloader.cpp index 620ada57db..067fa759d8 100644 --- a/tests/auto/quick/qquickloader/tst_qquickloader.cpp +++ b/tests/auto/quick/qquickloader/tst_qquickloader.cpp @@ -133,6 +133,7 @@ private slots: void statusChangeOnlyEmittedOnce(); void setSourceAndCheckStatus(); + void loadComponentWithStates(); void asyncLoaderRace(); void noEngine(); @@ -1518,6 +1519,26 @@ void tst_QQuickLoader::setSourceAndCheckStatus() QCOMPARE(loader->status(), QQuickLoader::Null); } +void tst_QQuickLoader::loadComponentWithStates() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.setData(QByteArray("import QtQuick\n" + "Loader {\n" + "id: loader\n" + "property int createdObjCount: 0\n" + "states: [ State { when: true; PropertyChanges { target: loader; sourceComponent: myComp } } ]\n" + "Component { id: myComp; Item { Component.onCompleted: { ++createdObjCount } } }\n" + "}" ) + , dataDirectoryUrl()); + QScopedPointer<QQuickLoader> loader(qobject_cast<QQuickLoader*>(component.create())); + QTest::qWait(200); + QTRY_VERIFY(loader != nullptr); + QVERIFY(loader->item()); + QCOMPARE(static_cast<QQuickItem*>(loader.data())->childItems().size(), 1); + QCOMPARE(loader->property("createdObjCount").toInt(), 1); +} + void tst_QQuickLoader::asyncLoaderRace() { QQmlApplicationEngine engine; |