xref: /aosp_15_r20/external/libjpeg-turbo/gtest/gtest-utils.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 "base/strings/utf_string_conversions.h"
22*dfc6aa5cSAndroid Build Coastguard Worker #include "gtest-utils.h"
23*dfc6aa5cSAndroid Build Coastguard Worker 
24*dfc6aa5cSAndroid Build Coastguard Worker #if defined(OS_WIN)
GetTargetDirectory()25*dfc6aa5cSAndroid Build Coastguard Worker std::wstring GetTargetDirectory() {
26*dfc6aa5cSAndroid Build Coastguard Worker   base::FilePath path;
27*dfc6aa5cSAndroid Build Coastguard Worker   base::PathService::Get(base::DIR_CURRENT, &path);
28*dfc6aa5cSAndroid Build Coastguard Worker   return base::UTF8ToWide(path.MaybeAsASCII());
29*dfc6aa5cSAndroid Build Coastguard Worker }
30*dfc6aa5cSAndroid Build Coastguard Worker #else
GetTargetDirectory()31*dfc6aa5cSAndroid Build Coastguard Worker std::string GetTargetDirectory() {
32*dfc6aa5cSAndroid Build Coastguard Worker #if defined(ANDROID)
33*dfc6aa5cSAndroid Build Coastguard Worker   return "/sdcard";
34*dfc6aa5cSAndroid Build Coastguard Worker #else
35*dfc6aa5cSAndroid Build Coastguard Worker   base::FilePath path;
36*dfc6aa5cSAndroid Build Coastguard Worker   base::PathService::Get(base::DIR_CURRENT, &path);
37*dfc6aa5cSAndroid Build Coastguard Worker   return path.MaybeAsASCII();
38*dfc6aa5cSAndroid Build Coastguard Worker #endif
39*dfc6aa5cSAndroid Build Coastguard Worker }
40*dfc6aa5cSAndroid Build Coastguard Worker #endif
41*dfc6aa5cSAndroid Build Coastguard Worker 
GetTestFilePath(base::FilePath * path,const std::string filename)42*dfc6aa5cSAndroid Build Coastguard Worker void GetTestFilePath(base::FilePath* path, const std::string filename) {
43*dfc6aa5cSAndroid Build Coastguard Worker   ASSERT_TRUE(base::PathService::Get(base::DIR_SRC_TEST_DATA_ROOT, path));
44*dfc6aa5cSAndroid Build Coastguard Worker   *path = path->AppendASCII("third_party");
45*dfc6aa5cSAndroid Build Coastguard Worker   *path = path->AppendASCII("libjpeg_turbo");
46*dfc6aa5cSAndroid Build Coastguard Worker   *path = path->AppendASCII("testimages");
47*dfc6aa5cSAndroid Build Coastguard Worker   *path = path->AppendASCII(filename);
48*dfc6aa5cSAndroid Build Coastguard Worker   ASSERT_TRUE(base::PathExists(*path));
49*dfc6aa5cSAndroid Build Coastguard Worker }
50*dfc6aa5cSAndroid Build Coastguard Worker 
CompareFileAndMD5(const base::FilePath & path,const std::string expected_md5)51*dfc6aa5cSAndroid Build Coastguard Worker bool CompareFileAndMD5(const base::FilePath& path,
52*dfc6aa5cSAndroid Build Coastguard Worker                        const std::string expected_md5) {
53*dfc6aa5cSAndroid Build Coastguard Worker   // Read the output file and compute the MD5.
54*dfc6aa5cSAndroid Build Coastguard Worker   std::string output;
55*dfc6aa5cSAndroid Build Coastguard Worker   if (!base::ReadFileToString(path, &output)) {
56*dfc6aa5cSAndroid Build Coastguard Worker     return false;
57*dfc6aa5cSAndroid Build Coastguard Worker   }
58*dfc6aa5cSAndroid Build Coastguard Worker   const std::string md5 = base::MD5String(output);
59*dfc6aa5cSAndroid Build Coastguard Worker   return expected_md5 == md5;
60*dfc6aa5cSAndroid Build Coastguard Worker }
61