/*
 * 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/strings/utf_string_conversions.h"
#include "gtest-utils.h"

#if defined(OS_WIN)
std::wstring GetTargetDirectory() {
  base::FilePath path;
  base::PathService::Get(base::DIR_CURRENT, &path);
  return base::UTF8ToWide(path.MaybeAsASCII());
}
#else
std::string GetTargetDirectory() {
#if defined(ANDROID)
  return "/sdcard";
#else
  base::FilePath path;
  base::PathService::Get(base::DIR_CURRENT, &path);
  return path.MaybeAsASCII();
#endif
}
#endif

void GetTestFilePath(base::FilePath* path, const std::string filename) {
  ASSERT_TRUE(base::PathService::Get(base::DIR_SRC_TEST_DATA_ROOT, path));
  *path = path->AppendASCII("third_party");
  *path = path->AppendASCII("libjpeg_turbo");
  *path = path->AppendASCII("testimages");
  *path = path->AppendASCII(filename);
  ASSERT_TRUE(base::PathExists(*path));
}

bool CompareFileAndMD5(const base::FilePath& path,
                       const std::string expected_md5) {
  // Read the output file and compute the MD5.
  std::string output;
  if (!base::ReadFileToString(path, &output)) {
    return false;
  }
  const std::string md5 = base::MD5String(output);
  return expected_md5 == md5;
}
