// DO NOT EDIT! This test has been generated by tools/gentest.py.
// OffscreenCanvas test in a worker:2d.imageData.object.clamp
// Description:ImageData.data clamps numbers to [0, 255]
// Note:

importScripts("/resources/testharness.js");
importScripts("/common/canvas-tests.js");

var t = async_test("ImageData.data clamps numbers to [0, 255]");
t.step(function() {

var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');

var imgdata = ctx.getImageData(0, 0, 10, 10);
imgdata.data[0] = 100;
imgdata.data[0] = 300;
_assertSame(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255");
imgdata.data[0] = 100;
imgdata.data[0] = -100;
_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0");
imgdata.data[0] = 100;
imgdata.data[0] = 200+Math.pow(2, 32);
_assertSame(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255");
imgdata.data[0] = 100;
imgdata.data[0] = -200-Math.pow(2, 32);
_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0");
imgdata.data[0] = 100;
imgdata.data[0] = Math.pow(10, 39);
_assertSame(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255");
imgdata.data[0] = 100;
imgdata.data[0] = -Math.pow(10, 39);
_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0");
imgdata.data[0] = 100;
imgdata.data[0] = -Infinity;
_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0");
imgdata.data[0] = 100;
imgdata.data[0] = Infinity;
_assertSame(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255");

t.done();

});
done();
