rocksdb/util/defer_test.cc
Peter Dillinger 7fff38b1fe clang-format cache/ and util/ directories (#10867)
Summary:
This is purely the result of running `clang-format -i` on files, except some files have been excluded for manual intervention in a separate PR

Pull Request resolved: https://github.com/facebook/rocksdb/pull/10867

Test Plan: `make check`, `make check-headers`, `make format`

Reviewed By: jay-zhuang

Differential Revision: D40682086

Pulled By: pdillinger

fbshipit-source-id: 8673d978553ab99b516da7fb63ba0b82523337f8
2022-10-26 12:08:20 -07:00

52 lines
1 KiB
C++

// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
// This source code is licensed under both the GPLv2 (found in the
// COPYING file in the root directory) and Apache 2.0 License
// (found in the LICENSE.Apache file in the root directory).
#include "util/defer.h"
#include "port/port.h"
#include "port/stack_trace.h"
#include "test_util/testharness.h"
namespace ROCKSDB_NAMESPACE {
class DeferTest {};
TEST(DeferTest, BlockScope) {
int v = 1;
{
Defer defer([&v]() { v *= 2; });
}
ASSERT_EQ(2, v);
}
TEST(DeferTest, FunctionScope) {
int v = 1;
auto f = [&v]() {
Defer defer([&v]() { v *= 2; });
v = 2;
};
f();
ASSERT_EQ(4, v);
}
TEST(SaveAndRestoreTest, BlockScope) {
int v = 1;
{
SaveAndRestore<int> sr(&v);
ASSERT_EQ(v, 1);
v = 2;
ASSERT_EQ(v, 2);
}
ASSERT_EQ(v, 1);
}
} // namespace ROCKSDB_NAMESPACE
int main(int argc, char** argv) {
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}