|  | //===- 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<MemoryBuffer> 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<MemoryBuffer> 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<MemoryBuffer> Copy( | 
|  | MemoryBuffer::getMemBufferCopy(Data, "id")); | 
|  | MemoryBufferRef CopyRef(*Copy); | 
|  | EXPECT_EQ(Ref.getBuffer(), CopyRef.getBuffer()); | 
|  | EXPECT_NE(Ref, CopyRef); | 
|  | } | 
|  |  | 
|  | } // end namespace |