source_buffer_test.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Part of the Carbon Language project, under the Apache License v2.0 with LLVM
  2. // Exceptions. See /LICENSE for license information.
  3. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. #include "toolchain/source/source_buffer.h"
  5. #include <gtest/gtest.h>
  6. #include "llvm/Support/VirtualFileSystem.h"
  7. namespace Carbon::Testing {
  8. namespace {
  9. static constexpr llvm::StringLiteral TestFileName = "test.carbon";
  10. TEST(SourceBufferTest, MissingFile) {
  11. llvm::vfs::InMemoryFileSystem fs;
  12. auto buffer = SourceBuffer::CreateFromFile(fs, TestFileName);
  13. EXPECT_FALSE(buffer.ok());
  14. }
  15. TEST(SourceBufferTest, SimpleFile) {
  16. llvm::vfs::InMemoryFileSystem fs;
  17. CARBON_CHECK(fs.addFile(TestFileName, /*ModificationTime=*/0,
  18. llvm::MemoryBuffer::getMemBuffer("Hello World")));
  19. auto buffer = SourceBuffer::CreateFromFile(fs, TestFileName);
  20. ASSERT_TRUE(buffer.ok()) << "Error message: " << buffer.error();
  21. EXPECT_EQ(TestFileName, buffer->filename());
  22. EXPECT_EQ("Hello World", buffer->text());
  23. }
  24. TEST(SourceBufferTest, NoNull) {
  25. llvm::vfs::InMemoryFileSystem fs;
  26. static constexpr char NoNull[3] = {'a', 'b', 'c'};
  27. CARBON_CHECK(fs.addFile(
  28. TestFileName, /*ModificationTime=*/0,
  29. llvm::MemoryBuffer::getMemBuffer(llvm::StringRef(NoNull, sizeof(NoNull)),
  30. /*BufferName=*/"",
  31. /*RequiresNullTerminator=*/false)));
  32. auto buffer = SourceBuffer::CreateFromFile(fs, TestFileName);
  33. ASSERT_TRUE(buffer.ok()) << "Error message: " << buffer.error();
  34. EXPECT_EQ(TestFileName, buffer->filename());
  35. EXPECT_EQ("abc", buffer->text());
  36. }
  37. TEST(SourceBufferTest, EmptyFile) {
  38. llvm::vfs::InMemoryFileSystem fs;
  39. CARBON_CHECK(fs.addFile(TestFileName, /*ModificationTime=*/0,
  40. llvm::MemoryBuffer::getMemBuffer("")));
  41. auto buffer = SourceBuffer::CreateFromFile(fs, TestFileName);
  42. ASSERT_TRUE(buffer.ok()) << "Error message: " << buffer.error();
  43. EXPECT_EQ(TestFileName, buffer->filename());
  44. EXPECT_EQ("", buffer->text());
  45. }
  46. } // namespace
  47. } // namespace Carbon::Testing