// 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 "mojo/public/cpp/base/read_only_buffer_mojom_traits.h" #include "mojo/public/cpp/test_support/test_utils.h" #include "mojo/public/mojom/base/read_only_buffer.mojom.h" #include "testing/gtest/include/gtest/gtest.h" namespace mojo_base { namespace read_only_buffer_unittest { TEST(ReadOnlyBufferTest, ReadOnlyBufferEmptySpan) { base::span in; base::span out; ASSERT_TRUE( mojo::test::SerializeAndDeserialize(&in, &out)); EXPECT_EQ(in, out); } TEST(ReadOnlyBufferTest, ReadOnlyBufferNonEmptySpan) { std::vector v{'1', '2', '3'}; base::span in(v); base::span out; // SerializeAndDeserialize doesn't work here: the traits for ReadOnlyBuffer // returns a span that points into the raw bytes in the mojo::Message;however, // the stack object will be freed before SerializeAndSerialize returns. std::vector data = mojom::ReadOnlyBuffer::Serialize(&in); EXPECT_TRUE(mojom::ReadOnlyBuffer::Deserialize(std::move(data), &out)); EXPECT_EQ(in, out); } } // namespace read_only_buffer_unittest } // namespace mojo_base