Files
clang-p2996/lldb/unittests/Utility/CleanUpTest.cpp
Vedant Kumar ebc6bc8188 [Utility] Simplify and generalize the CleanUp helper, NFC
Removing the template arguments and most of the mutating methods from
CleanUp makes it easier to understand and reuse.

In its present state, CleanUp would be too cumbersome to adapt to cases
where multiple objects need to be released. Take for example this change
in swift-lldb:

  https://github.com/apple/swift-lldb/pull/334/files#diff-6f474df750f75c8ba675f2a8408a5629R219

This change is simple to express with the new CleanUp, but not so simple
with the old version.

Differential Revision: https://reviews.llvm.org/D43662

llvm-svn: 325964
2018-02-23 22:08:38 +00:00

48 lines
1009 B
C++

//===-- CleanUpTest.cpp -----------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "lldb/Utility/CleanUp.h"
#include "gtest/gtest.h"
using namespace lldb_private;
TEST(CleanUpTest, no_args) {
bool f = false;
{
CleanUp cleanup([&] { f = true; });
}
ASSERT_TRUE(f);
}
TEST(CleanUpTest, multiple_args) {
bool f1 = false;
bool f2 = false;
bool f3 = false;
{
CleanUp cleanup(
[](bool arg1, bool *arg2, bool &arg3) {
ASSERT_FALSE(arg1);
*arg2 = true;
arg3 = true;
},
f1, &f2, f3);
}
ASSERT_TRUE(f2);
ASSERT_FALSE(f3);
}
TEST(CleanUpTest, disable) {
bool f = false;
{
CleanUp cleanup([&] { f = true; });
cleanup.disable();
}
ASSERT_FALSE(f);
}