Test Path2D as argument for fill.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Simple test of Path2D as argumeny for fill().
PASS areaColor(imageData.data, {r:0,g:255,b:0,a:255}) is true

Transform context and apply fill(). Context path should be ignored.
PASS areaColor(imageData.data, {r:0,g:255,b:0,a:255}) is true
PASS areaColor(imageData.data, {r:0,g:0,b:0,a:0}) is true

Path2D should not affect context path.
PASS areaColor(imageData.data, {r:0,g:255,b:0,a:255}) is true
PASS areaColor(imageData.data, {r:0,g:0,b:0,a:0}) is true
PASS areaColor(imageData.data, {r:0,g:0,b:0,a:0}) is true
PASS areaColor(imageData.data, {r:0,g:255,b:0,a:255}) is true

Test WindingRule for Path2D.
PASS areaColor(imageData.data, {r:0,g:255,b:0,a:255}) is true
PASS areaColor(imageData.data, {r:0,g:255,b:0,a:255}) is true
PASS areaColor(imageData.data, {r:0,g:255,b:0,a:255}) is true
PASS areaColor(imageData.data, {r:0,g:255,b:0,a:255}) is true
PASS areaColor(imageData.data, {r:0,g:255,b:0,a:255}) is true
PASS areaColor(imageData.data, {r:0,g:0,b:0,a:0}) is true
PASS ctx.fill(0) threw exception TypeError: Argument 1 ('fillRule') to CanvasRenderingContext2D.fill must be one of: "nonzero", "evenodd".
PASS ctx.fill(null) threw exception TypeError: Argument 1 ('fillRule') to CanvasRenderingContext2D.fill must be one of: "nonzero", "evenodd".
PASS ctx.fill('path2d') threw exception TypeError: Argument 1 ('fillRule') to CanvasRenderingContext2D.fill must be one of: "nonzero", "evenodd".
PASS ctx.fill(undefined) did not throw exception.
PASS ctx.fill(Number.MAX_VALUE) threw exception TypeError: Argument 1 ('fillRule') to CanvasRenderingContext2D.fill must be one of: "nonzero", "evenodd".
PASS ctx.fill(function() {}) threw exception TypeError: Argument 1 ('fillRule') to CanvasRenderingContext2D.fill must be one of: "nonzero", "evenodd".
PASS ctx.fill(false) threw exception TypeError: Argument 1 ('fillRule') to CanvasRenderingContext2D.fill must be one of: "nonzero", "evenodd".
PASS ctx.fill(new Date()) threw exception TypeError: Argument 1 ('fillRule') to CanvasRenderingContext2D.fill must be one of: "nonzero", "evenodd".
PASS ctx.fill(0, 'nonzero') threw exception TypeError: Argument 1 ('path') to CanvasRenderingContext2D.fill must be an instance of Path2D.
PASS ctx.fill(null, 'nonzero') threw exception TypeError: Argument 1 ('path') to CanvasRenderingContext2D.fill must be an instance of Path2D.
PASS ctx.fill('path2d', 'nonzero') threw exception TypeError: Argument 1 ('path') to CanvasRenderingContext2D.fill must be an instance of Path2D.
FAIL ctx.fill(undefined) should throw an exception. Was undefined.
PASS ctx.fill(Number.MAX_VALUE, 'nonzero') threw exception TypeError: Argument 1 ('path') to CanvasRenderingContext2D.fill must be an instance of Path2D.
PASS ctx.fill(function() {}, 'nonzero') threw exception TypeError: Argument 1 ('path') to CanvasRenderingContext2D.fill must be an instance of Path2D.
PASS ctx.fill(false, 'nonzero') threw exception TypeError: Argument 1 ('path') to CanvasRenderingContext2D.fill must be an instance of Path2D.
PASS ctx.fill(new Date(), 'nonzero') threw exception TypeError: Argument 1 ('path') to CanvasRenderingContext2D.fill must be an instance of Path2D.
PASS successfullyParsed is true

TEST COMPLETE
 
