5 #include "flutter/testing/testing.h"
16 :
public Object<FlagObject, IMPELLER_INTERNAL_HANDLE_NAME(FlagHandle)> {
19 : destruction_flag_(destruction_flag) {
20 FML_CHECK(!destruction_flag_) <<
"Destruction flag must be cleared.";
24 FML_CHECK(!destruction_flag_) <<
"Already destructed.";
25 destruction_flag_ =
true;
29 bool& destruction_flag_;
35 :
public Object<TestObject, IMPELLER_INTERNAL_HANDLE_NAME(TestHandle)> {
38 : arg1_(arg1), arg2_(arg2), arg3_(arg3) {}
54 TEST(InteropObjectTest, CanCreateScoped) {
55 bool destructed =
false;
59 ASSERT_TRUE(destructed);
67 ASSERT_TRUE(destructed);
70 TEST(InteropObjectTest, CanCreate) {
71 auto object = Create<TestObject>(1, 1.3,
'c');
72 ASSERT_EQ(object->GetArg1(), 1);
73 ASSERT_EQ(object->GetArg2(), 1.3);
74 ASSERT_EQ(object->GetArg3(),
'c');
77 TEST(InteropObjectTest, CanCopyAssignMove) {
78 auto o = Create<TestObject>(1, 2.3,
'd');
79 ASSERT_EQ(o->GetRefCountForTests(), 1u);
82 ASSERT_EQ(o->GetRefCountForTests(), 2u);
84 ASSERT_EQ(o->GetRefCountForTests(), 3u);
86 ASSERT_EQ(o->GetRefCountForTests(), 4u);
88 ASSERT_EQ(o->GetRefCountForTests(), 1u);
92 ASSERT_EQ(o->GetRefCountForTests(), 2u);
93 ASSERT_EQ(o1->GetRefCountForTests(), 2u);
96 auto move_o = std::move(o);
97 ASSERT_EQ(move_o->GetRefCountForTests(), 1u);
FlagObject(bool &destruction_flag)
TestObject(int arg1, double arg2, char arg3)
IMPELLER_DEFINE_HANDLE(FlagHandle)
TEST(InteropObjectTest, CanCreateScoped)
ScopedObject< Object > Ref(Object *object)
ScopedObject< Object > Adopt(Object *object)