1 // Unit tests for SaturationEffect.
4 #include "gtest/gtest.h"
5 #include "saturation_effect.h"
7 TEST(SaturationEffectTest, SaturationOneIsPassThrough) {
9 1.0f, 0.5f, 0.75f, 0.6f,
12 EffectChainTester tester(data, 1, 1, FORMAT_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
13 Effect *saturation_effect = tester.get_chain()->add_effect(new SaturationEffect());
14 ASSERT_TRUE(saturation_effect->set_float("saturation", 1.0f));
15 tester.run(out_data, GL_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
17 expect_equal(data, out_data, 1, 1);
20 TEST(SaturationEffectTest, SaturationZeroRemovesColorButPreservesAlpha) {
22 0.0f, 0.0f, 0.0f, 1.0f,
23 0.5f, 0.5f, 0.5f, 0.3f,
24 1.0f, 0.0f, 0.0f, 1.0f,
25 0.0f, 1.0f, 0.0f, 0.7f,
26 0.0f, 0.0f, 1.0f, 1.0f,
28 float expected_data[] = {
29 0.0f, 0.0f, 0.0f, 1.0f,
30 0.5f, 0.5f, 0.5f, 0.3f,
31 0.2126f, 0.2126f, 0.2126f, 1.0f,
32 0.7152f, 0.7152f, 0.7152f, 0.7f,
33 0.0722f, 0.0722f, 0.0722f, 1.0f,
36 float out_data[5 * 4];
37 EffectChainTester tester(data, 5, 1, FORMAT_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
38 Effect *saturation_effect = tester.get_chain()->add_effect(new SaturationEffect());
39 ASSERT_TRUE(saturation_effect->set_float("saturation", 0.0f));
40 tester.run(out_data, GL_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
42 expect_equal(expected_data, out_data, 4, 5);
45 TEST(SaturationEffectTest, DoubleSaturation) {
47 0.0f, 0.0f, 0.0f, 1.0f,
48 0.5f, 0.5f, 0.5f, 0.3f,
49 0.3f, 0.1f, 0.1f, 1.0f,
51 float expected_data[] = {
52 0.0f, 0.0f, 0.0f, 1.0f,
53 0.5f, 0.5f, 0.5f, 0.3f,
54 0.4570f, 0.0575f, 0.0575f, 1.0f,
57 float out_data[3 * 4];
58 EffectChainTester tester(data, 3, 1, FORMAT_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
59 Effect *saturation_effect = tester.get_chain()->add_effect(new SaturationEffect());
60 ASSERT_TRUE(saturation_effect->set_float("saturation", 2.0f));
61 tester.run(out_data, GL_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
63 expect_equal(expected_data, out_data, 4, 3);