// Copyright 2018 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 "content/browser/devtools/protocol/base_string_adapter.h" #include #include "testing/gtest/include/gtest/gtest.h" namespace content { namespace protocol { namespace { TEST(ProtocolBinaryTest, base64EmptyArgs) { EXPECT_EQ(protocol::String(), Binary().toBase64()); bool success = false; Binary decoded = Binary::fromBase64("", &success); EXPECT_TRUE(success); EXPECT_EQ( std::vector(), std::vector(decoded.data(), decoded.data() + decoded.size())); } TEST(ProtocolStringTest, AllBytesBase64Roundtrip) { std::vector all_bytes; for (int ii = 0; ii < 255; ++ii) all_bytes.push_back(ii); Binary binary = Binary::fromVector(all_bytes); bool success = false; Binary decoded = Binary::fromBase64(binary.toBase64(), &success); EXPECT_TRUE(success); std::vector decoded_bytes(decoded.data(), decoded.data() + decoded.size()); EXPECT_EQ(all_bytes, decoded_bytes); } TEST(ProtocolStringTest, HelloWorldBase64Roundtrip) { const char* kMsg = "Hello, world."; std::vector msg(kMsg, kMsg + strlen(kMsg)); EXPECT_EQ(strlen(kMsg), msg.size()); protocol::String encoded = Binary::fromVector(msg).toBase64(); EXPECT_EQ("SGVsbG8sIHdvcmxkLg==", encoded); bool success = false; Binary decoded_binary = Binary::fromBase64(encoded, &success); EXPECT_TRUE(success); std::vector decoded(decoded_binary.data(), decoded_binary.data() + decoded_binary.size()); EXPECT_EQ(msg, decoded); } TEST(ProtocolBinaryTest, InvalidBase64Decode) { bool success = true; Binary binary = Binary::fromBase64("This is not base64.", &success); EXPECT_FALSE(success); } } // namespace } // namespace protocol } // namespace content