xref: /llvm-project/llvm/unittests/Support/MemoryBufferRefTest.cpp (revision f0875971249b59b5a4c07cedc9633f0359cf6b73)
1*f0875971SDuncan P. N. Exon Smith //===- MemoryBufferRefTest.cpp - MemoryBufferRef tests --------------------===//
2*f0875971SDuncan P. N. Exon Smith //
3*f0875971SDuncan P. N. Exon Smith // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*f0875971SDuncan P. N. Exon Smith // See https://llvm.org/LICENSE.txt for license information.
5*f0875971SDuncan P. N. Exon Smith // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*f0875971SDuncan P. N. Exon Smith //
7*f0875971SDuncan P. N. Exon Smith //===----------------------------------------------------------------------===//
8*f0875971SDuncan P. N. Exon Smith //
9*f0875971SDuncan P. N. Exon Smith // This file implements unit tests for the MemoryBufferRef support class.
10*f0875971SDuncan P. N. Exon Smith //
11*f0875971SDuncan P. N. Exon Smith //===----------------------------------------------------------------------===//
12*f0875971SDuncan P. N. Exon Smith 
13*f0875971SDuncan P. N. Exon Smith #include "llvm/Support/MemoryBufferRef.h"
14*f0875971SDuncan P. N. Exon Smith #include "llvm/Support/MemoryBuffer.h"
15*f0875971SDuncan P. N. Exon Smith #include "gtest/gtest.h"
16*f0875971SDuncan P. N. Exon Smith 
17*f0875971SDuncan P. N. Exon Smith using namespace llvm;
18*f0875971SDuncan P. N. Exon Smith 
19*f0875971SDuncan P. N. Exon Smith namespace {
20*f0875971SDuncan P. N. Exon Smith 
TEST(MemoryBufferRefTest,construct)21*f0875971SDuncan P. N. Exon Smith TEST(MemoryBufferRefTest, construct) {
22*f0875971SDuncan P. N. Exon Smith   std::unique_ptr<MemoryBuffer> MB(MemoryBuffer::getMemBuffer("data", "id"));
23*f0875971SDuncan P. N. Exon Smith   MemoryBufferRef MBR(*MB);
24*f0875971SDuncan P. N. Exon Smith 
25*f0875971SDuncan P. N. Exon Smith   EXPECT_EQ(MB->getBufferStart(), MBR.getBufferStart());
26*f0875971SDuncan P. N. Exon Smith   EXPECT_EQ(MB->getBufferIdentifier(), MBR.getBufferIdentifier());
27*f0875971SDuncan P. N. Exon Smith }
28*f0875971SDuncan P. N. Exon Smith 
TEST(MemoryBufferRefTest,compareEquals)29*f0875971SDuncan P. N. Exon Smith TEST(MemoryBufferRefTest, compareEquals) {
30*f0875971SDuncan P. N. Exon Smith   std::string Data = "data";
31*f0875971SDuncan P. N. Exon Smith   std::unique_ptr<MemoryBuffer> MB(MemoryBuffer::getMemBuffer(Data, "id"));
32*f0875971SDuncan P. N. Exon Smith   MemoryBufferRef Ref(*MB);
33*f0875971SDuncan P. N. Exon Smith   MemoryBufferRef Empty;
34*f0875971SDuncan P. N. Exon Smith   MemoryBufferRef NoIdentifier(MB->getBuffer(), "");
35*f0875971SDuncan P. N. Exon Smith   MemoryBufferRef NoData("", MB->getBufferIdentifier());
36*f0875971SDuncan P. N. Exon Smith   MemoryBufferRef Same(MB->getBuffer(), MB->getBufferIdentifier());
37*f0875971SDuncan P. N. Exon Smith 
38*f0875971SDuncan P. N. Exon Smith   EXPECT_NE(Empty, Ref);
39*f0875971SDuncan P. N. Exon Smith   EXPECT_NE(NoIdentifier, Ref);
40*f0875971SDuncan P. N. Exon Smith   EXPECT_NE(NoData, Ref);
41*f0875971SDuncan P. N. Exon Smith   EXPECT_EQ(Same, Ref);
42*f0875971SDuncan P. N. Exon Smith 
43*f0875971SDuncan P. N. Exon Smith   // Confirm NE when content matches but pointer identity does not.
44*f0875971SDuncan P. N. Exon Smith   std::unique_ptr<MemoryBuffer> Copy(
45*f0875971SDuncan P. N. Exon Smith       MemoryBuffer::getMemBufferCopy(Data, "id"));
46*f0875971SDuncan P. N. Exon Smith   MemoryBufferRef CopyRef(*Copy);
47*f0875971SDuncan P. N. Exon Smith   EXPECT_EQ(Ref.getBuffer(), CopyRef.getBuffer());
48*f0875971SDuncan P. N. Exon Smith   EXPECT_NE(Ref, CopyRef);
49*f0875971SDuncan P. N. Exon Smith }
50*f0875971SDuncan P. N. Exon Smith 
51*f0875971SDuncan P. N. Exon Smith } // end namespace
52