1b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// Use of this source code is governed by a BSD-style license that can be
3b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// found in the LICENSE file.
4b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
5b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/base64.h"
6b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
7b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "testing/gtest/include/gtest/gtest.h"
8b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
9b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratnamespace base {
10b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
11b8cf94937c52feb53b55c39e3f82094d27de464cDaniel EratTEST(Base64Test, Basic) {
12b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  const std::string kText = "hello world";
13b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  const std::string kBase64Text = "aGVsbG8gd29ybGQ=";
14b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
15b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  std::string encoded;
16b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  std::string decoded;
17b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  bool ok;
18b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
19b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  Base64Encode(kText, &encoded);
20b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  EXPECT_EQ(kBase64Text, encoded);
21b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
22b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  ok = Base64Decode(encoded, &decoded);
23b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  EXPECT_TRUE(ok);
24b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  EXPECT_EQ(kText, decoded);
25b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}
26b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
27b8cf94937c52feb53b55c39e3f82094d27de464cDaniel EratTEST(Base64Test, InPlace) {
28b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  const std::string kText = "hello world";
29b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  const std::string kBase64Text = "aGVsbG8gd29ybGQ=";
30b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  std::string text(kText);
31b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
32b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  Base64Encode(text, &text);
33b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  EXPECT_EQ(kBase64Text, text);
34b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
35b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  bool ok = Base64Decode(text, &text);
36b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  EXPECT_TRUE(ok);
37b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  EXPECT_EQ(text, kText);
38b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}
39b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
40b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}  // namespace base
41