blob: 72d5c92873e97cd2a86d3673e51041fa7df57b70 [file] [log] [blame]
// Copyright 2019 The Fuchsia 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 "storage/buffer/array_buffer.h"
#include <lib/zx/vmo.h>
#include <zxtest/zxtest.h>
namespace storage {
namespace {
const size_t kCapacity = 3;
const uint32_t kBlockSize = 8192;
TEST(ArrayBufferTest, ConstructEmpty) {
ArrayBuffer buffer(0, kBlockSize);
EXPECT_EQ(0, buffer.capacity());
EXPECT_EQ(BLOCK_VMOID_INVALID, buffer.vmoid());
}
TEST(ArrayBufferTest, ConstructValid) {
ArrayBuffer buffer(kCapacity, kBlockSize);
EXPECT_EQ(kCapacity, buffer.capacity());
EXPECT_EQ(kBlockSize, buffer.BlockSize());
EXPECT_EQ(BLOCK_VMOID_INVALID, buffer.vmoid());
EXPECT_NOT_NULL(buffer.Data(0));
}
TEST(ArrayBufferTest, WriteToReadFromBuffer) {
ArrayBuffer buffer(kCapacity, kBlockSize);
char buf[kBlockSize];
memset(buf, 'a', sizeof(buf));
for (size_t i = 0; i < kCapacity; i++) {
memcpy(buffer.Data(i), buf, kBlockSize);
}
for (size_t i = 0; i < kCapacity; i++) {
EXPECT_EQ(0, memcmp(buf, buffer.Data(i), kBlockSize));
}
}
} // namespace
} // namespace storage