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 "base/files/file.h"
22*dfc6aa5cSAndroid Build Coastguard Worker #include "base/files/file_util.h"
23*dfc6aa5cSAndroid Build Coastguard Worker #include "base/path_service.h"
24*dfc6aa5cSAndroid Build Coastguard Worker #include "gtest-utils.h"
25*dfc6aa5cSAndroid Build Coastguard Worker
26*dfc6aa5cSAndroid Build Coastguard Worker #include <gtest/gtest.h>
27*dfc6aa5cSAndroid Build Coastguard Worker #include <string>
28*dfc6aa5cSAndroid Build Coastguard Worker
29*dfc6aa5cSAndroid Build Coastguard Worker extern "C" int djpeg(int argc, char *argv[]);
30*dfc6aa5cSAndroid Build Coastguard Worker
31*dfc6aa5cSAndroid Build Coastguard Worker const static std::vector<std::tuple<const std::string,
32*dfc6aa5cSAndroid Build Coastguard Worker const std::string,
33*dfc6aa5cSAndroid Build Coastguard Worker const std::string>> SCALE_IMAGE_MD5 = {
34*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("2/1", "testout_420m_islow_2_1.ppm",
35*dfc6aa5cSAndroid Build Coastguard Worker "9f9de8c0612f8d06869b960b05abf9c9"),
36*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("15/8", "testout_420m_islow_15_8.ppm",
37*dfc6aa5cSAndroid Build Coastguard Worker "b6875bc070720b899566cc06459b63b7"),
38*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("13/8", "testout_420m_islow_13_8.ppm",
39*dfc6aa5cSAndroid Build Coastguard Worker "bc3452573c8152f6ae552939ee19f82f"),
40*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("11/8", "testout_420m_islow_11_8.ppm",
41*dfc6aa5cSAndroid Build Coastguard Worker "d8cc73c0aaacd4556569b59437ba00a5"),
42*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("9/8", "testout_420m_islow_9_8.ppm",
43*dfc6aa5cSAndroid Build Coastguard Worker "d25e61bc7eac0002f5b393aa223747b6"),
44*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("7/8", "testout_420m_islow_7_8.ppm",
45*dfc6aa5cSAndroid Build Coastguard Worker "ddb564b7c74a09494016d6cd7502a946"),
46*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("3/4", "testout_420m_islow_3_4.ppm",
47*dfc6aa5cSAndroid Build Coastguard Worker "8ed8e68808c3fbc4ea764fc9d2968646"),
48*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("5/8", "testout_420m_islow_5_8.ppm",
49*dfc6aa5cSAndroid Build Coastguard Worker "a3363274999da2366a024efae6d16c9b"),
50*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("1/2", "testout_420m_islow_1_2.ppm",
51*dfc6aa5cSAndroid Build Coastguard Worker "e692a315cea26b988c8e8b29a5dbcd81"),
52*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("3/8", "testout_420m_islow_3_8.ppm",
53*dfc6aa5cSAndroid Build Coastguard Worker "79eca9175652ced755155c90e785a996"),
54*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("1/4", "testout_420m_islow_1_4.ppm",
55*dfc6aa5cSAndroid Build Coastguard Worker "79cd778f8bf1a117690052cacdd54eca"),
56*dfc6aa5cSAndroid Build Coastguard Worker std::make_tuple("1/8", "testout_420m_islow_1_8.ppm",
57*dfc6aa5cSAndroid Build Coastguard Worker "391b3d4aca640c8567d6f8745eb2142f")
58*dfc6aa5cSAndroid Build Coastguard Worker };
59*dfc6aa5cSAndroid Build Coastguard Worker
60*dfc6aa5cSAndroid Build Coastguard Worker class DJPEGTestScalingDCT : public
61*dfc6aa5cSAndroid Build Coastguard Worker ::testing::TestWithParam<std::tuple<const std::string,
62*dfc6aa5cSAndroid Build Coastguard Worker const std::string,
63*dfc6aa5cSAndroid Build Coastguard Worker const std::string>> {};
64*dfc6aa5cSAndroid Build Coastguard Worker
TEST_P(DJPEGTestScalingDCT,Test)65*dfc6aa5cSAndroid Build Coastguard Worker TEST_P(DJPEGTestScalingDCT, Test) {
66*dfc6aa5cSAndroid Build Coastguard Worker
67*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
68*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testorig.jpg");
69*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
70*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII(std::get<1>(GetParam()));
71*dfc6aa5cSAndroid Build Coastguard Worker
72*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
73*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
74*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
75*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-scale";
76*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = std::get<0>(GetParam());
77*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-nosmooth";
78*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-ppm";
79*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = "-outfile";
80*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = output_path.MaybeAsASCII();
81*dfc6aa5cSAndroid Build Coastguard Worker std::string arg9 = input_image_path.MaybeAsASCII();
82*dfc6aa5cSAndroid Build Coastguard Worker
83*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
84*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
85*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0], &arg9[0]
86*dfc6aa5cSAndroid Build Coastguard Worker };
87*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
88*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(10, command_line), 0);
89*dfc6aa5cSAndroid Build Coastguard Worker
90*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
91*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, std::get<2>(GetParam())));
92*dfc6aa5cSAndroid Build Coastguard Worker }
93*dfc6aa5cSAndroid Build Coastguard Worker
94*dfc6aa5cSAndroid Build Coastguard Worker INSTANTIATE_TEST_SUITE_P(TestScalingDCT,
95*dfc6aa5cSAndroid Build Coastguard Worker DJPEGTestScalingDCT,
96*dfc6aa5cSAndroid Build Coastguard Worker ::testing::ValuesIn(SCALE_IMAGE_MD5));
97*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlow420256)98*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow420256) {
99*dfc6aa5cSAndroid Build Coastguard Worker
100*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
101*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testorig.jpg");
102*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
103*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_420_islow_256.bmp");
104*dfc6aa5cSAndroid Build Coastguard Worker
105*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
106*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
107*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
108*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-colors";
109*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "256";
110*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-bmp";
111*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
112*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
113*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
114*dfc6aa5cSAndroid Build Coastguard Worker
115*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
116*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
117*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
118*dfc6aa5cSAndroid Build Coastguard Worker };
119*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
120*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
121*dfc6aa5cSAndroid Build Coastguard Worker
122*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
123*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "4980185e3776e89bd931736e1cddeee6";
124*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
125*dfc6aa5cSAndroid Build Coastguard Worker }
126*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlow420565)127*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow420565) {
128*dfc6aa5cSAndroid Build Coastguard Worker
129*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
130*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testorig.jpg");
131*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
132*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_420_islow_565.bmp");
133*dfc6aa5cSAndroid Build Coastguard Worker
134*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
135*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
136*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
137*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-rgb565";
138*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-dither";
139*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "none";
140*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-bmp";
141*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = "-outfile";
142*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = output_path.MaybeAsASCII();
143*dfc6aa5cSAndroid Build Coastguard Worker std::string arg9 = input_image_path.MaybeAsASCII();
144*dfc6aa5cSAndroid Build Coastguard Worker
145*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
146*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
147*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0], &arg9[0]
148*dfc6aa5cSAndroid Build Coastguard Worker };
149*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
150*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(10, command_line), 0);
151*dfc6aa5cSAndroid Build Coastguard Worker
152*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
153*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "bf9d13e16c4923b92e1faa604d7922cb";
154*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
155*dfc6aa5cSAndroid Build Coastguard Worker }
156*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlow420565D)157*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow420565D) {
158*dfc6aa5cSAndroid Build Coastguard Worker
159*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
160*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testorig.jpg");
161*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
162*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_420_islow_565D.bmp");
163*dfc6aa5cSAndroid Build Coastguard Worker
164*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
165*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
166*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
167*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-rgb565";
168*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-bmp";
169*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-outfile";
170*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = output_path.MaybeAsASCII();
171*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = input_image_path.MaybeAsASCII();
172*dfc6aa5cSAndroid Build Coastguard Worker
173*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
174*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
175*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0]
176*dfc6aa5cSAndroid Build Coastguard Worker };
177*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
178*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(8, command_line), 0);
179*dfc6aa5cSAndroid Build Coastguard Worker
180*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
181*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "6bde71526acc44bcff76f696df8638d2";
182*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
183*dfc6aa5cSAndroid Build Coastguard Worker }
184*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlow420M565)185*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow420M565) {
186*dfc6aa5cSAndroid Build Coastguard Worker
187*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
188*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testorig.jpg");
189*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
190*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_420m_islow_565.bmp");
191*dfc6aa5cSAndroid Build Coastguard Worker
192*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
193*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
194*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
195*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-nosmooth";
196*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-rgb565";
197*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-dither";
198*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "none";
199*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = "-bmp";
200*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = "-outfile";
201*dfc6aa5cSAndroid Build Coastguard Worker std::string arg9 = output_path.MaybeAsASCII();
202*dfc6aa5cSAndroid Build Coastguard Worker std::string arg10 = input_image_path.MaybeAsASCII();
203*dfc6aa5cSAndroid Build Coastguard Worker
204*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
205*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
206*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0], &arg9[0], &arg10[0]
207*dfc6aa5cSAndroid Build Coastguard Worker };
208*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
209*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(11, command_line), 0);
210*dfc6aa5cSAndroid Build Coastguard Worker
211*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
212*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "8dc0185245353cfa32ad97027342216f";
213*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
214*dfc6aa5cSAndroid Build Coastguard Worker }
215*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlow420M565D)216*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow420M565D) {
217*dfc6aa5cSAndroid Build Coastguard Worker
218*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
219*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testorig.jpg");
220*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
221*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_420m_islow_565D.bmp");
222*dfc6aa5cSAndroid Build Coastguard Worker
223*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
224*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
225*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
226*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-nosmooth";
227*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-rgb565";
228*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-bmp";
229*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
230*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
231*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
232*dfc6aa5cSAndroid Build Coastguard Worker
233*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
234*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
235*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
236*dfc6aa5cSAndroid Build Coastguard Worker };
237*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
238*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
239*dfc6aa5cSAndroid Build Coastguard Worker
240*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
241*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "ce034037d212bc403330df6f915c161b";
242*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
243*dfc6aa5cSAndroid Build Coastguard Worker }
244*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlow420Skip1531)245*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow420Skip1531) {
246*dfc6aa5cSAndroid Build Coastguard Worker
247*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
248*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testorig.jpg");
249*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
250*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_420_islow_skip15_31.ppm");
251*dfc6aa5cSAndroid Build Coastguard Worker
252*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
253*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
254*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
255*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-skip";
256*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "15,31";
257*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-ppm";
258*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
259*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
260*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
261*dfc6aa5cSAndroid Build Coastguard Worker
262*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
263*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
264*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
265*dfc6aa5cSAndroid Build Coastguard Worker };
266*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
267*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
268*dfc6aa5cSAndroid Build Coastguard Worker
269*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
270*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "c4c65c1e43d7275cd50328a61e6534f0";
271*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
272*dfc6aa5cSAndroid Build Coastguard Worker }
273*dfc6aa5cSAndroid Build Coastguard Worker
274*dfc6aa5cSAndroid Build Coastguard Worker #ifdef C_ARITH_CODING_SUPPORTED
TEST(DJPEGTest,ISlow420AriSkip16139)275*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow420AriSkip16139) {
276*dfc6aa5cSAndroid Build Coastguard Worker
277*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
278*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testimgari.jpg");
279*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
280*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII(
281*dfc6aa5cSAndroid Build Coastguard Worker "testout_420_islow_ari_skip16_139.ppm");
282*dfc6aa5cSAndroid Build Coastguard Worker
283*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
284*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
285*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
286*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-skip";
287*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "16,139";
288*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-ppm";
289*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
290*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
291*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
292*dfc6aa5cSAndroid Build Coastguard Worker
293*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
294*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
295*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
296*dfc6aa5cSAndroid Build Coastguard Worker };
297*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
298*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
299*dfc6aa5cSAndroid Build Coastguard Worker
300*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
301*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "087c6b123db16ac00cb88c5b590bb74a";
302*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
303*dfc6aa5cSAndroid Build Coastguard Worker }
304*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlow420AriCrop53x5344)305*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow420AriCrop53x5344) {
306*dfc6aa5cSAndroid Build Coastguard Worker
307*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
308*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testimgari.jpg");
309*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
310*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII(
311*dfc6aa5cSAndroid Build Coastguard Worker "testout_420_islow_ari_crop53x53_4_4.ppm");
312*dfc6aa5cSAndroid Build Coastguard Worker
313*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
314*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
315*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
316*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-crop";
317*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "53x53+4+4";
318*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-ppm";
319*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
320*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
321*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
322*dfc6aa5cSAndroid Build Coastguard Worker
323*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
324*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
325*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
326*dfc6aa5cSAndroid Build Coastguard Worker };
327*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
328*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
329*dfc6aa5cSAndroid Build Coastguard Worker
330*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
331*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "886c6775af22370257122f8b16207e6d";
332*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
333*dfc6aa5cSAndroid Build Coastguard Worker }
334*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,IFast420MAri)335*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, IFast420MAri) {
336*dfc6aa5cSAndroid Build Coastguard Worker
337*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
338*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testimgari.jpg");
339*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
340*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_420m_ifast_ari.ppm");
341*dfc6aa5cSAndroid Build Coastguard Worker
342*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
343*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-fast";
344*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "-ppm";
345*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-outfile";
346*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = output_path.MaybeAsASCII();
347*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = input_image_path.MaybeAsASCII();
348*dfc6aa5cSAndroid Build Coastguard Worker
349*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
350*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0]
351*dfc6aa5cSAndroid Build Coastguard Worker };
352*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
353*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(6, command_line), 0);
354*dfc6aa5cSAndroid Build Coastguard Worker
355*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
356*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "72b59a99bcf1de24c5b27d151bde2437";
357*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
358*dfc6aa5cSAndroid Build Coastguard Worker }
359*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlow444AriCrop37x3700)360*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow444AriCrop37x3700) {
361*dfc6aa5cSAndroid Build Coastguard Worker
362*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
363*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_444_islow_ari.jpg");
364*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
365*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII(
366*dfc6aa5cSAndroid Build Coastguard Worker "testout_444_islow_ari_crop37x37_0_0.ppm");
367*dfc6aa5cSAndroid Build Coastguard Worker
368*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
369*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
370*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
371*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-crop";
372*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "37x37+0+0";
373*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-ppm";
374*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
375*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
376*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
377*dfc6aa5cSAndroid Build Coastguard Worker
378*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
379*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
380*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
381*dfc6aa5cSAndroid Build Coastguard Worker };
382*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
383*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
384*dfc6aa5cSAndroid Build Coastguard Worker
385*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
386*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "cb57b32bd6d03e35432362f7bf184b6d";
387*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
388*dfc6aa5cSAndroid Build Coastguard Worker }
389*dfc6aa5cSAndroid Build Coastguard Worker #endif
390*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,RGBISlow)391*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, RGBISlow) {
392*dfc6aa5cSAndroid Build Coastguard Worker
393*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
394*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_rgb_islow.jpg");
395*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
396*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_rgb_islow.ppm");
397*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_icc_path(GetTargetDirectory());
398*dfc6aa5cSAndroid Build Coastguard Worker output_icc_path = output_icc_path.AppendASCII("testout_rgb_islow.icc");
399*dfc6aa5cSAndroid Build Coastguard Worker
400*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
401*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
402*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
403*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-ppm";
404*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-icc";
405*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = output_icc_path.MaybeAsASCII();
406*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
407*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
408*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
409*dfc6aa5cSAndroid Build Coastguard Worker
410*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
411*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
412*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
413*dfc6aa5cSAndroid Build Coastguard Worker };
414*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
415*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
416*dfc6aa5cSAndroid Build Coastguard Worker
417*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
418*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "00a257f5393fef8821f2b88ac7421291";
419*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
420*dfc6aa5cSAndroid Build Coastguard Worker const std::string ICC_EXPECTED_MD5 = "b06a39d730129122e85c1363ed1bbc9e";
421*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_icc_path, ICC_EXPECTED_MD5));
422*dfc6aa5cSAndroid Build Coastguard Worker }
423*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,RGBISlow565)424*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, RGBISlow565) {
425*dfc6aa5cSAndroid Build Coastguard Worker
426*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
427*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_rgb_islow.jpg");
428*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
429*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_rgb_islow_565.bmp");
430*dfc6aa5cSAndroid Build Coastguard Worker
431*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
432*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
433*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
434*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-rgb565";
435*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-dither";
436*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "none";
437*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-bmp";
438*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = "-outfile";
439*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = output_path.MaybeAsASCII();
440*dfc6aa5cSAndroid Build Coastguard Worker std::string arg9 = input_image_path.MaybeAsASCII();
441*dfc6aa5cSAndroid Build Coastguard Worker
442*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
443*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
444*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0], &arg9[0]
445*dfc6aa5cSAndroid Build Coastguard Worker };
446*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
447*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(10, command_line), 0);
448*dfc6aa5cSAndroid Build Coastguard Worker
449*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
450*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "f07d2e75073e4bb10f6c6f4d36e2e3be";
451*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
452*dfc6aa5cSAndroid Build Coastguard Worker }
453*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,RGBISlow565D)454*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, RGBISlow565D) {
455*dfc6aa5cSAndroid Build Coastguard Worker
456*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
457*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_rgb_islow.jpg");
458*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
459*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_rgb_islow_565D.bmp");
460*dfc6aa5cSAndroid Build Coastguard Worker
461*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
462*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
463*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
464*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-rgb565";
465*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-bmp";
466*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-outfile";
467*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = output_path.MaybeAsASCII();
468*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = input_image_path.MaybeAsASCII();
469*dfc6aa5cSAndroid Build Coastguard Worker
470*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
471*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
472*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0]
473*dfc6aa5cSAndroid Build Coastguard Worker };
474*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
475*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(8, command_line), 0);
476*dfc6aa5cSAndroid Build Coastguard Worker
477*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
478*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "4cfa0928ef3e6bb626d7728c924cfda4";
479*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
480*dfc6aa5cSAndroid Build Coastguard Worker }
481*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,IFast422)482*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, IFast422) {
483*dfc6aa5cSAndroid Build Coastguard Worker
484*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
485*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_422_ifast_opt.jpg");
486*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
487*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_422_ifast.ppm");
488*dfc6aa5cSAndroid Build Coastguard Worker
489*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
490*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
491*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "fast";
492*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-outfile";
493*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = output_path.MaybeAsASCII();
494*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = input_image_path.MaybeAsASCII();
495*dfc6aa5cSAndroid Build Coastguard Worker
496*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
497*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0]
498*dfc6aa5cSAndroid Build Coastguard Worker };
499*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
500*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(6, command_line), 0);
501*dfc6aa5cSAndroid Build Coastguard Worker
502*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
503*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "35bd6b3f833bad23de82acea847129fa";
504*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
505*dfc6aa5cSAndroid Build Coastguard Worker }
506*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,IFast422M)507*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, IFast422M) {
508*dfc6aa5cSAndroid Build Coastguard Worker
509*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
510*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_422_ifast_opt.jpg");
511*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
512*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_422m_ifast.ppm");
513*dfc6aa5cSAndroid Build Coastguard Worker
514*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
515*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
516*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "fast";
517*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-nosmooth";
518*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-outfile";
519*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = output_path.MaybeAsASCII();
520*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = input_image_path.MaybeAsASCII();
521*dfc6aa5cSAndroid Build Coastguard Worker
522*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
523*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
524*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0]
525*dfc6aa5cSAndroid Build Coastguard Worker };
526*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
527*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(7, command_line), 0);
528*dfc6aa5cSAndroid Build Coastguard Worker
529*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
530*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "8dbc65323d62cca7c91ba02dd1cfa81d";
531*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
532*dfc6aa5cSAndroid Build Coastguard Worker }
533*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,IFast422M565)534*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, IFast422M565) {
535*dfc6aa5cSAndroid Build Coastguard Worker
536*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
537*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_422_ifast_opt.jpg");
538*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
539*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_422m_ifast_565.bmp");
540*dfc6aa5cSAndroid Build Coastguard Worker
541*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
542*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
543*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
544*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-nosmooth";
545*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-rgb565";
546*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-dither";
547*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "none";
548*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = "-bmp";
549*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = "-outfile";
550*dfc6aa5cSAndroid Build Coastguard Worker std::string arg9 = output_path.MaybeAsASCII();
551*dfc6aa5cSAndroid Build Coastguard Worker std::string arg10 = input_image_path.MaybeAsASCII();
552*dfc6aa5cSAndroid Build Coastguard Worker
553*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
554*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
555*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0], &arg9[0], &arg10[0]
556*dfc6aa5cSAndroid Build Coastguard Worker };
557*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
558*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(11, command_line), 0);
559*dfc6aa5cSAndroid Build Coastguard Worker
560*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
561*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "3294bd4d9a1f2b3d08ea6020d0db7065";
562*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
563*dfc6aa5cSAndroid Build Coastguard Worker }
564*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,IFast422M565D)565*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, IFast422M565D) {
566*dfc6aa5cSAndroid Build Coastguard Worker
567*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
568*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_422_ifast_opt.jpg");
569*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
570*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_422m_ifast_565D.bmp");
571*dfc6aa5cSAndroid Build Coastguard Worker
572*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
573*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
574*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
575*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-nosmooth";
576*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-rgb565";
577*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-bmp";
578*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
579*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
580*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
581*dfc6aa5cSAndroid Build Coastguard Worker
582*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
583*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
584*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
585*dfc6aa5cSAndroid Build Coastguard Worker };
586*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
587*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
588*dfc6aa5cSAndroid Build Coastguard Worker
589*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
590*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "da98c9c7b6039511be4a79a878a9abc1";
591*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
592*dfc6aa5cSAndroid Build Coastguard Worker }
593*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,IFastProg420Q100)594*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, IFastProg420Q100) {
595*dfc6aa5cSAndroid Build Coastguard Worker
596*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
597*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_420_q100_ifast_prog.jpg");
598*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
599*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_420_q100_ifast.ppm");
600*dfc6aa5cSAndroid Build Coastguard Worker
601*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
602*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
603*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "fast";
604*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-outfile";
605*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = output_path.MaybeAsASCII();
606*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = input_image_path.MaybeAsASCII();
607*dfc6aa5cSAndroid Build Coastguard Worker
608*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
609*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0]
610*dfc6aa5cSAndroid Build Coastguard Worker };
611*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
612*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(6, command_line), 0);
613*dfc6aa5cSAndroid Build Coastguard Worker
614*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
615*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "5a732542015c278ff43635e473a8a294";
616*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
617*dfc6aa5cSAndroid Build Coastguard Worker }
618*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,IFastProg420MQ100)619*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, IFastProg420MQ100) {
620*dfc6aa5cSAndroid Build Coastguard Worker
621*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
622*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_420_q100_ifast_prog.jpg");
623*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
624*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_420m_q100_ifast.ppm");
625*dfc6aa5cSAndroid Build Coastguard Worker
626*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
627*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
628*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "fast";
629*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-nosmooth";
630*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-outfile";
631*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = output_path.MaybeAsASCII();
632*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = input_image_path.MaybeAsASCII();
633*dfc6aa5cSAndroid Build Coastguard Worker
634*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
635*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
636*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0]
637*dfc6aa5cSAndroid Build Coastguard Worker };
638*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
639*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(7, command_line), 0);
640*dfc6aa5cSAndroid Build Coastguard Worker
641*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
642*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "ff692ee9323a3b424894862557c092f1";
643*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
644*dfc6aa5cSAndroid Build Coastguard Worker }
645*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,GrayISlow)646*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, GrayISlow) {
647*dfc6aa5cSAndroid Build Coastguard Worker
648*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
649*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_gray_islow.jpg");
650*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
651*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_gray_islow.ppm");
652*dfc6aa5cSAndroid Build Coastguard Worker
653*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
654*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
655*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
656*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-outfile";
657*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = output_path.MaybeAsASCII();
658*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = input_image_path.MaybeAsASCII();
659*dfc6aa5cSAndroid Build Coastguard Worker
660*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
661*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0]
662*dfc6aa5cSAndroid Build Coastguard Worker };
663*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
664*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(6, command_line), 0);
665*dfc6aa5cSAndroid Build Coastguard Worker
666*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
667*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "8d3596c56eace32f205deccc229aa5ed";
668*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
669*dfc6aa5cSAndroid Build Coastguard Worker }
670*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,GrayISlowRGB)671*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, GrayISlowRGB) {
672*dfc6aa5cSAndroid Build Coastguard Worker
673*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
674*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_gray_islow.jpg");
675*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
676*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_gray_islow_rgb.ppm");
677*dfc6aa5cSAndroid Build Coastguard Worker
678*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
679*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
680*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
681*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-rgb";
682*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-outfile";
683*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = output_path.MaybeAsASCII();
684*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = input_image_path.MaybeAsASCII();
685*dfc6aa5cSAndroid Build Coastguard Worker
686*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
687*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
688*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0]
689*dfc6aa5cSAndroid Build Coastguard Worker };
690*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
691*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(7, command_line), 0);
692*dfc6aa5cSAndroid Build Coastguard Worker
693*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
694*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "116424ac07b79e5e801f00508eab48ec";
695*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
696*dfc6aa5cSAndroid Build Coastguard Worker }
697*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,GrayISlow565)698*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, GrayISlow565) {
699*dfc6aa5cSAndroid Build Coastguard Worker
700*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
701*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_gray_islow.jpg");
702*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
703*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_gray_islow_565.bmp");
704*dfc6aa5cSAndroid Build Coastguard Worker
705*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
706*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
707*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
708*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-rgb565";
709*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-dither";
710*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "none";
711*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-bmp";
712*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = "-outfile";
713*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = output_path.MaybeAsASCII();
714*dfc6aa5cSAndroid Build Coastguard Worker std::string arg9 = input_image_path.MaybeAsASCII();
715*dfc6aa5cSAndroid Build Coastguard Worker
716*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
717*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
718*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0], &arg9[0]
719*dfc6aa5cSAndroid Build Coastguard Worker };
720*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
721*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(10, command_line), 0);
722*dfc6aa5cSAndroid Build Coastguard Worker
723*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
724*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "12f78118e56a2f48b966f792fedf23cc";
725*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
726*dfc6aa5cSAndroid Build Coastguard Worker }
727*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,GrayISlow565D)728*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, GrayISlow565D) {
729*dfc6aa5cSAndroid Build Coastguard Worker
730*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
731*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_gray_islow.jpg");
732*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
733*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_gray_islow_565D.bmp");
734*dfc6aa5cSAndroid Build Coastguard Worker
735*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
736*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
737*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
738*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-rgb565";
739*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "-bmp";
740*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-outfile";
741*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = output_path.MaybeAsASCII();
742*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = input_image_path.MaybeAsASCII();
743*dfc6aa5cSAndroid Build Coastguard Worker
744*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
745*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
746*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0]
747*dfc6aa5cSAndroid Build Coastguard Worker };
748*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
749*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(8, command_line), 0);
750*dfc6aa5cSAndroid Build Coastguard Worker
751*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
752*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "bdbbd616441a24354c98553df5dc82db";
753*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
754*dfc6aa5cSAndroid Build Coastguard Worker }
755*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,FloatProg3x2)756*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, FloatProg3x2) {
757*dfc6aa5cSAndroid Build Coastguard Worker
758*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
759*dfc6aa5cSAndroid Build Coastguard Worker #if defined(WITH_SIMD) && (defined(__i386__) || defined(__x86_64__))
760*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_3x2_float_prog_sse.jpg");
761*dfc6aa5cSAndroid Build Coastguard Worker #else
762*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_3x2_float_prog.jpg");
763*dfc6aa5cSAndroid Build Coastguard Worker #endif
764*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
765*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_3x2_float.ppm");
766*dfc6aa5cSAndroid Build Coastguard Worker
767*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
768*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
769*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "float";
770*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-outfile";
771*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = output_path.MaybeAsASCII();
772*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = input_image_path.MaybeAsASCII();
773*dfc6aa5cSAndroid Build Coastguard Worker
774*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
775*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0]
776*dfc6aa5cSAndroid Build Coastguard Worker };
777*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
778*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(6, command_line), 0);
779*dfc6aa5cSAndroid Build Coastguard Worker
780*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
781*dfc6aa5cSAndroid Build Coastguard Worker #if defined(WITH_SIMD) && (defined(__i386__) || defined(__x86_64__))
782*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "1a75f36e5904d6fc3a85a43da9ad89bb";
783*dfc6aa5cSAndroid Build Coastguard Worker #else
784*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "f6bfab038438ed8f5522fbd33595dcdc";
785*dfc6aa5cSAndroid Build Coastguard Worker #endif
786*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
787*dfc6aa5cSAndroid Build Coastguard Worker }
788*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,IFastProg3x2)789*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, IFastProg3x2) {
790*dfc6aa5cSAndroid Build Coastguard Worker
791*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
792*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_3x2_ifast_prog.jpg");
793*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
794*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_3x2_ifast.ppm");
795*dfc6aa5cSAndroid Build Coastguard Worker
796*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
797*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
798*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "fast";
799*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-outfile";
800*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = output_path.MaybeAsASCII();
801*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = input_image_path.MaybeAsASCII();
802*dfc6aa5cSAndroid Build Coastguard Worker
803*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
804*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0]
805*dfc6aa5cSAndroid Build Coastguard Worker };
806*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
807*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(6, command_line), 0);
808*dfc6aa5cSAndroid Build Coastguard Worker
809*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
810*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "fd283664b3b49127984af0a7f118fccd";
811*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
812*dfc6aa5cSAndroid Build Coastguard Worker }
813*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlowProgCrop62x627171)814*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlowProgCrop62x627171) {
815*dfc6aa5cSAndroid Build Coastguard Worker
816*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
817*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_420_islow_prog.jpg");
818*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
819*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII(
820*dfc6aa5cSAndroid Build Coastguard Worker "testout_420_islow_prog_crop62x62_71_71.ppm");
821*dfc6aa5cSAndroid Build Coastguard Worker
822*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
823*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
824*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
825*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-crop";
826*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "62x62+71+71";
827*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-ppm";
828*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
829*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
830*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
831*dfc6aa5cSAndroid Build Coastguard Worker
832*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
833*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
834*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
835*dfc6aa5cSAndroid Build Coastguard Worker };
836*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
837*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
838*dfc6aa5cSAndroid Build Coastguard Worker
839*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
840*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "26eb36ccc7d1f0cb80cdabb0ac8b5d99";
841*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
842*dfc6aa5cSAndroid Build Coastguard Worker }
843*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlow444Skip16)844*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlow444Skip16) {
845*dfc6aa5cSAndroid Build Coastguard Worker
846*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
847*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_444_islow.jpg");
848*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
849*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII("testout_444_islow_skip1_6.ppm");
850*dfc6aa5cSAndroid Build Coastguard Worker
851*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
852*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
853*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
854*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-skip";
855*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "1,6";
856*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-ppm";
857*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
858*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
859*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
860*dfc6aa5cSAndroid Build Coastguard Worker
861*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
862*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
863*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
864*dfc6aa5cSAndroid Build Coastguard Worker };
865*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
866*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
867*dfc6aa5cSAndroid Build Coastguard Worker
868*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
869*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "5606f86874cf26b8fcee1117a0a436a6";
870*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
871*dfc6aa5cSAndroid Build Coastguard Worker }
872*dfc6aa5cSAndroid Build Coastguard Worker
TEST(DJPEGTest,ISlowProg444Crop98x981313)873*dfc6aa5cSAndroid Build Coastguard Worker TEST(DJPEGTest, ISlowProg444Crop98x981313) {
874*dfc6aa5cSAndroid Build Coastguard Worker
875*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath input_image_path;
876*dfc6aa5cSAndroid Build Coastguard Worker GetTestFilePath(&input_image_path, "testout_444_islow_prog.jpg");
877*dfc6aa5cSAndroid Build Coastguard Worker base::FilePath output_path(GetTargetDirectory());
878*dfc6aa5cSAndroid Build Coastguard Worker output_path = output_path.AppendASCII(
879*dfc6aa5cSAndroid Build Coastguard Worker "testout_444_islow_prog_crop98x98_13_13.ppm");
880*dfc6aa5cSAndroid Build Coastguard Worker
881*dfc6aa5cSAndroid Build Coastguard Worker std::string prog_name = "djpeg";
882*dfc6aa5cSAndroid Build Coastguard Worker std::string arg1 = "-dct";
883*dfc6aa5cSAndroid Build Coastguard Worker std::string arg2 = "int";
884*dfc6aa5cSAndroid Build Coastguard Worker std::string arg3 = "-crop";
885*dfc6aa5cSAndroid Build Coastguard Worker std::string arg4 = "98x98+13+13";
886*dfc6aa5cSAndroid Build Coastguard Worker std::string arg5 = "-ppm";
887*dfc6aa5cSAndroid Build Coastguard Worker std::string arg6 = "-outfile";
888*dfc6aa5cSAndroid Build Coastguard Worker std::string arg7 = output_path.MaybeAsASCII();
889*dfc6aa5cSAndroid Build Coastguard Worker std::string arg8 = input_image_path.MaybeAsASCII();
890*dfc6aa5cSAndroid Build Coastguard Worker
891*dfc6aa5cSAndroid Build Coastguard Worker char *command_line[] = { &prog_name[0],
892*dfc6aa5cSAndroid Build Coastguard Worker &arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
893*dfc6aa5cSAndroid Build Coastguard Worker &arg6[0], &arg7[0], &arg8[0]
894*dfc6aa5cSAndroid Build Coastguard Worker };
895*dfc6aa5cSAndroid Build Coastguard Worker // Generate test image file.
896*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_EQ(djpeg(9, command_line), 0);
897*dfc6aa5cSAndroid Build Coastguard Worker
898*dfc6aa5cSAndroid Build Coastguard Worker // Compare expected MD5 sum against that of test image.
899*dfc6aa5cSAndroid Build Coastguard Worker const std::string EXPECTED_MD5 = "db87dc7ce26bcdc7a6b56239ce2b9d6c";
900*dfc6aa5cSAndroid Build Coastguard Worker EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
901*dfc6aa5cSAndroid Build Coastguard Worker }
902