Flutter Engine
Loading...
Searching...
No Matches
closure_unittests.cc
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#include "
fml/closure.h
"
6
#include "gtest/gtest.h"
7
8
TEST
(ScopedCleanupClosureTest, DestructorDoesNothingWhenNoClosureSet) {
9
fml::ScopedCleanupClosure
cleanup;
10
11
// Nothing should happen.
12
}
13
14
TEST
(ScopedCleanupClosureTest, ReleaseDoesNothingWhenNoClosureSet) {
15
fml::ScopedCleanupClosure
cleanup;
16
17
// Nothing should happen.
18
EXPECT_EQ(
nullptr
, cleanup.
Release
());
19
}
20
21
TEST
(ScopedCleanupClosureTest, ClosureInvokedOnDestructorWhenSetInConstructor) {
22
auto
invoked =
false
;
23
24
{
25
fml::ScopedCleanupClosure
cleanup([&invoked]() { invoked =
true
; });
26
27
EXPECT_FALSE(invoked);
28
}
29
30
EXPECT_TRUE(invoked);
31
}
32
33
TEST
(ScopedCleanupClosureTest, ClosureInvokedOnDestructorWhenSet) {
34
auto
invoked =
false
;
35
36
{
37
fml::ScopedCleanupClosure
cleanup;
38
cleanup.
SetClosure
([&invoked]() { invoked =
true
; });
39
40
EXPECT_FALSE(invoked);
41
}
42
43
EXPECT_TRUE(invoked);
44
}
45
46
TEST
(ScopedCleanupClosureTest, ClosureNotInvokedWhenMoved) {
47
auto
invoked = 0;
48
49
{
50
fml::ScopedCleanupClosure
cleanup([&invoked]() { invoked++; });
51
fml::ScopedCleanupClosure
cleanup2(std::move(cleanup));
52
53
EXPECT_EQ(0, invoked);
54
}
55
56
EXPECT_EQ(1, invoked);
57
}
58
59
TEST
(ScopedCleanupClosureTest, ClosureNotInvokedWhenMovedViaAssignment) {
60
auto
invoked = 0;
61
62
{
63
fml::ScopedCleanupClosure
cleanup([&invoked]() { invoked++; });
64
fml::ScopedCleanupClosure
cleanup2;
65
cleanup2 = std::move(cleanup);
66
67
EXPECT_EQ(0, invoked);
68
}
69
70
EXPECT_EQ(1, invoked);
71
}
fml::ScopedCleanupClosure
Wraps a closure that is invoked in the destructor unless released by the caller.
Definition
closure.h:32
fml::ScopedCleanupClosure::SetClosure
fml::closure SetClosure(const fml::closure &closure)
Definition
closure.h:50
fml::ScopedCleanupClosure::Release
fml::closure Release()
Definition
closure.h:56
closure.h
TEST
TEST(ScopedCleanupClosureTest, DestructorDoesNothingWhenNoClosureSet)
Definition
closure_unittests.cc:8
fml
closure_unittests.cc
Generated on Thu Nov 6 2025 16:11:22 for Flutter Engine by
1.9.8