//===- DebugCounterTest.cpp - Debug Counter Tests -------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "mlir/Support/DebugCounter.h" #include "gmock/gmock.h" using namespace mlir; // DebugActionManager is only enabled in DEBUG mode. #if LLVM_ENABLE_ABI_BREAKING_CHECKS namespace { struct CounterAction : public DebugAction<> { static StringRef getTag() { return "counter-action"; } static StringRef getDescription() { return "Test action for debug counters"; } }; TEST(DebugCounterTest, CounterTest) { std::unique_ptr counter = std::make_unique(); counter->addCounter(CounterAction::getTag(), /*countToSkip=*/1, /*countToStopAfter=*/3); DebugActionManager manager; manager.registerActionHandler(std::move(counter)); // The first execution is skipped. EXPECT_FALSE(manager.shouldExecute()); // The counter stops after 3 successful executions. EXPECT_TRUE(manager.shouldExecute()); EXPECT_TRUE(manager.shouldExecute()); EXPECT_TRUE(manager.shouldExecute()); EXPECT_FALSE(manager.shouldExecute()); } } // namespace #endif