diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /testing/web-platform/tests/webcodecs/videoColorSpace.any.js | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/webcodecs/videoColorSpace.any.js')
-rw-r--r-- | testing/web-platform/tests/webcodecs/videoColorSpace.any.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webcodecs/videoColorSpace.any.js b/testing/web-platform/tests/webcodecs/videoColorSpace.any.js new file mode 100644 index 0000000000..3af828a5bd --- /dev/null +++ b/testing/web-platform/tests/webcodecs/videoColorSpace.any.js @@ -0,0 +1,47 @@ +// META: global=window,dedicatedworker + +const VIDEO_COLOR_SPACE_SETS = { + primaries: ['bt709', 'bt470bg', 'smpte170m', 'bt2020', 'smpte432'], + transfer: ['bt709', 'smpte170m', 'iec61966-2-1', 'linear', 'pq', 'hlg'], + matrix: ['rgb', 'bt709', 'bt470bg', 'smpte170m', 'bt2020-ncl'], + fullRange: [true, false], +}; + +function generateAllCombinations() { + const keys = Object.keys(VIDEO_COLOR_SPACE_SETS); + let colorSpaces = []; + generateAllCombinationsHelper(keys, 0, {}, colorSpaces); + return colorSpaces; +} + +function generateAllCombinationsHelper(keys, keyIndex, colorSpace, results) { + if (keyIndex >= keys.length) { + // Push the copied object since the colorSpace will be reused. + results.push(Object.assign({}, colorSpace)); + return; + } + + const prop = keys[keyIndex]; + // case 1: Skip this property. + generateAllCombinationsHelper(keys, keyIndex + 1, colorSpace, results); + // case 2: Set this property with a valid value. + for (const val of VIDEO_COLOR_SPACE_SETS[prop]) { + colorSpace[prop] = val; + generateAllCombinationsHelper(keys, keyIndex + 1, colorSpace, results); + delete colorSpace[prop]; + } +} + +test(t => { + let colorSpaces = generateAllCombinations(); + for (const colorSpace of colorSpaces) { + let vcs = new VideoColorSpace(colorSpace); + let json = vcs.toJSON(); + for (const k of Object.keys(json)) { + assert_equals( + json[k], + colorSpace.hasOwnProperty(k) ? colorSpace[k] : null + ); + } + } +}, 'Test VideoColorSpace toJSON() works.'); |