// Copyright 2020 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. #include "util/base64.h" #include "gtest/gtest.h" namespace openscreen { namespace base64 { namespace { constexpr char kText[] = "hello world"; constexpr char kBase64Text[] = "aGVsbG8gd29ybGQ="; void CheckEncodeDecode(const char* to_encode, const char* encode_expected) { std::string encoded = Encode(to_encode); EXPECT_EQ(encode_expected, encoded); std::string decoded; EXPECT_TRUE(Decode(encoded, &decoded)); EXPECT_EQ(to_encode, decoded); } } // namespace TEST(Base64Test, ZeroSize) { CheckEncodeDecode("", ""); } TEST(Base64Test, Basic) { CheckEncodeDecode(kText, kBase64Text); } TEST(Base64Test, Binary) { const uint8_t kData[] = {0x00, 0x01, 0xFE, 0xFF}; std::string binary_encoded = Encode(absl::MakeConstSpan(kData)); // Check that encoding the same data through the StringPiece interface gives // the same results. std::string string_piece_encoded = Encode( absl::string_view(reinterpret_cast(kData), sizeof(kData))); EXPECT_EQ(binary_encoded, string_piece_encoded); } TEST(Base64Test, InPlace) { std::string text(kText); text = Encode(text); EXPECT_EQ(kBase64Text, text); EXPECT_TRUE(Decode(text, &text)); EXPECT_EQ(text, kText); } } // namespace base64 } // namespace openscreen