<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by tools/gentest.py. -->
<title>Canvas test: toDataURL.png.primarycolours</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>toDataURL.png.primarycolours</h1>
<p class="desc">toDataURL with PNG handles simple colours correctly</p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
<p class="output expectedtext">Expected output:<p><img src="toDataURL.png.primarycolours.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
var t = async_test("toDataURL with PNG handles simple colours correctly");
_addTest(function(canvas, ctx) {

ctx.fillStyle = '#ff0';
ctx.fillRect(0, 0, 25, 40);
ctx.fillStyle = '#0ff';
ctx.fillRect(25, 0, 50, 40);
ctx.fillStyle = '#00f';
ctx.fillRect(75, 0, 25, 40);
ctx.fillStyle = '#fff';
ctx.fillRect(0, 40, 100, 10);
var data = canvas.toDataURL();
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var img = new Image();
deferTest();
img.onload = t.step_func_done(function ()
{
    ctx.drawImage(img, 0, 0);
    _assertPixel(canvas, 12,20, 255,255,0,255, "12,20", "255,255,0,255");
    _assertPixel(canvas, 50,20, 0,255,255,255, "50,20", "0,255,255,255");
    _assertPixel(canvas, 87,20, 0,0,255,255, "87,20", "0,0,255,255");
    _assertPixel(canvas, 50,45, 255,255,255,255, "50,45", "255,255,255,255");
});
img.src = data;


});
</script>

