/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 * All rights reserved.
 *
 * This source code is licensed under both the BSD-style license (found in the
 * LICENSE file in the root directory of this source tree) and the GPLv2 (found
 * in the COPYING file in the root directory of this source tree).
 */
#include "utils/ScopeGuard.h"

#include <gtest/gtest.h>

using namespace pzstd;

TEST(ScopeGuard, Dismiss) {
  {
    auto guard = makeScopeGuard([&] { EXPECT_TRUE(false); });
    guard.dismiss();
  }
}

TEST(ScopeGuard, Executes) {
  bool executed = false;
  {
    auto guard = makeScopeGuard([&] { executed = true; });
  }
  EXPECT_TRUE(executed);
}
