description("Series of tests to ensure correct behaviour of the ImageData object");

imageData = document.getElementById("canvas").getContext("2d").getImageData(0,0,2,2);

shouldBe("imageData.width", "2");
shouldBe("imageData.height", "2");
shouldBe("imageData.data.length", "16");
for (var i = 0; i < imageData.data.length; i++)
    shouldBe("imageData.data["+i+"]", "0");

var testValues = [NaN, true, false, "\"garbage\"", "-1",
                  "\"0\"", "\"1\"", "\"2\"", Infinity, -Infinity,
                  -5, -0.5, 0, 0.5, 5,
                  5.4, 255, 256, null, undefined];
var testResults = [0, 1, 0, 0, 0,
                   0, 1, 2, 255, 0,
                   0, 0, 0, 0, 5,
                   5, 255, 255, 0, 0];
for (var i = 0; i < testValues.length; i++) {
    shouldBe("imageData.data[0] = "+testValues[i]+", imageData.data[0]", ""+testResults[i]);
}

shouldBe("imageData.data['foo']='garbage',imageData.data['foo']", "'garbage'");
shouldBe("imageData.data[-1]='garbage',imageData.data[-1]", "undefined");
shouldBe("imageData.data[17]='garbage',imageData.data[17]", "undefined");