blob: a518b2d79a34131a2a92252834461007874af276 [file] [log] [blame]
<script src="../../../../../resources/testharness.js"></script>
<script src="../../../../../resources/testharnessreport.js"></script>
<script>
var testScenarios = [
["Test default context creation parameters: srgb/8-8-8-8", {}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test CanvasColorSpace value srgb", {colorSpace: "srgb"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test CanvasColorSpace value rec2020, no pixel format, falls back to srgb/8-8-8-8", {colorSpace: "rec2020"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test CanvasColorSpace value p3, no pixel format, falls back to srgb/8-8-8-8", {colorSpace: "p3"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test CanvasPixelFormat value 8-8-8-8", {pixelFormat: "8-8-8-8"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test CanvasPixelFormat value 10-10-10-2, falls back to 8-8-8-8", {pixelFormat: "10-10-10-2"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test CanvasPixelFormat value 12-12-12-12, falls back to 8-8-8-8", {pixelFormat: "12-12-12-12"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test CanvasPixelFormat value float16", {pixelFormat: "float16"}, {colorSpace: "srgb", pixelFormat: "float16"}],
["Test supported CanvasColorSpace and CanvasPixelFormat combination: srgb/8-8-8-8", {colorSpace: "srgb", pixelFormat: "8-8-8-8"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test not-supported CanvasColorSpace and CanvasPixelFormat combination: srgb/10-10-10-2", {colorSpace: "srgb", pixelFormat: "10-10-10-2"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test not-supported CanvasColorSpace and CanvasPixelFormat combination: srgb/12-12-12-12", {colorSpace: "srgb", pixelFormat: "12-12-12-12"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test supported CanvasColorSpace and CanvasPixelFormat combination: srgb/float16", {colorSpace: "srgb", pixelFormat: "float16"}, {colorSpace: "srgb", pixelFormat: "float16"}],
["Test not-supported CanvasColorSpace and CanvasPixelFormat combination: rec2020/8-8-8-8, falls back to srgb/8-8-8-8", {colorSpace: "rec2020", pixelFormat: "8-8-8-8"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test not-supported CanvasColorSpace and CanvasPixelFormat combination: rec2020/10-10-10-2, falls back to srgb/8-8-8-8", {colorSpace: "rec2020", pixelFormat: "10-10-10-2"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test not-supported CanvasColorSpace and CanvasPixelFormat combination: rec2020/12-12-12-12, falls back to srgb/8-8-8-8", {colorSpace: "rec2020", pixelFormat: "12-12-12-12"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test supported CanvasColorSpace and CanvasPixelFormat combination: rec2020/float16", {colorSpace: "rec2020", pixelFormat: "float16"}, {colorSpace: "rec2020", pixelFormat: "float16"}],
["Test not-supported CanvasColorSpace and CanvasPixelFormat combination: p3/8-8-8-8, falls back to srgb/8-8-8-8", {colorSpace: "p3", pixelFormat: "8-8-8-8"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test not-supported CanvasColorSpace and CanvasPixelFormat combination: p3/10-10-10-2, falls back to srgb/8-8-8-8", {colorSpace: "p3", pixelFormat: "10-10-10-2"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test not-supported CanvasColorSpace and CanvasPixelFormat combination: p3/12-12-12-12, falls back to srgb/8-8-8-8", {colorSpace: "p3", pixelFormat: "12-12-12-12"}, {colorSpace: "srgb", pixelFormat: "8-8-8-8"}],
["Test supported CanvasColorSpace and CanvasPixelFormat combination: p3/float16", {colorSpace: "p3", pixelFormat: "float16"}, {colorSpace: "p3", pixelFormat: "float16"}],
];
function runTestScenario(contextCreationParameters, expectedContextAttributes) {
var canvas = document. createElement('canvas');
var ctx = canvas.getContext('2d', contextCreationParameters);
var contextAttributes = ctx.getContextAttributes();
assert_equals(contextAttributes.colorSpace, expectedContextAttributes.colorSpace);
assert_equals(contextAttributes.pixelFormat, expectedContextAttributes.pixelFormat);
}
generate_tests(runTestScenario, testScenarios);
</script>