Mercurial > hg > CbC > CbC_llvm
view 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 |
line wrap: on
line source
//===- llvm/unittest/ADT/ScopeExit.cpp - Scope exit unit tests --*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "llvm/ADT/ScopeExit.h" #include "gtest/gtest.h" using namespace llvm; namespace { TEST(ScopeExitTest, Basic) { struct Callable { bool &Called; Callable(bool &Called) : Called(Called) {} Callable(Callable &&RHS) : Called(RHS.Called) {} void operator()() { Called = true; } }; bool Called = false; { auto g = make_scope_exit(Callable(Called)); EXPECT_FALSE(Called); } EXPECT_TRUE(Called); } TEST(ScopeExitTest, Release) { int Count = 0; auto Increment = [&] { ++Count; }; { auto G = make_scope_exit(Increment); auto H = std::move(G); auto I = std::move(G); EXPECT_EQ(0, Count); } EXPECT_EQ(1, Count); { auto G = make_scope_exit(Increment); G.release(); } EXPECT_EQ(1, Count); } } // end anonymous namespace