Index: third_party/WebKit/LayoutTests/fast/canvas/canvas-isPointInPath-winding.html |
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-isPointInPath-winding.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-isPointInPath-winding.html |
index 3da366513624241e128fad4a9eb4993c35c6eb52..82851c0fcd5211c55e957a60f741f1420a0edd04 100644 |
--- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-isPointInPath-winding.html |
+++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-isPointInPath-winding.html |
@@ -1,8 +1,95 @@ |
-<!doctype html> |
-<html> |
-<head> |
-<script src="../../resources/js-test.js"></script> |
-</head> |
-<body> |
-<script src="script-tests/canvas-isPointInPath-winding.js"></script> |
-</body> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<script> |
+ |
+var canvas = document.createElement('canvas'); |
+canvas.width = 200; |
+canvas.height = 200; |
+ctx = canvas.getContext('2d'); |
+ |
+test(function(t) { |
+ // Testing default isPointInPath'); |
+ ctx.beginPath(); |
+ ctx.rect(0, 0, 100, 100); |
+ ctx.rect(25, 25, 50, 50); |
+ assert_true(ctx.isPointInPath(50, 50)); |
+ assert_false(ctx.isPointInPath(NaN, 50)); |
+ assert_false(ctx.isPointInPath(50, NaN)); |
+ |
+ // Testing nonzero isPointInPath'); |
+ ctx.beginPath(); |
+ ctx.rect(0, 0, 100, 100); |
+ ctx.rect(25, 25, 50, 50); |
+ assert_true(ctx.isPointInPath(50, 50, 'nonzero')); |
+ |
+ // Testing evenodd isPointInPath'); |
+ ctx.beginPath(); |
+ ctx.rect(0, 0, 100, 100); |
+ ctx.rect(25, 25, 50, 50); |
+ assert_false(ctx.isPointInPath(50, 50, 'evenodd')); |
+ |
+ // reset path in context |
+ ctx.beginPath(); |
+ |
+ // Testing default isPointInPath with Path object'); |
+ path = new Path2D(); |
+ path.rect(0, 0, 100, 100); |
+ path.rect(25, 25, 50, 50); |
+ assert_true(ctx.isPointInPath(path, 50, 50)); |
+ assert_true(ctx.isPointInPath(path, 50, 50, undefined)); |
+ assert_false(ctx.isPointInPath(path, NaN, 50)); |
+ assert_false(ctx.isPointInPath(path, 50, NaN)); |
+ |
+ // Testing nonzero isPointInPath with Path object'); |
+ path = new Path2D(); |
+ path.rect(0, 0, 100, 100); |
+ path.rect(25, 25, 50, 50); |
+ assert_true(ctx.isPointInPath(path, 50, 50, 'nonzero')); |
+ |
+ // Testing evenodd isPointInPath with Path object'); |
+ path = new Path2D(); |
+ path.rect(0, 0, 100, 100); |
+ path.rect(25, 25, 50, 50); |
+ assert_false(ctx.isPointInPath(path, 50, 50, 'evenodd')); |
+ |
+ // Testing invalid enumeration isPointInPath (w/ and w/o Path object'); |
+ assert_throws(null, function(){ ctx.isPointInPath(path, 50, 50, 'gazonk');}); |
+ assert_throws(null, function(){ ctx.isPointInPath(50, 50, 'gazonk');}); |
+ |
+ // Testing invalid type isPointInPath with Path object'); |
+ assert_throws(null, function(){ ctx.isPointInPath(null, 50, 50);}); |
+ assert_throws(null, function(){ ctx.isPointInPath(null, 50, 50, 'nonzero');}); |
+ assert_throws(null, function(){ ctx.isPointInPath(null, 50, 50, 'evenodd');}); |
+ assert_throws(null, function(){ ctx.isPointInPath(null, 50, 50, null);}); |
+ assert_throws(null, function(){ ctx.isPointInPath(path, 50, 50, null);}); |
+ assert_throws(null, function(){ ctx.isPointInPath(undefined, 50, 50);}); |
+ assert_throws(null, function(){ ctx.isPointInPath(undefined, 50, 50, 'nonzero');}); |
+ assert_throws(null, function(){ ctx.isPointInPath(undefined, 50, 50, 'evenodd');}); |
+ assert_throws(null, function(){ ctx.isPointInPath(undefined, 50, 50, undefined);}); |
+ assert_throws(null, function(){ ctx.isPointInPath([], 50, 50);}); |
+ assert_throws(null, function(){ ctx.isPointInPath([], 50, 50, 'nonzero');}); |
+ assert_throws(null, function(){ ctx.isPointInPath([], 50, 50, 'evenodd');}); |
+ assert_throws(null, function(){ ctx.isPointInPath({}, 50, 50);}); |
+ assert_throws(null, function(){ ctx.isPointInPath({}, 50, 50, 'nonzero');}); |
+ assert_throws(null, function(){ ctx.isPointInPath({}, 50, 50, 'evenodd');}); |
+ |
+ // Testing extremely large scale |
+ ctx.save(); |
+ ctx.scale(Number.MAX_VALUE, Number.MAX_VALUE); |
+ ctx.beginPath(); |
+ ctx.rect(-10, -10, 20, 20); |
+ assert_true(ctx.isPointInPath(0, 0, 'nonzero')); |
+ assert_true(ctx.isPointInPath(0, 0, 'evenodd')); |
+ ctx.restore(); |
+ |
+ // Check with non-invertible ctm. |
+ ctx.save(); |
+ ctx.scale(0, 0); |
+ ctx.beginPath(); |
+ ctx.rect(-10, -10, 20, 20); |
+ assert_false(ctx.isPointInPath(0, 0, 'nonzero')); |
+ assert_false(ctx.isPointInPath(0, 0, 'evenodd')); |
+ ctx.restore(); |
+}, "Series of tests to ensure correct results of the winding rule in isPointInPath."); |
+ |
+</script> |