2727#include < thrift/lib/cpp2/debug_thrift_data_difference/pretty_print.h>
2828#include < thrift/lib/cpp2/folly_dynamic/folly_dynamic.h>
2929
30- #include < thrift/lib/cpp2/reflection/helpers.h>
3130#include < thrift/lib/cpp2/reflection/internal/test_helpers.h>
3231#include < thrift/test/gen-cpp2/adapter_types.h>
3332#include < thrift/test/reflection/gen-cpp2/compat_fatal_types.h>
3736using namespace cpp2 ;
3837using facebook::thrift::dynamic_format;
3938using facebook::thrift::format_adherence;
39+ namespace ident = apache::thrift::ident;
40+ namespace type = apache::thrift::type;
4041
4142namespace facebook ::thrift {
4243
@@ -641,58 +642,43 @@ TEST(FollyDynamic, OptionalString) {
641642TEST (FollyDynamic, ListFromEmptyObject) {
642643 // some dynamic languages (lua, php) conflate empty array and empty object;
643644 // check that we do not throw in such cases
644- using type = global_structC;
645- using member_name = fatal::sequence<char , ' j' , ' 3' >;
646- using member_meta =
647- apache::thrift::get_struct_member_by_name<type, member_name>;
648- EXPECT_SAME < // sanity check
649- member_meta::type_class,
650- apache::thrift::type_class::list<
651- apache::thrift::type_class::structure>>();
652- auto obj = from_dynamic<type>(
653- folly::dynamic::object (
654- fatal::z_data<member_name>(), folly::dynamic::object),
645+ static_assert (std::is_base_of_v<
646+ type::list_c,
647+ apache::thrift::op::get_type_tag<global_structC, ident::j3>>);
648+ auto obj = from_dynamic<global_structC>(
649+ folly::dynamic::object (" j3" , folly::dynamic::object),
655650 dynamic_format::PORTABLE );
656- EXPECT_TRUE (member_meta::is_set (obj));
657- EXPECT_EQ (0 , member_meta::getter{}(obj).size ());
651+ // @lint-ignore CLANGTIDY clang-diagnostic-deprecated-declarations
652+ EXPECT_TRUE (obj.j3 ().is_set ());
653+ EXPECT_EQ (0 , obj.j3 ()->size ());
658654}
659655
660656TEST (FollyDynamic, SetFromEmptyObject) {
661657 // some dynamic languages (lua, php) conflate empty array and empty object;
662658 // check that we do not throw in such cases
663- using type = global_structC;
664- using member_name = fatal::sequence<char , ' k' , ' 3' >;
665- using member_meta =
666- apache::thrift::get_struct_member_by_name<type, member_name>;
667- EXPECT_SAME < // sanity check
668- member_meta::type_class,
669- apache::thrift::type_class::set<apache::thrift::type_class::structure>>();
670- auto obj = from_dynamic<type>(
671- folly::dynamic::object (
672- fatal::z_data<member_name>(), folly::dynamic::object),
659+ static_assert (std::is_base_of_v<
660+ type::set_c,
661+ apache::thrift::op::get_type_tag<global_structC, ident::k3>>);
662+ auto obj = from_dynamic<global_structC>(
663+ folly::dynamic::object (" k3" , folly::dynamic::object),
673664 dynamic_format::PORTABLE );
674- EXPECT_TRUE (member_meta::is_set (obj));
675- EXPECT_EQ (0 , member_meta::getter{}(obj).size ());
665+ // @lint-ignore CLANGTIDY clang-diagnostic-deprecated-declarations
666+ EXPECT_TRUE (obj.k3 ().is_set ());
667+ EXPECT_EQ (0 , obj.k3 ()->size ());
676668}
677669
678670TEST (FollyDynamic, MapFromEmptyArray) {
679671 // some dynamic languages (lua, php) conflate empty array and empty object;
680672 // check that we do not throw in such cases
681- using type = global_structC;
682- using member_name = fatal::sequence<char , ' l' , ' 3' >;
683- using member_meta =
684- apache::thrift::get_struct_member_by_name<type, member_name>;
685- EXPECT_SAME < // sanity check
686- member_meta::type_class,
687- apache::thrift::type_class::map<
688- apache::thrift::type_class::integral,
689- apache::thrift::type_class::structure>>();
690- auto obj = from_dynamic<type>(
691- folly::dynamic::object (
692- fatal::z_data<member_name>(), folly::dynamic::array),
673+ static_assert (std::is_base_of_v<
674+ type::map_c,
675+ apache::thrift::op::get_type_tag<global_structC, ident::l3>>);
676+ auto obj = from_dynamic<global_structC>(
677+ folly::dynamic::object (" l3" , folly::dynamic::array),
693678 dynamic_format::PORTABLE );
694- EXPECT_TRUE (member_meta::is_set (obj));
695- EXPECT_EQ (0 , member_meta::getter{}(obj).size ());
679+ // @lint-ignore CLANGTIDY clang-diagnostic-deprecated-declarations
680+ EXPECT_TRUE (obj.l3 ().is_set ());
681+ EXPECT_EQ (0 , obj.l3 ()->size ());
696682}
697683
698684TEST (FollyDynamic, FromIobuf) {
@@ -729,35 +715,31 @@ namespace {
729715
730716class FollyDynamicEnum : public ::testing::Test {
731717 protected:
732- void SetUp () override {
733- EXPECT_SAME < // sanity check
734- member_meta::type_class,
735- apache::thrift::type_class::enumeration>();
736- }
718+ static_assert (std::is_base_of_v< // sanity check
719+ apache::thrift::type::enum_c,
720+ apache::thrift::op::get_type_tag<global_structC, ident::e>>);
737721
738722 using type = global_structC;
739- using member_name = fatal::sequence<char , ' e' >;
740- using member_meta =
741- apache::thrift::get_struct_member_by_name<type, member_name>;
742-
743- std::string member_name_s{fatal::to_instance<std::string, member_name>()};
723+ std::string member_name_s = " e" ;
744724};
745725} // namespace
746726
747727TEST_F (FollyDynamicEnum, FromStringStrict) {
748728 folly::dynamic dyn = folly::dynamic::object (member_name_s, " field0" );
749729 auto obj = from_dynamic<type>(dyn, dynamic_format::PORTABLE );
750- EXPECT_TRUE (member_meta::is_set (obj));
751- EXPECT_EQ (global_enum1::field0, member_meta::getter{}(obj));
730+ // @lint-ignore CLANGTIDY clang-diagnostic-deprecated-declarations
731+ EXPECT_TRUE (obj.e ().is_set ());
732+ EXPECT_EQ (global_enum1::field0, obj.e ());
752733 EXPECT_THROW (
753734 from_dynamic<type>(dyn, dynamic_format::JSON_1 ), folly::ConversionError);
754735}
755736
756737TEST_F (FollyDynamicEnum, FromIntegerStrict) {
757738 folly::dynamic dyn = folly::dynamic::object (member_name_s, 0 );
758739 auto obj = from_dynamic<type>(dyn, dynamic_format::JSON_1 );
759- EXPECT_TRUE (member_meta::is_set (obj));
760- EXPECT_EQ (global_enum1::field0, member_meta::getter{}(obj));
740+ // @lint-ignore CLANGTIDY clang-diagnostic-deprecated-declarations
741+ EXPECT_TRUE (obj.e ().is_set ());
742+ EXPECT_EQ (global_enum1::field0, obj.e ());
761743 EXPECT_THROW (
762744 from_dynamic<type>(dyn, dynamic_format::PORTABLE ), std::invalid_argument);
763745}
@@ -766,24 +748,28 @@ TEST_F(FollyDynamicEnum, FromStringLenient) {
766748 folly::dynamic dyn = folly::dynamic::object (member_name_s, " field0" );
767749 auto obj1 = from_dynamic<type>(
768750 dyn, dynamic_format::PORTABLE , format_adherence::LENIENT );
769- EXPECT_TRUE (member_meta::is_set (obj1));
770- EXPECT_EQ (global_enum1::field0, member_meta::getter{}(obj1));
751+ // @lint-ignore CLANGTIDY clang-diagnostic-deprecated-declarations
752+ EXPECT_TRUE (obj1.e ().is_set ());
753+ EXPECT_EQ (global_enum1::field0, obj1.e ());
771754 auto obj2 = from_dynamic<type>(
772755 dyn, dynamic_format::JSON_1 , format_adherence::LENIENT );
773- EXPECT_TRUE (member_meta::is_set (obj2));
774- EXPECT_EQ (global_enum1::field0, member_meta::getter{}(obj2));
756+ // @lint-ignore CLANGTIDY clang-diagnostic-deprecated-declarations
757+ EXPECT_TRUE (obj2.e ().is_set ());
758+ EXPECT_EQ (global_enum1::field0, obj2.e ());
775759}
776760
777761TEST_F (FollyDynamicEnum, FromIntegerLenient) {
778762 folly::dynamic dyn = folly::dynamic::object (member_name_s, 0 );
779763 auto obj1 = from_dynamic<type>(
780764 dyn, dynamic_format::PORTABLE , format_adherence::LENIENT );
781- EXPECT_TRUE (member_meta::is_set (obj1));
782- EXPECT_EQ (global_enum1::field0, member_meta::getter{}(obj1));
765+ // @lint-ignore CLANGTIDY clang-diagnostic-deprecated-declarations
766+ EXPECT_TRUE (obj1.e ().is_set ());
767+ EXPECT_EQ (global_enum1::field0, obj1.e ());
783768 auto obj2 = from_dynamic<type>(
784769 dyn, dynamic_format::JSON_1 , format_adherence::LENIENT );
785- EXPECT_TRUE (member_meta::is_set (obj2));
786- EXPECT_EQ (global_enum1::field0, member_meta::getter{}(obj2));
770+ // @lint-ignore CLANGTIDY clang-diagnostic-deprecated-declarations
771+ EXPECT_TRUE (obj2.e ().is_set ());
772+ EXPECT_EQ (global_enum1::field0, obj2.e ());
787773}
788774
789775TEST (FromDynamic, StructWithVectorBool) {
0 commit comments