<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script type="text/javascript" src="canvas-blending-helpers.js"></script>
<script>
function drawElement(context, i) {
    if (i >= blendModes.length)
        return;
    context.clearRect(0, 0, 10, 10);
    context.save();
    drawBackdropColorPatternInContext(context,
    function() {
        context.globalCompositeOperation = blendModes[i];
        drawSourceColorInContext(context);
        checkBlendModeResult(i, context, 5);
        context.restore();
        drawElement(context, ++i);
    });
}

test(function(t) {
    var canvas = document.createElement("canvas");
    var sigma = 5;
    canvas.width = 10;
    canvas.height = 10;
    context = canvas.getContext("2d");
    drawElement(context, 0);
}, 'Series of tests to ensure correct results on applying different blend modes when drawing a rectangle on top of an pattern.');
</script>
