137 lines
4.8 KiB
C++
137 lines
4.8 KiB
C++
/*
|
|
* Copyright 2020 The Chromium Authors. All Rights Reserved.
|
|
*
|
|
* This software is provided 'as-is', without any express or implied
|
|
* warranty. In no event will the authors be held liable for any damages
|
|
* arising from the use of this software.
|
|
*
|
|
* Permission is granted to anyone to use this software for any purpose,
|
|
* including commercial applications, and to alter it and redistribute it
|
|
* freely, subject to the following restrictions:
|
|
*
|
|
* 1. The origin of this software must not be misrepresented; you must not
|
|
* claim that you wrote the original software. If you use this software
|
|
* in a product, an acknowledgment in the product documentation would be
|
|
* appreciated but is not required.
|
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
* misrepresented as being the original software.
|
|
* 3. This notice may not be removed or altered from any source distribution.
|
|
*/
|
|
|
|
#include "base/files/file.h"
|
|
#include "base/files/file_util.h"
|
|
#include "base/path_service.h"
|
|
#include "gtest-utils.h"
|
|
|
|
#include <gtest/gtest.h>
|
|
#include <string>
|
|
|
|
extern "C" int jpegtran(int argc, char *argv[]);
|
|
|
|
TEST(JPEGTranTest, ICC) {
|
|
|
|
base::FilePath input_image_path;
|
|
GetTestFilePath(&input_image_path, "testout_rgb_islow.jpg");
|
|
base::FilePath icc_path;
|
|
GetTestFilePath(&icc_path, "test2.icc");
|
|
base::FilePath output_path(GetTargetDirectory());
|
|
output_path = output_path.AppendASCII("testout_rgb_islow2.jpg");
|
|
|
|
std::string prog_name = "jpegtran";
|
|
std::string arg1 = "-copy";
|
|
std::string arg2 = "all";
|
|
std::string arg3 = "-icc";
|
|
std::string arg4 = icc_path.MaybeAsASCII();
|
|
std::string arg5 = "-outfile";
|
|
std::string arg6 = output_path.MaybeAsASCII();
|
|
std::string arg7 = input_image_path.MaybeAsASCII();
|
|
|
|
char *command_line[] = { &prog_name[0],
|
|
&arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
|
|
&arg6[0], &arg7[0]
|
|
};
|
|
// Generate test image file.
|
|
EXPECT_EQ(jpegtran(8, command_line), 0);
|
|
|
|
// Compare expected MD5 sum against that of test image.
|
|
const std::string EXPECTED_MD5 = "31d121e57b6c2934c890a7fc7763bcd4";
|
|
EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
|
|
}
|
|
|
|
TEST(JPEGTranTest, Crop) {
|
|
|
|
base::FilePath input_image_path;
|
|
GetTestFilePath(&input_image_path, "testorig.jpg");
|
|
base::FilePath output_path(GetTargetDirectory());
|
|
output_path = output_path.AppendASCII("testout_crop.jpg");
|
|
|
|
std::string prog_name = "jpegtran";
|
|
std::string arg1 = "-crop";
|
|
std::string arg2 = "120x90+20+50";
|
|
std::string arg3 = "-transpose";
|
|
std::string arg4 = "-perfect";
|
|
std::string arg5 = "-outfile";
|
|
std::string arg6 = output_path.MaybeAsASCII();
|
|
std::string arg7 = input_image_path.MaybeAsASCII();
|
|
|
|
char *command_line[] = { &prog_name[0],
|
|
&arg1[0], &arg2[0], &arg3[0], &arg4[0], &arg5[0],
|
|
&arg6[0], &arg7[0]
|
|
};
|
|
// Generate test image file.
|
|
EXPECT_EQ(jpegtran(8, command_line), 0);
|
|
|
|
// Compare expected MD5 sum against that of test image.
|
|
const std::string EXPECTED_MD5 = "b4197f377e621c4e9b1d20471432610d";
|
|
EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
|
|
}
|
|
|
|
#ifdef C_ARITH_CODING_SUPPORTED
|
|
TEST(JPEGTranTest, ISlow420Ari) {
|
|
|
|
base::FilePath input_image_path;
|
|
GetTestFilePath(&input_image_path, "testimgint.jpg");
|
|
base::FilePath output_path(GetTargetDirectory());
|
|
output_path = output_path.AppendASCII("testout_420_islow_ari2.jpg");
|
|
|
|
std::string prog_name = "jpegtran";
|
|
std::string arg1 = "-arithmetic";
|
|
std::string arg2 = "-outfile";
|
|
std::string arg3 = output_path.MaybeAsASCII();
|
|
std::string arg4 = input_image_path.MaybeAsASCII();
|
|
|
|
char *command_line[] = { &prog_name[0],
|
|
&arg1[0], &arg2[0], &arg3[0], &arg4[0]
|
|
};
|
|
// Generate test image file.
|
|
EXPECT_EQ(jpegtran(5, command_line), 0);
|
|
|
|
// Compare expected MD5 sum against that of test image.
|
|
const std::string EXPECTED_MD5 = "e986fb0a637a8d833d96e8a6d6d84ea1";
|
|
EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
|
|
}
|
|
|
|
TEST(JPEGTranTest, ISlow420) {
|
|
|
|
base::FilePath input_image_path;
|
|
GetTestFilePath(&input_image_path, "testimgari.jpg");
|
|
base::FilePath output_path(GetTargetDirectory());
|
|
output_path = output_path.AppendASCII("testout_420_islow.jpg");
|
|
|
|
std::string prog_name = "jpegtran";
|
|
std::string arg1 = "-outfile";
|
|
std::string arg2 = output_path.MaybeAsASCII();
|
|
std::string arg3 = input_image_path.MaybeAsASCII();
|
|
|
|
char *command_line[] = { &prog_name[0],
|
|
&arg1[0], &arg2[0], &arg3[0]
|
|
};
|
|
// Generate test image file.
|
|
EXPECT_EQ(jpegtran(4, command_line), 0);
|
|
|
|
// Compare expected MD5 sum against that of test image.
|
|
const std::string EXPECTED_MD5 = "9a68f56bc76e466aa7e52f415d0f4a5f";
|
|
EXPECT_TRUE(CompareFileAndMD5(output_path, EXPECTED_MD5));
|
|
}
|
|
#endif
|