<!DOCTYPE HTML>
<html>
<body>
    <script src="../../resources/js-test-pre.js"></script>
    <script type="text/javascript" src="canvas-blending-helpers.js"></script>
    <script type="text/javascript">

        description("Series of tests to ensure correct results on applying different blend modes when drawing a rectangle on top of another.");

        var context;
        function actualColor(x, y) {
            return context.getImageData(x, y, 1, 1).data;
        }

        function checkBlendModeResult(i, context, sigma) {
            var expectedColor = blendColors([129 / 255, 1, 129 / 255, 1], [1, 129 / 255, 129 / 255, 1], i);
            var ac = "actualColor(0, 0)";
            shouldBeCloseTo(ac + "[0]", expectedColor[0], sigma);
            shouldBeCloseTo(ac + "[1]", expectedColor[1], sigma);
            shouldBeCloseTo(ac + "[2]", expectedColor[2], sigma);
            shouldBeCloseTo(ac + "[3]", expectedColor[3], sigma);
        }

        function runTest(width, height) {
            var canvas = document.createElement("canvas");
            var sigma = 5;
            canvas.width = width;
            canvas.height = height;
            context = canvas.getContext("2d");
            document.body.appendChild(canvas);

            for (var i = 0; i < blendModes.length; ++i) {
                debug("Testing blend mode " + blendModes[i]);

                context.clearRect(0, 0, 10, 10);
                context.save();
                drawBackdropColorInContext(context);
                context.globalCompositeOperation = blendModes[i];
                drawSourceColorInContext(context);
                checkBlendModeResult(i, context, sigma);
                context.restore();
                debug('');
            }
        }

        debug('Running test in non accelerated mode\n');
        runTest(10, 10);
        debug('Running test in hardware accelerated mode\n');
        runTest(100, 100);
    </script>
    <script src="../../resources/js-test-post.js"></script>
</body>
</html>
