[TomlTable] Improve unit test thoroughness to match Util.toml.test.cpp
This commit is contained in:
parent
ca4048c038
commit
33f80af4ce
@ -26,11 +26,16 @@ BEGIN_TEST_SUITE("IOCore::TomlTable")
|
||||
int field1;
|
||||
int field2;
|
||||
|
||||
auto operator==(const SimpleStruct& other) const -> bool
|
||||
{
|
||||
return field1 == other.field1 && field2 == other.field2;
|
||||
}
|
||||
|
||||
IOCORE_TOML_SERIALIZABLE(SimpleStruct, field1, field2);
|
||||
};
|
||||
|
||||
struct ComplexStruct {
|
||||
int field1;
|
||||
SimpleStruct field1;
|
||||
int field2;
|
||||
Colors foreground;
|
||||
|
||||
@ -46,14 +51,15 @@ BEGIN_TEST_SUITE("IOCore::TomlTable")
|
||||
|
||||
TEST_CASE("IOCore::TomlTable core operators")
|
||||
{
|
||||
auto data = ComplexStruct{ 11, 22, Blue };
|
||||
auto data = ComplexStruct{ { 11, 22 }, 30, Blue };
|
||||
TomlTable table = data;
|
||||
auto newdest = table.as<ComplexStruct>();
|
||||
|
||||
CHECK(table.size() == 3);
|
||||
|
||||
CHECK(table["field1"].value<int>() == 11);
|
||||
CHECK(table["field2"].value<int>() == 22);
|
||||
CHECK(table["field1"]["field1"].value<int>() == 11);
|
||||
CHECK(table["field1"]["field2"].value<int>() == 22);
|
||||
CHECK(table["field2"].value<int>() == 30);
|
||||
CHECK(table["foreground"].value<std::string>() == "Blue");
|
||||
|
||||
CHECK(newdest.field1 == data.field1);
|
||||
|
@ -47,6 +47,16 @@ BEGIN_TEST_SUITE("Util.Toml")
|
||||
IOCORE_TOML_SERIALIZABLE(CompositeStruct, part1, part2);
|
||||
};
|
||||
|
||||
struct ComplexStruct {
|
||||
SimpleStruct part1;
|
||||
SimpleStruct2 part2;
|
||||
StructWithEnum part3;
|
||||
Colors background;
|
||||
|
||||
IOCORE_TOML_SERIALIZABLE(
|
||||
ComplexStruct, part1, part2, part3, background
|
||||
);
|
||||
};
|
||||
TEST_CASE("IOCORE_TOML_TO Macro works")
|
||||
{
|
||||
toml::table tbl;
|
||||
@ -115,7 +125,40 @@ BEGIN_TEST_SUITE("Util.Toml")
|
||||
CHECK(newdest.part1.field2 == data.part1.field2);
|
||||
CHECK(newdest.part2.fieldA == data.part2.fieldA);
|
||||
}
|
||||
}
|
||||
TEST_CASE("IOCORE_TOML_SERIALIZABLE Macro works with ComplexStruct")
|
||||
{
|
||||
toml::table table;
|
||||
ComplexStruct data = {
|
||||
{ 10, 20 }, { 30 }, { 40, 50, Blue }, Red
|
||||
};
|
||||
ComplexStruct newdest;
|
||||
|
||||
table = to_toml_table(data);
|
||||
from_toml_table(table, newdest);
|
||||
|
||||
CHECK(table.size() == 4);
|
||||
|
||||
CHECK(table["part1"].as_table()->size() == 2);
|
||||
CHECK(table["part2"].as_table()->size() == 1);
|
||||
CHECK(table["part3"].as_table()->size() == 3);
|
||||
|
||||
CHECK(table["part1"]["field1"].value<int>() == 10);
|
||||
CHECK(table["part1"]["field2"].value<int>() == 20);
|
||||
CHECK(table["part2"]["fieldA"].value<int>() == 30);
|
||||
CHECK(table["part3"]["field1"].value<int>() == 40);
|
||||
CHECK(table["part3"]["field2"].value<int>() == 50);
|
||||
CHECK(
|
||||
table["part3"]["foreground"].value<std::string>() == "Blue"
|
||||
);
|
||||
|
||||
CHECK(newdest.part1.field1 == data.part1.field1);
|
||||
CHECK(newdest.part1.field2 == data.part1.field2);
|
||||
CHECK(newdest.part2.fieldA == data.part2.fieldA);
|
||||
CHECK(newdest.part3.field1 == data.part3.field1);
|
||||
CHECK(newdest.part3.field2 == data.part3.field2);
|
||||
CHECK(newdest.part3.foreground == data.part3.foreground);
|
||||
CHECK(newdest.background == data.background);
|
||||
}
|
||||
}
|
||||
// clang-format off
|
||||
// vim: set foldmethod=syntax foldminlines=10 textwidth=80 ts=8 sts=0 sw=8 noexpandtab ft=cpp.doxygen :
|
||||
|
Loading…
Reference in New Issue
Block a user