blob: 5cde27c948baec7a942f8aaf29871375c7d97483 [file] [log] [blame]
<!DOCTYPE html>
<body>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script>
function checkDataTypeAgainstStorageFormat(data, storageFormat) {
if (storageFormat == "uint8")
assert_equals(Object.prototype.toString.call(data), "[object Uint8ClampedArray]");
else if (storageFormat == "uint16")
assert_equals(Object.prototype.toString.call(data), "[object Uint16Array]");
else if (storageFormat == "float32")
assert_equals(Object.prototype.toString.call(data), "[object Float32Array]");
}
function checkColorSettings(colorSettings, colorSpace, storageFormat) {
assert_equals(colorSettings.colorSpace, colorSpace);
assert_equals(colorSettings.storageFormat, storageFormat);
}
function runTest(colorSettings, expectedColorSettings) {
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
imageData = ctx.createImageData(1, 1, colorSettings);
checkDataTypeAgainstStorageFormat(imageData.data, colorSettings.storageFormat);
assert_array_equals(imageData.data, [0, 0, 0, 0]);
checkColorSettings(imageData.getSettings(), expectedColorSettings.colorSpace, expectedColorSettings.storageFormat);
}
var testScenarios = [
["Test default color settings: {undefined, undefined} -> {srgb, uint8}", {}, {colorSpace: "srgb", storageFormat: "uint8"}],
["Test default color space: {undefined, float32} -> {srgb, float32}", {storageFormat: "float32"}, {colorSpace: "srgb", storageFormat: "float32"}],
["Test default storage format: {srgb, undefined} -> {srgb, uint8}", {colorSpace: "srgb"}, {colorSpace: "srgb", storageFormat: "uint8"}],
["Test color settings: {srgb, uint8}", {colorSpace: "srgb", storageFormat: "uint8"}, {colorSpace: "srgb", storageFormat: "uint8"}],
["Test color settings: {srgb, uint16}", {colorSpace: "srgb", storageFormat: "uint16"}, {colorSpace: "srgb", storageFormat: "uint16"}],
["Test color settings: {srgb, float32}", {colorSpace: "srgb", storageFormat: "float32"}, {colorSpace: "srgb", storageFormat: "float32"}],
["Test color settings: {rec2020, uint8}", {colorSpace: "rec2020", storageFormat: "uint8"}, {colorSpace: "rec2020", storageFormat: "uint8"}],
["Test color settings: {rec2020, uint16}", {colorSpace: "rec2020", storageFormat: "uint16"}, {colorSpace: "rec2020", storageFormat: "uint16"}],
["Test color settings: {rec2020, float32}", {colorSpace: "rec2020", storageFormat: "float32"}, {colorSpace: "rec2020", storageFormat: "float32"}],
["Test color settings: {display-p3, uint8}", {colorSpace: "display-p3", storageFormat: "uint8"}, {colorSpace: "display-p3", storageFormat: "uint8"}],
["Test color settings: {display-p3, uint16}", {colorSpace: "display-p3", storageFormat: "uint16"}, {colorSpace: "display-p3", storageFormat: "uint16"}],
["Test color settings: {display-p3, float32}", {colorSpace: "display-p3", storageFormat: "float32"}, {colorSpace: "display-p3", storageFormat: "float32"}],
];
generate_tests(runTest, testScenarios);
</script>
</body>