]> git.sesse.net Git - movit/blob - alpha_division_effect_test.cpp
Make Movit work in premultiplied alpha.
[movit] / alpha_division_effect_test.cpp
1 // Unit tests for AlphaDivisionEffect.
2
3 #include "test_util.h"
4 #include "gtest/gtest.h"
5
6 TEST(AlphaDivisionEffectTest, SimpleTest) {
7         const int size = 2;
8         float data[4 * size] = {
9                 0.1f, 0.5f, 0.1f, 0.5f,
10                 0.2f, 0.2f, 1.0f, 1.0f,
11         };
12         float expected_data[4 * size] = {
13                 0.2f, 1.0f, 0.2f, 0.5f,
14                 0.2f, 0.2f, 1.0f, 1.0f,
15         };
16         float out_data[4 * size];
17         EffectChainTester tester(data, 1, size, FORMAT_RGBA_PREMULTIPLIED_ALPHA, COLORSPACE_sRGB, GAMMA_LINEAR);
18         tester.run(out_data, GL_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
19
20         expect_equal(expected_data, out_data, 4, size);
21 }
22
23 TEST(AlphaDivisionEffectTest, ZeroAlphaIsPreserved) {
24         const int size = 2;
25         float data[4 * size] = {
26                 0.1f, 0.5f, 0.1f, 0.0f,
27                 0.0f, 0.0f, 0.0f, 0.0f,
28         };
29         float out_data[4 * size];
30         EffectChainTester tester(data, 1, size, FORMAT_RGBA_PREMULTIPLIED_ALPHA, COLORSPACE_sRGB, GAMMA_LINEAR);
31         tester.run(out_data, GL_RGBA, COLORSPACE_sRGB, GAMMA_LINEAR);
32
33         EXPECT_EQ(0.0f, out_data[3]);
34         EXPECT_EQ(0.0f, out_data[7]);
35 }