Add unit tests for SVG path
authorCharles Yin <charles.yin@nokia.com>
Tue, 22 May 2012 01:37:50 +0000 (11:37 +1000)
committerQt by Nokia <qt-info@nokia.com>
Wed, 23 May 2012 03:28:39 +0000 (05:28 +0200)
Change-Id: I4358416ccf973940fbd54633254274ba0a18e777
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
tests/auto/quick/qquickcanvasitem/data/tst_svgpath.qml [new file with mode: 0644]

diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_svgpath.qml b/tests/auto/quick/qquickcanvasitem/data/tst_svgpath.qml
new file mode 100644 (file)
index 0000000..2966811
--- /dev/null
@@ -0,0 +1,57 @@
+import QtQuick 2.0
+
+CanvasTestCase {
+   id:testCase
+   name: "svgpath"
+   function init_data() { return testData("2d"); }
+   function test_svgpath(row) {
+       var canvas = createCanvasObject(row);
+       var ctx = canvas.getContext('2d');
+       var svgs = [
+                   // Absolute coordinates, explicit commands.
+                    "M50 0 V50 H0 Q0 25 25 25 T50 0 C25 0 50 50 25 50 S25 0 0 0 Z",
+                   // Absolute coordinates, implicit commands.
+                    "M50 0 50 50 0 50 Q0 25 25 25 Q50 25 50 0 C25 0 50 50 25 50 C0 50 25 0 0 0 Z",
+                   // Relative coordinates, explicit commands.
+                    "m50 0 v50 h-50 q0 -25 25 -25 t25 -25 c-25 0 0 50 -25 50 s0 -50 -25 -50 z",
+                   // Relative coordinates, implicit commands.
+                    "m50 0 0 50 -50 0 q0 -25 25 -25 25 0 25 -25 c-25 0 0 50 -25 50 -25 0 0 -50 -25 -50 z",
+                   // Absolute coordinates, explicit commands, minimal whitespace.
+                    "m50 0v50h-50q0-25 25-25t25-25c-25 0 0 50-25 50s0-50-25-50z",
+                   // Absolute coordinates, explicit commands, extra whitespace.
+                    " M  50  0  V  50  H  0  Q 0  25   25 25 T  50 0 C 25   0 50  50 25 50 S  25 0 0  0 Z"
+                  ];
+
+       var blues = [
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                    1, 1, 0, 0, 0, 0, 0, 0, 0, 1,
+                    1, 1, 1, 0, 0, 0, 0, 0, 1, 1,
+                    1, 1, 1, 0, 0, 0, 0, 0, 1, 1,
+                    1, 1, 1, 0, 0, 0, 0, 0, 1, 0,
+                    1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
+                    1, 1, 0, 1, 1, 1, 1, 1, 0, 0,
+                    1, 0, 0, 1, 1, 1, 1, 1, 0, 0,
+                    1, 0, 0, 1, 1, 1, 1, 1, 0, 0,
+                    1, 0, 0, 0, 1, 1, 1, 0, 0, 0
+                   ];
+
+       ctx.fillRule = Qt.OddEvenFill;
+       for (var i = 0; i < svgs.length; i++) {
+           ctx.fillStyle = "blue";
+           ctx.fillRect(0, 0, 50, 50);
+           ctx.fillStyle = "red";
+           ctx.path = svgs[i];
+           ctx.fill();
+           var x, y;
+           for (x=0; x < 10; x++) {
+               for (y=0; y < 10; y++) {
+                   if (blues[y * 10 + x]) {
+                       comparePixel(ctx, x * 5, y * 5, 0, 0, 255, 255);
+                   } else {
+                       comparePixel(ctx, x * 5, y * 5, 255, 0, 0, 255);
+                   }
+               }
+           }
+       }
+   }
+}