Skip to content

Commit ee76d3d

Browse files
Mizuchimeta-codesync[bot]
authored andcommitted
Migrate get_struct_member_by_name to always-on reflection in unit-test
Summary: This diff kept the existing behavior unchanged, this requires using deprecated API `is_set()`. Reviewed By: hchokshi Differential Revision: D90126061 fbshipit-source-id: f8f3bd48b216578abcceaacfba2db9c49dacc6c8
1 parent 2a901ef commit ee76d3d

1 file changed

Lines changed: 48 additions & 62 deletions

File tree

third-party/thrift/src/thrift/lib/cpp2/folly_dynamic/test/folly_dynamic_test.cpp

Lines changed: 48 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
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>
@@ -37,6 +36,8 @@
3736
using namespace cpp2;
3837
using facebook::thrift::dynamic_format;
3938
using facebook::thrift::format_adherence;
39+
namespace ident = apache::thrift::ident;
40+
namespace type = apache::thrift::type;
4041

4142
namespace facebook::thrift {
4243

@@ -641,58 +642,43 @@ TEST(FollyDynamic, OptionalString) {
641642
TEST(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

660656
TEST(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

678670
TEST(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

698684
TEST(FollyDynamic, FromIobuf) {
@@ -729,35 +715,31 @@ namespace {
729715

730716
class 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

747727
TEST_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

756737
TEST_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

777761
TEST_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

789775
TEST(FromDynamic, StructWithVectorBool) {

0 commit comments

Comments
 (0)