Skip to content

Commit

Permalink
feat: Add more unit tests for default optional template parameter of …
Browse files Browse the repository at this point in the history
…VirtualConfig<> (#39)
  • Loading branch information
andre-nguyen authored Jan 13, 2025
1 parent 2b27c4d commit 09f2d73
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions config_utilities/test/tests/virtual_config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,19 @@ Warning: Check [1/1] failed: Virtual config is not set and not marked optional.
EXPECT_TRUE(isValid(config));
}

TEST(VirtualConfig, defaultOptional) {
{
constexpr bool kDefaultOptional = true;
VirtualConfig<Base2, kDefaultOptional> config;
EXPECT_TRUE(isValid(config));
}
{
constexpr bool kDefaultOptional = false;
VirtualConfig<Base2, kDefaultOptional> config;
EXPECT_FALSE(isValid(config));
}
}

TEST(VirtualConfig, printing) {
VirtualConfig<Base2> config;
std::string msg = toString(config);
Expand Down Expand Up @@ -384,4 +397,65 @@ TEST(VirtualConfig, optionalByDefault) {
EXPECT_EQ(object.valid.size(), 1u);
}

TEST(VirtualConfig, parseOptionalMissingField) {
{
constexpr bool kDefaultOptional = true;
YAML::Node data;
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
EXPECT_TRUE(isValid(config));
EXPECT_TRUE(config.optional());
}
{
constexpr bool kDefaultOptional = false;
YAML::Node data;
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
EXPECT_FALSE(isValid(config));
EXPECT_FALSE(config.optional());
}
}

TEST(VirtualConfig, parseOptionalFieldPresent) {
YAML::Node data;
data["type"] = "Derived2";
data["f"] = 1.f;
data["s"] = "blahblah";

{
constexpr bool kDefaultOptional = true;
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
EXPECT_TRUE(isValid(config));
EXPECT_TRUE(config.isSet());
EXPECT_EQ(config.getType(), "Derived2");
EXPECT_TRUE(config.optional());

auto actual_config = config.getUnderlying<Derived2::Config>();
ASSERT_TRUE(actual_config);
EXPECT_FLOAT_EQ(actual_config->f, 1.f);
EXPECT_EQ(actual_config->s, "blahblah");
}
{
constexpr bool kDefaultOptional = false;
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
EXPECT_TRUE(isValid(config));
EXPECT_TRUE(config.isSet());
EXPECT_EQ(config.getType(), "Derived2");
EXPECT_FALSE(config.optional());

auto actual_config = config.getUnderlying<Derived2::Config>();
ASSERT_TRUE(actual_config);
EXPECT_FLOAT_EQ(actual_config->f, 1.f);
EXPECT_EQ(actual_config->s, "blahblah");
}
}

TEST(VirtualConfig, optionalNullCreation) {
YAML::Node data;
constexpr bool kDefaultOptional = true;
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
ASSERT_TRUE(isValid(config));

auto object = config.create();
ASSERT_EQ(object, nullptr);
}

} // namespace config::test

0 comments on commit 09f2d73

Please sign in to comment.