<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script type="text/javascript" src="canvas-blending-helpers.js"></script>
<script>
test(function(t) {
    var canvas = document.createElement('canvas');
    var sigma = 5;
    canvas.width = 10;
    canvas.height = 10;
    context = canvas.getContext('2d');
    for (var i = 0; i < blendModes.length; ++i) {
        context.clearRect(0, 0, 10, 10);
        context.save();
        drawBackdropColorGradientInContext(context);
        context.globalCompositeOperation = blendModes[i];
        drawSourceColorGradientInContext(context);
        checkBlendModeResult(i, context, sigma);
        context.restore();
    }
}, 'Series of tests to ensure correct results on applying different blend modes when drawing a gradient on top of another.');
</script>
