<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.gradient.interpolate.zerosize.strokeRect</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>

<h1>2d.gradient.interpolate.zerosize.strokeRect</h1>
<p class="desc"></p>


<script>
var t = async_test("");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
    throw reason;
});
t.step(function() {

var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');

ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
g.addColorStop(0, '#f00');
g.addColorStop(1, '#f00');
ctx.strokeStyle = g;
ctx.strokeRect(20, 20, 60, 10);
_assertPixel(offscreenCanvas, 19,19, 0,255,0,255, "19,19", "0,255,0,255");
_assertPixel(offscreenCanvas, 20,19, 0,255,0,255, "20,19", "0,255,0,255");
_assertPixel(offscreenCanvas, 21,19, 0,255,0,255, "21,19", "0,255,0,255");
_assertPixel(offscreenCanvas, 19,20, 0,255,0,255, "19,20", "0,255,0,255");
_assertPixel(offscreenCanvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255");
_assertPixel(offscreenCanvas, 21,20, 0,255,0,255, "21,20", "0,255,0,255");
_assertPixel(offscreenCanvas, 19,21, 0,255,0,255, "19,21", "0,255,0,255");
_assertPixel(offscreenCanvas, 20,21, 0,255,0,255, "20,21", "0,255,0,255");
_assertPixel(offscreenCanvas, 21,21, 0,255,0,255, "21,21", "0,255,0,255");
t.done();

});
</script>
