| // Copyright 2022 Google LLC |
| // SPDX-License-Identifier: BSD-2-Clause |
| |
| #include "avif/avif.h" |
| #include "aviftest_helpers.h" |
| #include "gtest/gtest.h" |
| |
| namespace libavif { |
| namespace { |
| |
| TEST(OpaqueTest, AlphaAndNoAlpha) { |
| for (bool alpha_is_opaque : {false, true}) { |
| for (int depth : {8, 10, 12}) { |
| testutil::AvifImagePtr alpha = testutil::CreateImage( |
| 1, 1, depth, AVIF_PIXEL_FORMAT_YUV444, AVIF_PLANES_ALL); |
| testutil::AvifImagePtr no_alpha = testutil::CreateImage( |
| 1, 1, depth, AVIF_PIXEL_FORMAT_YUV444, AVIF_PLANES_YUV); |
| |
| const uint32_t max_value = (1u << depth) - 1; |
| const uint32_t yuva[] = {max_value, max_value, max_value, |
| alpha_is_opaque ? max_value : (max_value - 1)}; |
| testutil::FillImagePlain(alpha.get(), yuva); |
| testutil::FillImagePlain(no_alpha.get(), yuva); |
| |
| EXPECT_EQ(testutil::AreImagesEqual(*alpha, *no_alpha), alpha_is_opaque); |
| } |
| } |
| } |
| |
| } // namespace |
| } // namespace libavif |