| // 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 <cstdint> |
| |
| #include <zxtest/zxtest.h> |
| |
| #include "src/storage/fvm/format.h" |
| |
| namespace fvm { |
| namespace { |
| |
| constexpr uint64_t kVPartition = 15; |
| constexpr uint64_t kVSlice = 25; |
| |
| TEST(SliceEntryTest, DefaultsToUnallocatedAndZeroed) { |
| SliceEntry entry; |
| ASSERT_FALSE(entry.IsAllocated()); |
| ASSERT_TRUE(entry.IsFree()); |
| ASSERT_EQ(entry.VPartition(), 0); |
| ASSERT_EQ(entry.VSlice(), 0); |
| } |
| |
| TEST(SliceEntryTest, CreateAllocatesAndSetsVSliceAndVPartition) { |
| SliceEntry entry(kVPartition, kVSlice); |
| EXPECT_TRUE(entry.IsAllocated()); |
| EXPECT_FALSE(entry.IsFree()); |
| EXPECT_EQ(entry.VPartition(), kVPartition); |
| EXPECT_EQ(entry.VSlice(), kVSlice); |
| } |
| |
| TEST(SliceEntryTest, SetAllocatesAndSetsVSliceAndVPartition) { |
| SliceEntry entry; |
| ASSERT_TRUE(entry.IsFree()); |
| ASSERT_EQ(entry.VPartition(), 0); |
| ASSERT_EQ(entry.VSlice(), 0); |
| |
| entry.Set(kVPartition, kVSlice); |
| |
| EXPECT_TRUE(entry.IsAllocated()); |
| EXPECT_FALSE(entry.IsFree()); |
| EXPECT_EQ(entry.VPartition(), kVPartition); |
| EXPECT_EQ(entry.VSlice(), kVSlice); |
| } |
| |
| TEST(SliceEntryTest, ReleaseZeroesAndDeallocates) { |
| SliceEntry entry(kVPartition, kVSlice); |
| |
| entry.Release(); |
| |
| ASSERT_FALSE(entry.IsAllocated()); |
| ASSERT_TRUE(entry.IsFree()); |
| ASSERT_EQ(entry.VPartition(), 0); |
| ASSERT_EQ(entry.VSlice(), 0); |
| } |
| |
| } // namespace |
| } // namespace fvm |