Files
carbon-lang/toolchain/source/source_buffer_test.cpp
T
Jon Ross-Perkins 45ca3d28f5 Drop "diagnostic" from some filenames in the "diagnostics" folder (#6686)
Mainly because "sorting_diagnostic_consumer" is legacy, since
`SortingDiagnosticConsumer` became `SortingConsumer`. Also better
reflecting contents of these files.

Where I'm not renaming, I'm less positive about dropping "diagnostics"
from "file_diagnostics" and "null_diagnostics" (which contain both a
consumer and emitter, and "null.h" seems like poor naming), so not doing
that here. Also "diagnostic.h" contains `struct Diagnostic`, so is a
decent fit.

Assisted-by: Google Antigravity with Gemini 3 Flash
2026-02-04 17:24:55 +00:00

70 lines
2.3 KiB
C++

// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#include "toolchain/source/source_buffer.h"
#include <gtest/gtest.h>
#include "common/check.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "toolchain/diagnostics/emitter.h"
namespace Carbon {
namespace {
static constexpr llvm::StringLiteral TestFileName = "test.carbon";
TEST(SourceBufferTest, MissingFile) {
llvm::vfs::InMemoryFileSystem fs;
auto buffer = SourceBuffer::MakeFromFile(fs, TestFileName,
Diagnostics::ConsoleConsumer());
EXPECT_FALSE(buffer);
}
TEST(SourceBufferTest, SimpleFile) {
llvm::vfs::InMemoryFileSystem fs;
CARBON_CHECK(fs.addFile(TestFileName, /*ModificationTime=*/0,
llvm::MemoryBuffer::getMemBuffer("Hello World")));
auto buffer = SourceBuffer::MakeFromFile(fs, TestFileName,
Diagnostics::ConsoleConsumer());
ASSERT_TRUE(buffer);
EXPECT_EQ(TestFileName, buffer->filename());
EXPECT_EQ("Hello World", buffer->text());
}
TEST(SourceBufferTest, NoNull) {
llvm::vfs::InMemoryFileSystem fs;
static constexpr char NoNull[3] = {'a', 'b', 'c'};
CARBON_CHECK(fs.addFile(
TestFileName, /*ModificationTime=*/0,
llvm::MemoryBuffer::getMemBuffer(llvm::StringRef(NoNull, sizeof(NoNull)),
/*BufferName=*/"",
/*RequiresNullTerminator=*/false)));
auto buffer = SourceBuffer::MakeFromFile(fs, TestFileName,
Diagnostics::ConsoleConsumer());
ASSERT_TRUE(buffer);
EXPECT_EQ(TestFileName, buffer->filename());
EXPECT_EQ("abc", buffer->text());
}
TEST(SourceBufferTest, EmptyFile) {
llvm::vfs::InMemoryFileSystem fs;
CARBON_CHECK(fs.addFile(TestFileName, /*ModificationTime=*/0,
llvm::MemoryBuffer::getMemBuffer("")));
auto buffer = SourceBuffer::MakeFromFile(fs, TestFileName,
Diagnostics::ConsoleConsumer());
ASSERT_TRUE(buffer);
EXPECT_EQ(TestFileName, buffer->filename());
EXPECT_EQ("", buffer->text());
}
} // namespace
} // namespace Carbon