annotate unittests/ADT/ScopeExitTest.cpp @ 134:3a76565eade5 LLVM5.0.1

update 5.0.1
author mir3636
date Sat, 17 Feb 2018 09:57:20 +0900
parents 1172e4bd9c6f
children c2174574ed3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 //===- llvm/unittest/ADT/ScopeExit.cpp - Scope exit unit tests --*- C++ -*-===//
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 // The LLVM Compiler Infrastructure
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 // This file is distributed under the University of Illinois Open Source
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 // License. See LICENSE.TXT for details.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8 //===----------------------------------------------------------------------===//
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 #include "llvm/ADT/ScopeExit.h"
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 #include "gtest/gtest.h"
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 using namespace llvm;
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 namespace {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 TEST(ScopeExitTest, Basic) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 struct Callable {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 bool &Called;
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 Callable(bool &Called) : Called(Called) {}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 Callable(Callable &&RHS) : Called(RHS.Called) {}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 void operator()() { Called = true; }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 };
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 bool Called = false;
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 auto g = make_scope_exit(Callable(Called));
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 EXPECT_FALSE(Called);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 EXPECT_TRUE(Called);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31
134
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
32 TEST(ScopeExitTest, Release) {
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
33 int Count = 0;
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
34 auto Increment = [&] { ++Count; };
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
35 {
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
36 auto G = make_scope_exit(Increment);
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
37 auto H = std::move(G);
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
38 auto I = std::move(G);
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
39 EXPECT_EQ(0, Count);
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
40 }
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
41 EXPECT_EQ(1, Count);
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
42 {
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
43 auto G = make_scope_exit(Increment);
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
44 G.release();
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
45 }
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
46 EXPECT_EQ(1, Count);
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
47 }
3a76565eade5 update 5.0.1
mir3636
parents: 120
diff changeset
48
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49 } // end anonymous namespace