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

<h1>2d.gradient.object.return</h1>
<p class="desc">createLinearGradient() and createRadialGradient() returns objects implementing CanvasGradient</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("createLinearGradient() and createRadialGradient() returns objects implementing CanvasGradient");
_addTest(function(canvas, ctx) {

window.CanvasGradient.prototype.thisImplementsCanvasGradient = true;

var g1 = ctx.createLinearGradient(0, 0, 100, 0);
_assertDifferent(g1.addColorStop, undefined, "g1.addColorStop", "undefined");
_assertSame(g1.thisImplementsCanvasGradient, true, "g1.thisImplementsCanvasGradient", "true");

var g2 = ctx.createRadialGradient(0, 0, 10, 0, 0, 20);
_assertDifferent(g2.addColorStop, undefined, "g2.addColorStop", "undefined");
_assertSame(g2.thisImplementsCanvasGradient, true, "g2.thisImplementsCanvasGradient", "true");


});
</script>

