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

<h1>2d.path.rect.nonfinite</h1>
<p class="desc">rect() with Infinity/NaN is ignored</p>


<script>
var t = async_test("rect() with Infinity/NaN is ignored");
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.moveTo(0, 0);
ctx.lineTo(100, 0);
ctx.rect(Infinity, 50, 1, 1);
ctx.rect(-Infinity, 50, 1, 1);
ctx.rect(NaN, 50, 1, 1);
ctx.rect(0, Infinity, 1, 1);
ctx.rect(0, -Infinity, 1, 1);
ctx.rect(0, NaN, 1, 1);
ctx.rect(0, 50, Infinity, 1);
ctx.rect(0, 50, -Infinity, 1);
ctx.rect(0, 50, NaN, 1);
ctx.rect(0, 50, 1, Infinity);
ctx.rect(0, 50, 1, -Infinity);
ctx.rect(0, 50, 1, NaN);
ctx.rect(Infinity, Infinity, 1, 1);
ctx.rect(Infinity, Infinity, Infinity, 1);
ctx.rect(Infinity, Infinity, Infinity, Infinity);
ctx.rect(Infinity, Infinity, 1, Infinity);
ctx.rect(Infinity, 50, Infinity, 1);
ctx.rect(Infinity, 50, Infinity, Infinity);
ctx.rect(Infinity, 50, 1, Infinity);
ctx.rect(0, Infinity, Infinity, 1);
ctx.rect(0, Infinity, Infinity, Infinity);
ctx.rect(0, Infinity, 1, Infinity);
ctx.rect(0, 50, Infinity, Infinity);
ctx.lineTo(100, 50);
ctx.lineTo(0, 50);
ctx.fillStyle = '#0f0';
ctx.fill();
_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");
_assertPixel(offscreenCanvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255");
t.done();

});
</script>
