// Copyright 2015 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 #include "chromeos/binder/buffer_reader.h" #include "testing/gtest/include/gtest/gtest.h" namespace binder { TEST(BinderBufferReaderTest, Read) { // Prepare data. const size_t N = 4; int data[N]; for (size_t i = 0; i < N; ++i) { data[i] = i + 100; } // Read. BufferReader reader(reinterpret_cast(data), sizeof(data)); for (size_t i = 0; i < N; ++i) { SCOPED_TRACE(i); EXPECT_TRUE(reader.HasMoreData()); int value = 0; EXPECT_TRUE(reader.Read(&value, sizeof(value))); EXPECT_EQ(data[i], value); } EXPECT_FALSE(reader.HasMoreData()); // No longer able to read. int value = 0; EXPECT_FALSE(reader.Read(&value, sizeof(value))); } TEST(BinderBufferReaderTest, Skip) { // Prepare data. const size_t N = 4; int data[N]; for (size_t i = 0; i < N; ++i) { data[i] = i + 100; } // Skip the first and read the rest. BufferReader reader(reinterpret_cast(data), sizeof(data)); EXPECT_TRUE(reader.HasMoreData()); EXPECT_TRUE(reader.Skip(sizeof(data[0]))); for (size_t i = 1; i < N; ++i) { SCOPED_TRACE(i); EXPECT_TRUE(reader.HasMoreData()); int value = 0; EXPECT_TRUE(reader.Read(&value, sizeof(value))); EXPECT_EQ(data[i], value); } EXPECT_FALSE(reader.HasMoreData()); // No longer able to skip. EXPECT_FALSE(reader.Skip(sizeof(data[0]))); } } // namespace binder