1 // Unit tests for GammaExpansionEffect.
5 #include "gamma_expansion_effect.h"
6 #include "gtest/gtest.h"
9 TEST(GammaExpansionEffectTest, sRGB_KeyValues) {
12 0.040f, 0.041f, // On either side of the discontinuity.
14 float expected_data[] = {
19 EffectChainTester tester(data, 2, 2, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_sRGB);
20 tester.run(out_data, GL_RED, COLORSPACE_sRGB, GAMMA_LINEAR);
22 expect_equal(expected_data, out_data, 2, 2);
25 TEST(GammaExpansionEffectTest, sRGB_RampAlwaysIncreases) {
26 float data[256], out_data[256];
27 for (unsigned i = 0; i < 256; ++i) {
30 EffectChainTester tester(data, 256, 1, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_sRGB);
31 tester.run(out_data, GL_RED, COLORSPACE_sRGB, GAMMA_LINEAR);
33 for (unsigned i = 1; i < 256; ++i) {
34 EXPECT_GT(out_data[i], out_data[i - 1])
35 << "No increase between " << i-1 << " and " << i;
39 TEST(GammaExpansionEffectTest, sRGB_AlphaIsUnchanged) {
41 0.0f, 0.0f, 0.0f, 0.0f,
42 0.0f, 0.0f, 0.0f, 0.25f,
43 0.0f, 0.0f, 0.0f, 0.5f,
44 0.0f, 0.0f, 0.0f, 0.75f,
45 0.0f, 0.0f, 0.0f, 1.0f,
47 float out_data[5 * 4];
48 EffectChainTester tester(data, 5, 1, FORMAT_RGBA_POSTMULTIPLIED_ALPHA, COLORSPACE_sRGB, GAMMA_sRGB);
49 tester.run(out_data, GL_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
51 expect_equal(data, out_data, 5, 1);
54 TEST(GammaExpansionEffectTest, Rec709_KeyValues) {
57 0.080f, 0.082f, // On either side of the discontinuity.
59 float expected_data[] = {
64 EffectChainTester tester(data, 2, 2, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_REC_709);
65 tester.run(out_data, GL_RED, COLORSPACE_sRGB, GAMMA_LINEAR);
67 expect_equal(expected_data, out_data, 2, 2);
70 TEST(GammaExpansionEffectTest, Rec709_RampAlwaysIncreases) {
71 float data[256], out_data[256];
72 for (unsigned i = 0; i < 256; ++i) {
75 EffectChainTester tester(data, 256, 1, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_REC_709);
76 tester.run(out_data, GL_RED, COLORSPACE_sRGB, GAMMA_LINEAR);
78 for (unsigned i = 1; i < 256; ++i) {
79 EXPECT_GT(out_data[i], out_data[i - 1])
80 << "No increase between " << i-1 << " and " << i;
84 TEST(GammaExpansionEffectTest, Rec709_AlphaIsUnchanged) {
86 0.0f, 0.0f, 0.0f, 0.0f,
87 0.0f, 0.0f, 0.0f, 0.25f,
88 0.0f, 0.0f, 0.0f, 0.5f,
89 0.0f, 0.0f, 0.0f, 0.75f,
90 0.0f, 0.0f, 0.0f, 1.0f,
92 float out_data[5 * 4];
93 EffectChainTester tester(data, 5, 1, FORMAT_RGBA_POSTMULTIPLIED_ALPHA, COLORSPACE_sRGB, GAMMA_REC_709);
94 tester.run(out_data, GL_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
96 expect_equal(data, out_data, 5, 1);