1dc6a84fcSRiver Riddle //===- DebugCounterTest.cpp - Debug Counter Tests -------------------------===// 2dc6a84fcSRiver Riddle // 3dc6a84fcSRiver Riddle // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4dc6a84fcSRiver Riddle // See https://llvm.org/LICENSE.txt for license information. 5dc6a84fcSRiver Riddle // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6dc6a84fcSRiver Riddle // 7dc6a84fcSRiver Riddle //===----------------------------------------------------------------------===// 8dc6a84fcSRiver Riddle 9dc6a84fcSRiver Riddle #include "mlir/Support/DebugCounter.h" 10dc6a84fcSRiver Riddle #include "gmock/gmock.h" 11dc6a84fcSRiver Riddle 12dc6a84fcSRiver Riddle using namespace mlir; 13dc6a84fcSRiver Riddle 14dc6a84fcSRiver Riddle // DebugActionManager is only enabled in DEBUG mode. 15*6da63573SMogball #if LLVM_ENABLE_ABI_BREAKING_CHECKS 16dc6a84fcSRiver Riddle 17dc6a84fcSRiver Riddle namespace { 18dc6a84fcSRiver Riddle 19dc6a84fcSRiver Riddle struct CounterAction : public DebugAction<> { getTag__anon0710ea080111::CounterAction20dc6a84fcSRiver Riddle static StringRef getTag() { return "counter-action"; } getDescription__anon0710ea080111::CounterAction21dc6a84fcSRiver Riddle static StringRef getDescription() { return "Test action for debug counters"; } 22dc6a84fcSRiver Riddle }; 23dc6a84fcSRiver Riddle TEST(DebugCounterTest,CounterTest)24dc6a84fcSRiver RiddleTEST(DebugCounterTest, CounterTest) { 25dc6a84fcSRiver Riddle std::unique_ptr<DebugCounter> counter = std::make_unique<DebugCounter>(); 26dc6a84fcSRiver Riddle counter->addCounter(CounterAction::getTag(), /*countToSkip=*/1, 27dc6a84fcSRiver Riddle /*countToStopAfter=*/3); 28dc6a84fcSRiver Riddle 29dc6a84fcSRiver Riddle DebugActionManager manager; 30dc6a84fcSRiver Riddle manager.registerActionHandler(std::move(counter)); 31dc6a84fcSRiver Riddle 32dc6a84fcSRiver Riddle // The first execution is skipped. 33dc6a84fcSRiver Riddle EXPECT_FALSE(manager.shouldExecute<CounterAction>()); 34dc6a84fcSRiver Riddle 35dc6a84fcSRiver Riddle // The counter stops after 3 successful executions. 36dc6a84fcSRiver Riddle EXPECT_TRUE(manager.shouldExecute<CounterAction>()); 37dc6a84fcSRiver Riddle EXPECT_TRUE(manager.shouldExecute<CounterAction>()); 38dc6a84fcSRiver Riddle EXPECT_TRUE(manager.shouldExecute<CounterAction>()); 39dc6a84fcSRiver Riddle EXPECT_FALSE(manager.shouldExecute<CounterAction>()); 40dc6a84fcSRiver Riddle } 41dc6a84fcSRiver Riddle 42dc6a84fcSRiver Riddle } // namespace 43dc6a84fcSRiver Riddle 44dc6a84fcSRiver Riddle #endif 45