blob: 17d15d546ff7e911891ac80cb1d1e7c36898df43 [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.
// Tests minfs format behavior.
#include <zxtest/zxtest.h>
#include <minfs/format.h>
namespace minfs {
namespace {
TEST(MinfsFormat, MinfsSuperblock) {
minfs::Superblock info = {};
info.block_count = 29;
info.ibm_block = 2;
info.abm_block = 3;
info.ino_block = 5;
info.journal_start_block = 11;
info.dat_block = 19;
info.ibm_slices = 3;
info.abm_slices = 5;
info.ino_slices = 11;
info.journal_slices = 13;
info.dat_slices = 17;
ASSERT_FALSE(GetMinfsFlagFvm(info));
ASSERT_EQ(InodeBitmapBlocks(info), info.abm_block - info.ibm_block);
ASSERT_EQ(BlockBitmapBlocks(info), info.ino_block - info.abm_block);
ASSERT_EQ(InodeBlocks(info), info.journal_start_block - info.ino_block);
ASSERT_EQ(JournalBlocks(info), info.dat_block - info.journal_start_block);
ASSERT_EQ(DataBlocks(info), info.block_count);
ASSERT_EQ(NonDataBlocks(info), InodeBitmapBlocks(info) + BlockBitmapBlocks(info) +
InodeBlocks(info) + JournalBlocks(info));
}
TEST(MinfsFormat, MinfsSuperblockOnFvm) {
minfs::Superblock info = {};
info.block_count = 29;
info.ibm_block = 2;
info.abm_block = 3;
info.ino_block = 5;
info.journal_start_block = 11;
info.dat_block = 19;
info.ibm_slices = 3;
info.abm_slices = 5;
info.ino_slices = 11;
info.journal_slices = 13;
info.dat_slices = 17;
SetMinfsFlagFvm(info);
ASSERT_TRUE(GetMinfsFlagFvm(info));
ASSERT_EQ(InodeBitmapBlocks(info), info.ibm_slices);
ASSERT_EQ(BlockBitmapBlocks(info), info.abm_slices);
ASSERT_EQ(InodeBlocks(info), info.ino_slices);
ASSERT_EQ(JournalBlocks(info), info.journal_slices);
ASSERT_EQ(DataBlocks(info), info.dat_slices);
ASSERT_EQ(NonDataBlocks(info), InodeBitmapBlocks(info) + BlockBitmapBlocks(info) +
InodeBlocks(info) + JournalBlocks(info));
}
} // namespace
} // namespace minfs