<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>Canvas test: 2d.path.roundrect.4.radii.1.dompointinit</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.path.roundrect.4.radii.1.dompointinit</h1>
<p class="desc">Verify that when four radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left corner.</p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("Verify that when four radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left corner.");
_addTest(function(canvas, ctx) {

ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0, 0, 0]);
ctx.fillStyle = '#0f0';
ctx.fill();

// top-left corner
_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255");
_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255");
_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255");
_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255");

// other corners
_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255");
_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255");
_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255");


});
</script>

