xref: /aosp_15_r20/external/libjpeg-turbo/gtest/tjunittest-gtest-wrapper.cpp (revision dfc6aa5c1cfd4bc4e2018dc74aa96e29ee49c6da)
1*dfc6aa5cSAndroid Build Coastguard Worker /*
2*dfc6aa5cSAndroid Build Coastguard Worker  * Copyright 2020 The Chromium Authors. All Rights Reserved.
3*dfc6aa5cSAndroid Build Coastguard Worker  *
4*dfc6aa5cSAndroid Build Coastguard Worker  * This software is provided 'as-is', without any express or implied
5*dfc6aa5cSAndroid Build Coastguard Worker  * warranty.  In no event will the authors be held liable for any damages
6*dfc6aa5cSAndroid Build Coastguard Worker  * arising from the use of this software.
7*dfc6aa5cSAndroid Build Coastguard Worker  *
8*dfc6aa5cSAndroid Build Coastguard Worker  * Permission is granted to anyone to use this software for any purpose,
9*dfc6aa5cSAndroid Build Coastguard Worker  * including commercial applications, and to alter it and redistribute it
10*dfc6aa5cSAndroid Build Coastguard Worker  * freely, subject to the following restrictions:
11*dfc6aa5cSAndroid Build Coastguard Worker  *
12*dfc6aa5cSAndroid Build Coastguard Worker  * 1. The origin of this software must not be misrepresented; you must not
13*dfc6aa5cSAndroid Build Coastguard Worker  *    claim that you wrote the original software. If you use this software
14*dfc6aa5cSAndroid Build Coastguard Worker  *    in a product, an acknowledgment in the product documentation would be
15*dfc6aa5cSAndroid Build Coastguard Worker  *    appreciated but is not required.
16*dfc6aa5cSAndroid Build Coastguard Worker  * 2. Altered source versions must be plainly marked as such, and must not be
17*dfc6aa5cSAndroid Build Coastguard Worker  *    misrepresented as being the original software.
18*dfc6aa5cSAndroid Build Coastguard Worker  * 3. This notice may not be removed or altered from any source distribution.
19*dfc6aa5cSAndroid Build Coastguard Worker  */
20*dfc6aa5cSAndroid Build Coastguard Worker 
21*dfc6aa5cSAndroid Build Coastguard Worker #include <gtest/gtest.h>
22*dfc6aa5cSAndroid Build Coastguard Worker 
23*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testBmp(int yuv, int noyuvpad, int autoalloc);
24*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testThreeByte444(int yuv, int noyuvpad, int autoalloc);
25*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testFourByte444(int yuv, int noyuvpad, int autoalloc);
26*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testThreeByte422(int yuv, int noyuvpad, int autoalloc);
27*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testFourByte422(int yuv, int noyuvpad, int autoalloc);
28*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testThreeByte420(int yuv, int noyuvpad, int autoalloc);
29*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testFourByte420(int yuv, int noyuvpad, int autoalloc);
30*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testThreeByte440(int yuv, int noyuvpad, int autoalloc);
31*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testFourByte440(int yuv, int noyuvpad, int autoalloc);
32*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testThreeByte411(int yuv, int noyuvpad, int autoalloc);
33*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testFourByte411(int yuv, int noyuvpad, int autoalloc);
34*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testOnlyGray(int yuv, int noyuvpad, int autoalloc);
35*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testThreeByteGray(int yuv, int noyuvpad, int autoalloc);
36*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testFourByteGray(int yuv, int noyuvpad, int autoalloc);
37*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testBufSize(int yuv, int noyuvpad, int autoalloc);
38*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testYUVOnlyRGB444(int noyuvpad, int autoalloc);
39*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testYUVOnlyRGB422(int noyuvpad, int autoalloc);
40*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testYUVOnlyRGB420(int noyuvpad, int autoalloc);
41*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testYUVOnlyRGB440(int noyuvpad, int autoalloc);
42*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testYUVOnlyRGB411(int noyuvpad, int autoalloc);
43*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testYUVOnlyRGBGray(int noyuvpad, int autoalloc);
44*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int testYUVOnlyGrayGray(int noyuvpad, int autoalloc);
45*dfc6aa5cSAndroid Build Coastguard Worker 
46*dfc6aa5cSAndroid Build Coastguard Worker const int YUV = 1;
47*dfc6aa5cSAndroid Build Coastguard Worker const int NO_YUV = 0;
48*dfc6aa5cSAndroid Build Coastguard Worker const int NO_YUV_PAD = 1;
49*dfc6aa5cSAndroid Build Coastguard Worker const int YUV_PAD = 0;
50*dfc6aa5cSAndroid Build Coastguard Worker const int AUTO_ALLOC = 1;
51*dfc6aa5cSAndroid Build Coastguard Worker const int NO_AUTO_ALLOC = 0;
52*dfc6aa5cSAndroid Build Coastguard Worker 
53*dfc6aa5cSAndroid Build Coastguard Worker class TJUnitTest : public
54*dfc6aa5cSAndroid Build Coastguard Worker   ::testing::TestWithParam<std::tuple<int, int, int>> {};
55*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,BMP)56*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, BMP) {
57*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testBmp(std::get<0>(GetParam()),
58*dfc6aa5cSAndroid Build Coastguard Worker                     std::get<1>(GetParam()),
59*dfc6aa5cSAndroid Build Coastguard Worker                     std::get<2>(GetParam())), 0);
60*dfc6aa5cSAndroid Build Coastguard Worker }
61*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,ThreeByte444)62*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, ThreeByte444) {
63*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testThreeByte444(std::get<0>(GetParam()),
64*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<1>(GetParam()),
65*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<2>(GetParam())), 0);
66*dfc6aa5cSAndroid Build Coastguard Worker }
67*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,FourByte444)68*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, FourByte444) {
69*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testFourByte444(std::get<0>(GetParam()),
70*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<1>(GetParam()),
71*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<2>(GetParam())), 0);
72*dfc6aa5cSAndroid Build Coastguard Worker }
73*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,ThreeByte422)74*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, ThreeByte422) {
75*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testThreeByte422(std::get<0>(GetParam()),
76*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<1>(GetParam()),
77*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<2>(GetParam())), 0);
78*dfc6aa5cSAndroid Build Coastguard Worker }
79*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,FourByte422)80*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, FourByte422) {
81*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testFourByte422(std::get<0>(GetParam()),
82*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<1>(GetParam()),
83*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<2>(GetParam())), 0);
84*dfc6aa5cSAndroid Build Coastguard Worker }
85*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,ThreeByte420)86*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, ThreeByte420) {
87*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testThreeByte420(std::get<0>(GetParam()),
88*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<1>(GetParam()),
89*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<2>(GetParam())), 0);
90*dfc6aa5cSAndroid Build Coastguard Worker }
91*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,FourByte420)92*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, FourByte420) {
93*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testFourByte420(std::get<0>(GetParam()),
94*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<1>(GetParam()),
95*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<2>(GetParam())), 0);
96*dfc6aa5cSAndroid Build Coastguard Worker }
97*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,ThreeByte440)98*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, ThreeByte440) {
99*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testThreeByte440(std::get<0>(GetParam()),
100*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<1>(GetParam()),
101*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<2>(GetParam())), 0);
102*dfc6aa5cSAndroid Build Coastguard Worker }
103*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,FourByte440)104*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, FourByte440) {
105*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testFourByte440(std::get<0>(GetParam()),
106*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<1>(GetParam()),
107*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<2>(GetParam())), 0);
108*dfc6aa5cSAndroid Build Coastguard Worker }
109*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,ThreeByte411)110*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, ThreeByte411) {
111*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testThreeByte411(std::get<0>(GetParam()),
112*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<1>(GetParam()),
113*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<2>(GetParam())), 0);
114*dfc6aa5cSAndroid Build Coastguard Worker }
115*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,FourByte411)116*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, FourByte411) {
117*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testFourByte411(std::get<0>(GetParam()),
118*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<1>(GetParam()),
119*dfc6aa5cSAndroid Build Coastguard Worker                             std::get<2>(GetParam())), 0);
120*dfc6aa5cSAndroid Build Coastguard Worker }
121*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,OnlyGray)122*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, OnlyGray) {
123*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testOnlyGray(std::get<0>(GetParam()),
124*dfc6aa5cSAndroid Build Coastguard Worker                          std::get<1>(GetParam()),
125*dfc6aa5cSAndroid Build Coastguard Worker                          std::get<2>(GetParam())), 0);
126*dfc6aa5cSAndroid Build Coastguard Worker }
127*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,ThreeByteGray)128*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, ThreeByteGray) {
129*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testThreeByteGray(std::get<0>(GetParam()),
130*dfc6aa5cSAndroid Build Coastguard Worker                               std::get<1>(GetParam()),
131*dfc6aa5cSAndroid Build Coastguard Worker                               std::get<2>(GetParam())), 0);
132*dfc6aa5cSAndroid Build Coastguard Worker }
133*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,FourByteGray)134*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, FourByteGray) {
135*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testFourByteGray(std::get<0>(GetParam()),
136*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<1>(GetParam()),
137*dfc6aa5cSAndroid Build Coastguard Worker                              std::get<2>(GetParam())), 0);
138*dfc6aa5cSAndroid Build Coastguard Worker }
139*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTest,BufSize)140*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTest, BufSize) {
141*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testBufSize(std::get<0>(GetParam()),
142*dfc6aa5cSAndroid Build Coastguard Worker                         std::get<1>(GetParam()),
143*dfc6aa5cSAndroid Build Coastguard Worker                         std::get<2>(GetParam())), 0);
144*dfc6aa5cSAndroid Build Coastguard Worker }
145*dfc6aa5cSAndroid Build Coastguard Worker 
146*dfc6aa5cSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
147*dfc6aa5cSAndroid Build Coastguard Worker         TJUnitTests,
148*dfc6aa5cSAndroid Build Coastguard Worker         TJUnitTest,
149*dfc6aa5cSAndroid Build Coastguard Worker         ::testing::Values(std::make_tuple(NO_YUV, YUV_PAD, NO_AUTO_ALLOC),
150*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(NO_YUV, YUV_PAD, AUTO_ALLOC),
151*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(NO_YUV, NO_YUV_PAD, NO_AUTO_ALLOC),
152*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(NO_YUV, NO_YUV_PAD, AUTO_ALLOC),
153*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(YUV, YUV_PAD, NO_AUTO_ALLOC),
154*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(YUV, YUV_PAD, AUTO_ALLOC),
155*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(YUV, NO_YUV_PAD, NO_AUTO_ALLOC),
156*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(YUV, NO_YUV_PAD, AUTO_ALLOC)));
157*dfc6aa5cSAndroid Build Coastguard Worker 
158*dfc6aa5cSAndroid Build Coastguard Worker class TJUnitTestYUV : public ::testing::TestWithParam<std::tuple<int, int>> {};
159*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTestYUV,YUVOnlyRGB444)160*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTestYUV, YUVOnlyRGB444) {
161*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testYUVOnlyRGB444(std::get<0>(GetParam()),
162*dfc6aa5cSAndroid Build Coastguard Worker                               std::get<1>(GetParam())), 0);
163*dfc6aa5cSAndroid Build Coastguard Worker }
164*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTestYUV,YUVOnlyRGB422)165*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTestYUV, YUVOnlyRGB422) {
166*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testYUVOnlyRGB422(std::get<0>(GetParam()),
167*dfc6aa5cSAndroid Build Coastguard Worker                               std::get<1>(GetParam())), 0);
168*dfc6aa5cSAndroid Build Coastguard Worker }
169*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTestYUV,YUVOnlyRGB420)170*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTestYUV, YUVOnlyRGB420) {
171*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testYUVOnlyRGB420(std::get<0>(GetParam()),
172*dfc6aa5cSAndroid Build Coastguard Worker                               std::get<1>(GetParam())), 0);
173*dfc6aa5cSAndroid Build Coastguard Worker }
174*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTestYUV,YUVOnlyRGB440)175*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTestYUV, YUVOnlyRGB440) {
176*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testYUVOnlyRGB440(std::get<0>(GetParam()),
177*dfc6aa5cSAndroid Build Coastguard Worker                               std::get<1>(GetParam())), 0);
178*dfc6aa5cSAndroid Build Coastguard Worker }
179*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTestYUV,YUVOnlyRGB411)180*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTestYUV, YUVOnlyRGB411) {
181*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testYUVOnlyRGB411(std::get<0>(GetParam()),
182*dfc6aa5cSAndroid Build Coastguard Worker                               std::get<1>(GetParam())), 0);
183*dfc6aa5cSAndroid Build Coastguard Worker }
184*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTestYUV,YUVOnlyRGBGray)185*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTestYUV, YUVOnlyRGBGray) {
186*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testYUVOnlyRGBGray(std::get<0>(GetParam()),
187*dfc6aa5cSAndroid Build Coastguard Worker                                std::get<1>(GetParam())), 0);
188*dfc6aa5cSAndroid Build Coastguard Worker }
189*dfc6aa5cSAndroid Build Coastguard Worker 
TEST_P(TJUnitTestYUV,YUVOnlyGrayGray)190*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(TJUnitTestYUV, YUVOnlyGrayGray) {
191*dfc6aa5cSAndroid Build Coastguard Worker   EXPECT_EQ(testYUVOnlyGrayGray(std::get<0>(GetParam()),
192*dfc6aa5cSAndroid Build Coastguard Worker                                 std::get<1>(GetParam())), 0);
193*dfc6aa5cSAndroid Build Coastguard Worker }
194*dfc6aa5cSAndroid Build Coastguard Worker 
195*dfc6aa5cSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(
196*dfc6aa5cSAndroid Build Coastguard Worker         TJUnitTestsYUV,
197*dfc6aa5cSAndroid Build Coastguard Worker         TJUnitTestYUV,
198*dfc6aa5cSAndroid Build Coastguard Worker         ::testing::Values(std::make_tuple(YUV_PAD, NO_AUTO_ALLOC),
199*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(YUV_PAD, AUTO_ALLOC),
200*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(NO_YUV_PAD, NO_AUTO_ALLOC),
201*dfc6aa5cSAndroid Build Coastguard Worker                           std::make_tuple(NO_YUV_PAD, AUTO_ALLOC)));
202