5 #include "flutter/testing/testing.h"
14 :
public Object<FlagObject, IMPELLER_INTERNAL_HANDLE_NAME(FlagHandle)> {
17 : destruction_flag_(destruction_flag) {
18 FML_CHECK(!destruction_flag_) <<
"Destruction flag must be cleared.";
22 FML_CHECK(!destruction_flag_) <<
"Already destructed.";
23 destruction_flag_ =
true;
27 bool& destruction_flag_;
33 :
public Object<TestObject, IMPELLER_INTERNAL_HANDLE_NAME(TestHandle)> {
36 : arg1_(arg1), arg2_(arg2), arg3_(arg3) {}
52 TEST(InteropObjectTest, CanCreateScoped) {
53 bool destructed =
false;
57 ASSERT_TRUE(destructed);
65 ASSERT_TRUE(destructed);
68 TEST(InteropObjectTest, CanCreate) {
69 auto object = Create<TestObject>(1, 1.3,
'c');
70 ASSERT_EQ(object->GetArg1(), 1);
71 ASSERT_EQ(object->GetArg2(), 1.3);
72 ASSERT_EQ(object->GetArg3(),
'c');
75 TEST(InteropObjectTest, CanCopyAssignMove) {
76 auto o = Create<TestObject>(1, 2.3,
'd');
77 ASSERT_EQ(o->GetRefCountForTests(), 1u);
80 ASSERT_EQ(o->GetRefCountForTests(), 2u);
82 ASSERT_EQ(o->GetRefCountForTests(), 3u);
84 ASSERT_EQ(o->GetRefCountForTests(), 4u);
86 ASSERT_EQ(o->GetRefCountForTests(), 1u);
90 ASSERT_EQ(o->GetRefCountForTests(), 2u);
91 ASSERT_EQ(o1->GetRefCountForTests(), 2u);
94 auto move_o = std::move(o);
95 ASSERT_EQ(move_o->GetRefCountForTests(), 1u);