//===- MemoryBufferRefTest.cpp - MemoryBufferRef 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 // //===----------------------------------------------------------------------===// // // This file implements unit tests for the MemoryBufferRef support class. // //===----------------------------------------------------------------------===// #include "llvm/Support/MemoryBufferRef.h" #include "llvm/Support/MemoryBuffer.h" #include "gtest/gtest.h" using namespace llvm; namespace { TEST(MemoryBufferRefTest, construct) { std::unique_ptr MB(MemoryBuffer::getMemBuffer("data", "id")); MemoryBufferRef MBR(*MB); EXPECT_EQ(MB->getBufferStart(), MBR.getBufferStart()); EXPECT_EQ(MB->getBufferIdentifier(), MBR.getBufferIdentifier()); } TEST(MemoryBufferRefTest, compareEquals) { std::string Data = "data"; std::unique_ptr MB(MemoryBuffer::getMemBuffer(Data, "id")); MemoryBufferRef Ref(*MB); MemoryBufferRef Empty; MemoryBufferRef NoIdentifier(MB->getBuffer(), ""); MemoryBufferRef NoData("", MB->getBufferIdentifier()); MemoryBufferRef Same(MB->getBuffer(), MB->getBufferIdentifier()); EXPECT_NE(Empty, Ref); EXPECT_NE(NoIdentifier, Ref); EXPECT_NE(NoData, Ref); EXPECT_EQ(Same, Ref); // Confirm NE when content matches but pointer identity does not. std::unique_ptr Copy( MemoryBuffer::getMemBufferCopy(Data, "id")); MemoryBufferRef CopyRef(*Copy); EXPECT_EQ(Ref.getBuffer(), CopyRef.getBuffer()); EXPECT_NE(Ref, CopyRef); } } // end namespace