//===-- report_test.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 "scudo/standalone/report.h"
#include "gtest/gtest.h"

TEST(ScudoReportTest, Generic) {
  void *P = reinterpret_cast<void *>(0x42424242U);
  EXPECT_DEATH(scudo::reportError("TEST123"), "Scudo ERROR.*TEST123");
  EXPECT_DEATH(scudo::reportInvalidFlag("ABC", "DEF"), "Scudo ERROR.*ABC.*DEF");
  EXPECT_DEATH(scudo::reportHeaderCorruption(P), "Scudo ERROR.*42424242");
  EXPECT_DEATH(scudo::reportHeaderRace(P), "Scudo ERROR.*42424242");
  EXPECT_DEATH(scudo::reportSanityCheckError("XYZ"), "Scudo ERROR.*XYZ");
  EXPECT_DEATH(scudo::reportAlignmentTooBig(123, 456), "Scudo ERROR.*123.*456");
  EXPECT_DEATH(scudo::reportAllocationSizeTooBig(123, 456, 789),
               "Scudo ERROR.*123.*456.*789");
  EXPECT_DEATH(scudo::reportOutOfMemory(4242), "Scudo ERROR.*4242");
  EXPECT_DEATH(
      scudo::reportInvalidChunkState(scudo::AllocatorAction::Recycling, P),
      "Scudo ERROR.*recycling.*42424242");
  EXPECT_DEATH(
      scudo::reportInvalidChunkState(scudo::AllocatorAction::Sizing, P),
      "Scudo ERROR.*sizing.*42424242");
  EXPECT_DEATH(
      scudo::reportMisalignedPointer(scudo::AllocatorAction::Deallocating, P),
      "Scudo ERROR.*deallocating.*42424242");
  EXPECT_DEATH(scudo::reportDeallocTypeMismatch(
                   scudo::AllocatorAction::Reallocating, P, 0, 1),
               "Scudo ERROR.*reallocating.*42424242");
  EXPECT_DEATH(scudo::reportDeleteSizeMismatch(P, 123, 456),
               "Scudo ERROR.*42424242.*123.*456");
}

TEST(ScudoReportTest, CSpecific) {
  EXPECT_DEATH(scudo::reportAlignmentNotPowerOfTwo(123), "Scudo ERROR.*123");
  EXPECT_DEATH(scudo::reportCallocOverflow(123, 456), "Scudo ERROR.*123.*456");
  EXPECT_DEATH(scudo::reportInvalidPosixMemalignAlignment(789),
               "Scudo ERROR.*789");
  EXPECT_DEATH(scudo::reportPvallocOverflow(123), "Scudo ERROR.*123");
  EXPECT_DEATH(scudo::reportInvalidAlignedAllocAlignment(123, 456),
               "Scudo ERROR.*123.*456");
}
