//===-- PerfHelperTest.cpp --------------------------------------*- C++ -*-===//
//
// 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 "PerfHelper.h"
#include "llvm/Config/config.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"

namespace llvm {
namespace exegesis {
namespace pfm {
namespace {

using ::testing::IsEmpty;
using ::testing::Not;

TEST(PerfHelperTest, FunctionalTest) {
#ifdef HAVE_LIBPFM
  ASSERT_FALSE(pfmInitialize());
  const PerfEvent SingleEvent("CYCLES:u");
  const auto &EmptyFn = []() {};
  std::string CallbackEventName;
  std::string CallbackEventNameFullyQualifed;
  int64_t CallbackEventCycles;
  Measure(
      makeArrayRef(SingleEvent),
      [&](const PerfEvent &Event, int64_t Value) {
        CallbackEventName = Event.name();
        CallbackEventNameFullyQualifed = Event.getPfmEventString();
        CallbackEventCycles = Value;
      },
      EmptyFn);
  EXPECT_EQ(CallbackEventName, "CYCLES:u");
  EXPECT_THAT(CallbackEventNameFullyQualifed, Not(IsEmpty()));
  pfmTerminate();
#else
  ASSERT_TRUE(pfmInitialize());
#endif
}

} // namespace
} // namespace pfm
} // namespace exegesis
} // namespace llvm
