#include #include "common/serde/Serde.h" #include "common/serde/Visit.h" #include "common/utils/Nameof.hpp" #include "tests/GtestHelpers.h" template <> class hf3fs::serde::VisitOut { public: auto tableBegin() { XLOGF(INFO, "start a table"); } void tableEnd() { XLOGF(INFO, "end a table"); } void arrayBegin() { XLOGF(INFO, "start an array"); } void arrayEnd() { XLOGF(INFO, "end an array"); } void variantBegin() { XLOGF(INFO, "start a variant"); } void variantEnd() { XLOGF(INFO, "end a variant"); } void key(std::string_view key) { XLOGF(INFO, "key {}", key); } void value(auto &&value) { XLOGF(INFO, "value {}", nameof::nameof_full_type>()); } }; namespace hf3fs::test { namespace { enum class Type { A, B, C, }; struct Foo { SERDE_STRUCT_FIELD(val, double{}); SERDE_STRUCT_FIELD(type, Type::A); SERDE_STRUCT_FIELD(num, (std::variant{})); SERDE_STRUCT_FIELD(vec, std::vector{}); }; TEST(TestVist, Normal) { serde::VisitOut out; serde::visit(Foo{}, out); } } // namespace } // namespace hf3fs::test