// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SRC_LIB_URL_URL_TEST_UTILS_H_
#define SRC_LIB_URL_URL_TEST_UTILS_H_

// Convenience functions for string conversions.
// These are mostly intended for use in unit tests.

#include <string>

#include <gtest/gtest.h>

#include "src/lib/url/url_canon_internal.h"

namespace url {

namespace test_utils {

// Converts a UTF-16 string from native wchar_t format to uint16_t, by
// truncating the high 32 bits. This is not meant to handle true UTF-32
// encoded strings.
inline std::basic_string<uint16_t> WStringToUTF16(const wchar_t* src) {
  std::basic_string<uint16_t> str;
  int length = static_cast<int>(wcslen(src));
  for (int i = 0; i < length; ++i) {
    str.push_back(static_cast<uint16_t>(src[i]));
  }
  return str;
}

}  // namespace test_utils

}  // namespace url

#endif  // SRC_LIB_URL_URL_TEST_UTILS_H_
