upload android base code part6
This commit is contained in:
parent
421e214c7d
commit
4e516ec6ed
35396 changed files with 9188716 additions and 0 deletions
|
@ -0,0 +1,142 @@
|
|||
/*
|
||||
* Copyright (C) 2016, The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <array>
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "wifilogd/byte_buffer.h"
|
||||
|
||||
namespace android {
|
||||
namespace wifilogd {
|
||||
namespace {
|
||||
|
||||
constexpr size_t kBufferSizeBytes = 1024;
|
||||
constexpr std::array<uint8_t, 1> kSmallestMessage{};
|
||||
constexpr std::array<uint8_t, kBufferSizeBytes> kLargestMessage{};
|
||||
|
||||
class ByteBufferTest : public ::testing::Test {
|
||||
public:
|
||||
ByteBufferTest() {}
|
||||
|
||||
protected:
|
||||
ByteBuffer<kBufferSizeBytes> buffer_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
TEST_F(ByteBufferTest, AppendMinimalOnEmptyBufferSucceeds) {
|
||||
buffer_.AppendOrDie(kSmallestMessage.data(), kSmallestMessage.size());
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, AppendMaximalOnEmptyBufferSucceeds) {
|
||||
buffer_.AppendOrDie(kLargestMessage.data(), kLargestMessage.size());
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, AppendStoresOurData) {
|
||||
const std::string message1{"hello"};
|
||||
const std::string message2{"world"};
|
||||
buffer_.AppendOrDie(message1.data(), message1.size());
|
||||
buffer_.AppendOrDie(message2.data(), message2.size());
|
||||
|
||||
const std::string expected{"helloworld"};
|
||||
EXPECT_EQ(0, std::memcmp(buffer_.data(), expected.data(), expected.size()));
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, AssigningWorks) {
|
||||
const std::string message1{"hello"};
|
||||
buffer_.AppendOrDie(message1.data(), message1.size());
|
||||
|
||||
ByteBuffer<kBufferSizeBytes> copy;
|
||||
ASSERT_NE(buffer_.size(), copy.size());
|
||||
|
||||
copy = buffer_;
|
||||
ASSERT_EQ(buffer_.size(), copy.size());
|
||||
EXPECT_EQ(0, std::memcmp(copy.data(), buffer_.data(), buffer_.size()));
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, ChainingWorks) {
|
||||
const std::string message1{"hello"};
|
||||
const std::string message2{"world"};
|
||||
buffer_.AppendOrDie(message1.data(), message1.size())
|
||||
.AppendOrDie(message2.data(), message2.size());
|
||||
|
||||
const std::string expected{"helloworld"};
|
||||
EXPECT_EQ(0, std::memcmp(buffer_.data(), expected.data(), expected.size()));
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, CopyingWorks) {
|
||||
const std::string message1{"hello"};
|
||||
buffer_.AppendOrDie(message1.data(), message1.size());
|
||||
|
||||
const ByteBuffer<kBufferSizeBytes> copy{buffer_};
|
||||
ASSERT_EQ(buffer_.size(), copy.size());
|
||||
EXPECT_EQ(0, std::memcmp(copy.data(), buffer_.data(), buffer_.size()));
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, DataDoesNotReturnNullOnFreshBuffer) {
|
||||
EXPECT_NE(nullptr, buffer_.data());
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, DataDoesNotReturnNullAfterLargeWrite) {
|
||||
buffer_.AppendOrDie(kLargestMessage.data(), kLargestMessage.size());
|
||||
EXPECT_NE(nullptr, buffer_.data());
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, SizeReturnsZeroOnFreshBuffer) {
|
||||
EXPECT_EQ(0U, buffer_.size());
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, SizeIsCorrectAfterSmallWrite) {
|
||||
buffer_.AppendOrDie(kSmallestMessage.data(), kSmallestMessage.size());
|
||||
EXPECT_EQ(kSmallestMessage.size(), buffer_.size());
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, SizeIsCorrectAfterLargeWrite) {
|
||||
buffer_.AppendOrDie(kLargestMessage.data(), kLargestMessage.size());
|
||||
EXPECT_EQ(kLargestMessage.size(), buffer_.size());
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferTest, SizeIsCorrectAfterMultipleWrites) {
|
||||
buffer_.AppendOrDie(kSmallestMessage.data(), kSmallestMessage.size())
|
||||
.AppendOrDie(kSmallestMessage.data(), kSmallestMessage.size())
|
||||
.AppendOrDie(kSmallestMessage.data(), kSmallestMessage.size());
|
||||
EXPECT_EQ(3 * kSmallestMessage.size(), buffer_.size());
|
||||
}
|
||||
|
||||
// Per
|
||||
// github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#death-tests,
|
||||
// death tests should be specially named.
|
||||
using ByteBufferDeathTest = ByteBufferTest;
|
||||
|
||||
TEST_F(ByteBufferDeathTest, AppendLargerThanBufferCausesDeath) {
|
||||
constexpr std::array<uint8_t, kBufferSizeBytes + 1> oversized_message{};
|
||||
EXPECT_DEATH(
|
||||
buffer_.AppendOrDie(oversized_message.data(), oversized_message.size()),
|
||||
"Check failed");
|
||||
}
|
||||
|
||||
TEST_F(ByteBufferDeathTest, AppendLargerThanFreeSpaceCausesDeath) {
|
||||
buffer_.AppendOrDie(kLargestMessage.data(), kLargestMessage.size());
|
||||
EXPECT_DEATH(
|
||||
buffer_.AppendOrDie(kSmallestMessage.data(), kSmallestMessage.size()),
|
||||
"Check failed");
|
||||
}
|
||||
|
||||
} // namespace wifilogd
|
||||
} // namespace android
|
Loading…
Add table
Add a link
Reference in a new issue