Files
carbon-lang/toolchain/source/source_buffer_test.cpp
T
Jon Ross-Perkins b9df8ca765 Manual cleanup of toolchain clang-tidy/clangd warnings. (#3157)
A lot of this is more boring "remove unused header", plus some other
minor cleanups. I think the most significant changes were:

- yaml_test_helpers.cpp is doing a switch on an unsigned int, comparing
to enum values.
-
[bugprone-switch-missing-default-case](https://clang.llvm.org/extra/clang-tidy/checks/bugprone/switch-missing-default-case.html)
is unhappy with EnumBase, but correctly identified
yaml_test_helpers.cpp, so I'm opting to address it rather than disabling
it even though it needs NOLINT in several locations as a result, in
addition to what I think are some low-value `default` cases. I'd be fine
going the other way with this too and disabling it globally (I could see
it being noisier in the explorer).
- MarkInitializerFor swaps the argument names between the .h and .cpp. I
think the .cpp had the order as intended.
- There's a new-ish
[performance-enum-size](https://clang.llvm.org/extra/clang-tidy/checks/performance/enum-size.html)
which I'm basically treating as "add int8_t to enums".

My main motivation here is to just clean up as many of these as I can so
that I stop seeing them in vscode.
2023-08-25 22:45:57 +00:00

64 lines
2.1 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 "llvm/Support/VirtualFileSystem.h"
namespace Carbon::Testing {
namespace {
static constexpr llvm::StringLiteral TestFileName = "test.carbon";
TEST(SourceBufferTest, MissingFile) {
llvm::vfs::InMemoryFileSystem fs;
auto buffer = SourceBuffer::CreateFromFile(fs, TestFileName);
EXPECT_FALSE(buffer.ok());
}
TEST(SourceBufferTest, SimpleFile) {
llvm::vfs::InMemoryFileSystem fs;
CARBON_CHECK(fs.addFile(TestFileName, /*ModificationTime=*/0,
llvm::MemoryBuffer::getMemBuffer("Hello World")));
auto buffer = SourceBuffer::CreateFromFile(fs, TestFileName);
ASSERT_TRUE(buffer.ok()) << "Error message: " << buffer.error();
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::CreateFromFile(fs, TestFileName);
ASSERT_TRUE(buffer.ok()) << "Error message: " << buffer.error();
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::CreateFromFile(fs, TestFileName);
ASSERT_TRUE(buffer.ok()) << "Error message: " << buffer.error();
EXPECT_EQ(TestFileName, buffer->filename());
EXPECT_EQ("", buffer->text());
}
} // namespace
} // namespace Carbon::Testing