/* vim:set ts=2 sw=2 sts=2 et: */
/**
* \author Marcus Holland-Moritz (github@mhxnet.de)
* \copyright Copyright (c) Marcus Holland-Moritz
*
* This file is part of dwarfs.
*
* dwarfs is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* dwarfs is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with dwarfs. If not, see .
*/
#include
#include
#include
#include
#include
using namespace dwarfs;
using namespace dwarfs::reader;
TEST(options, fsinfo_features) {
fsinfo_features ff;
EXPECT_EQ(ff.to_string(), "");
EXPECT_NO_THROW(ff |= fsinfo_features::parse("frozen_layout,history"));
EXPECT_TRUE(ff.has(fsinfo_feature::history));
EXPECT_TRUE(ff & fsinfo_feature::frozen_layout);
EXPECT_FALSE(ff.has(fsinfo_feature::frozen_analysis));
EXPECT_FALSE(ff & fsinfo_feature::version);
EXPECT_EQ(ff.to_string(), "history,frozen_layout");
ff.clear(fsinfo_feature::history);
EXPECT_FALSE(ff & fsinfo_feature::history);
EXPECT_TRUE(ff & fsinfo_feature::frozen_layout);
EXPECT_EQ(ff.to_string(), "frozen_layout");
ff.reset();
EXPECT_FALSE(ff & fsinfo_feature::frozen_layout);
EXPECT_EQ(ff.to_string(), "");
EXPECT_THAT([]() { fsinfo_features::parse("history,whatever"); },
testing::ThrowsMessage(
testing::HasSubstr("invalid feature: \"whatever\"")));
EXPECT_THAT([]() { fsinfo_features::parse("frozen_layout,history,x"); },
testing::ThrowsMessage(
testing::HasSubstr("invalid feature: \"x\"")));
}
TEST(utils, parse_image_offset) {
EXPECT_EQ(0, parse_image_offset("0"));
EXPECT_EQ(1, parse_image_offset("1"));
EXPECT_EQ(1024, parse_image_offset("1024"));
EXPECT_EQ(filesystem_options::IMAGE_OFFSET_AUTO, parse_image_offset("auto"));
EXPECT_THAT([] { parse_image_offset("-1"); },
::testing::ThrowsMessage(
::testing::HasSubstr("image offset must be positive")));
EXPECT_THAT([] { parse_image_offset("asd"); },
::testing::ThrowsMessage(
::testing::HasSubstr("failed to parse image offset")));
}