<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by tools/gentest.py. -->
<title>Canvas test: 2d.imageData.get.source.size</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.imageData.get.source.size</h1>
<p class="desc">getImageData() returns bigger ImageData for bigger source rectangle</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("getImageData() returns bigger ImageData for bigger source rectangle");
_addTest(function(canvas, ctx) {

var imgdata1 = ctx.getImageData(0, 0, 10, 10);
var imgdata2 = ctx.getImageData(0, 0, 20, 20);
_assert(imgdata2.width > imgdata1.width, "imgdata2.width > imgdata1.width");
_assert(imgdata2.height > imgdata1.height, "imgdata2.height > imgdata1.height");


});
</script>

