//===- llvm/unittest/AsmParser/AsmParserTest.cpp - asm parser unittests ---===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "llvm/ADT/StringRef.h" #include "llvm/AsmParser/Parser.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include "llvm/Support/SourceMgr.h" #include "gtest/gtest.h" using namespace llvm; namespace { TEST(AsmParserTest, NullTerminatedInput) { LLVMContext &Ctx = getGlobalContext(); StringRef Source = "; Empty module \n"; SMDiagnostic Error; auto Mod = parseAssemblyString(Source, Error, Ctx); EXPECT_TRUE(Mod != nullptr); EXPECT_TRUE(Error.getMessage().empty()); } #ifdef GTEST_HAS_DEATH_TEST #ifndef NDEBUG TEST(AsmParserTest, NonNullTerminatedInput) { LLVMContext &Ctx = getGlobalContext(); StringRef Source = "; Empty module \n\1\2"; SMDiagnostic Error; std::unique_ptr Mod; EXPECT_DEATH(Mod = parseAssemblyString(Source.substr(0, Source.size() - 2), Error, Ctx), "Buffer is not null terminated!"); } #endif #endif } // end anonymous namespace