Skip to content

Commit 09f2d73

Browse files
authored
feat: Add more unit tests for default optional template parameter of VirtualConfig<> (#39)
1 parent 2b27c4d commit 09f2d73

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

config_utilities/test/tests/virtual_config.cpp

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,19 @@ Warning: Check [1/1] failed: Virtual config is not set and not marked optional.
276276
EXPECT_TRUE(isValid(config));
277277
}
278278

279+
TEST(VirtualConfig, defaultOptional) {
280+
{
281+
constexpr bool kDefaultOptional = true;
282+
VirtualConfig<Base2, kDefaultOptional> config;
283+
EXPECT_TRUE(isValid(config));
284+
}
285+
{
286+
constexpr bool kDefaultOptional = false;
287+
VirtualConfig<Base2, kDefaultOptional> config;
288+
EXPECT_FALSE(isValid(config));
289+
}
290+
}
291+
279292
TEST(VirtualConfig, printing) {
280293
VirtualConfig<Base2> config;
281294
std::string msg = toString(config);
@@ -384,4 +397,65 @@ TEST(VirtualConfig, optionalByDefault) {
384397
EXPECT_EQ(object.valid.size(), 1u);
385398
}
386399

400+
TEST(VirtualConfig, parseOptionalMissingField) {
401+
{
402+
constexpr bool kDefaultOptional = true;
403+
YAML::Node data;
404+
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
405+
EXPECT_TRUE(isValid(config));
406+
EXPECT_TRUE(config.optional());
407+
}
408+
{
409+
constexpr bool kDefaultOptional = false;
410+
YAML::Node data;
411+
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
412+
EXPECT_FALSE(isValid(config));
413+
EXPECT_FALSE(config.optional());
414+
}
415+
}
416+
417+
TEST(VirtualConfig, parseOptionalFieldPresent) {
418+
YAML::Node data;
419+
data["type"] = "Derived2";
420+
data["f"] = 1.f;
421+
data["s"] = "blahblah";
422+
423+
{
424+
constexpr bool kDefaultOptional = true;
425+
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
426+
EXPECT_TRUE(isValid(config));
427+
EXPECT_TRUE(config.isSet());
428+
EXPECT_EQ(config.getType(), "Derived2");
429+
EXPECT_TRUE(config.optional());
430+
431+
auto actual_config = config.getUnderlying<Derived2::Config>();
432+
ASSERT_TRUE(actual_config);
433+
EXPECT_FLOAT_EQ(actual_config->f, 1.f);
434+
EXPECT_EQ(actual_config->s, "blahblah");
435+
}
436+
{
437+
constexpr bool kDefaultOptional = false;
438+
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
439+
EXPECT_TRUE(isValid(config));
440+
EXPECT_TRUE(config.isSet());
441+
EXPECT_EQ(config.getType(), "Derived2");
442+
EXPECT_FALSE(config.optional());
443+
444+
auto actual_config = config.getUnderlying<Derived2::Config>();
445+
ASSERT_TRUE(actual_config);
446+
EXPECT_FLOAT_EQ(actual_config->f, 1.f);
447+
EXPECT_EQ(actual_config->s, "blahblah");
448+
}
449+
}
450+
451+
TEST(VirtualConfig, optionalNullCreation) {
452+
YAML::Node data;
453+
constexpr bool kDefaultOptional = true;
454+
auto config = fromYaml<VirtualConfig<Base2, kDefaultOptional>>(data);
455+
ASSERT_TRUE(isValid(config));
456+
457+
auto object = config.create();
458+
ASSERT_EQ(object, nullptr);
459+
}
460+
387461
} // namespace config::test

0 commit comments

Comments
 (0)