source_buffer_test.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 "common/check.h"
  7. #include "llvm/Support/VirtualFileSystem.h"
  8. namespace Carbon::Testing {
  9. namespace {
  10. static constexpr llvm::StringLiteral TestFileName = "test.carbon";
  11. TEST(SourceBufferTest, MissingFile) {
  12. llvm::vfs::InMemoryFileSystem fs;
  13. auto buffer = SourceBuffer::CreateFromFile(fs, llvm::errs(), TestFileName);
  14. EXPECT_FALSE(buffer);
  15. }
  16. TEST(SourceBufferTest, SimpleFile) {
  17. llvm::vfs::InMemoryFileSystem fs;
  18. CARBON_CHECK(fs.addFile(TestFileName, /*ModificationTime=*/0,
  19. llvm::MemoryBuffer::getMemBuffer("Hello World")));
  20. auto buffer = SourceBuffer::CreateFromFile(fs, llvm::errs(), TestFileName);
  21. ASSERT_TRUE(buffer);
  22. EXPECT_EQ(TestFileName, buffer->filename());
  23. EXPECT_EQ("Hello World", buffer->text());
  24. }
  25. TEST(SourceBufferTest, NoNull) {
  26. llvm::vfs::InMemoryFileSystem fs;
  27. static constexpr char NoNull[3] = {'a', 'b', 'c'};
  28. CARBON_CHECK(fs.addFile(
  29. TestFileName, /*ModificationTime=*/0,
  30. llvm::MemoryBuffer::getMemBuffer(llvm::StringRef(NoNull, sizeof(NoNull)),
  31. /*BufferName=*/"",
  32. /*RequiresNullTerminator=*/false)));
  33. auto buffer = SourceBuffer::CreateFromFile(fs, llvm::errs(), TestFileName);
  34. ASSERT_TRUE(buffer);
  35. EXPECT_EQ(TestFileName, buffer->filename());
  36. EXPECT_EQ("abc", buffer->text());
  37. }
  38. TEST(SourceBufferTest, EmptyFile) {
  39. llvm::vfs::InMemoryFileSystem fs;
  40. CARBON_CHECK(fs.addFile(TestFileName, /*ModificationTime=*/0,
  41. llvm::MemoryBuffer::getMemBuffer("")));
  42. auto buffer = SourceBuffer::CreateFromFile(fs, llvm::errs(), TestFileName);
  43. ASSERT_TRUE(buffer);
  44. EXPECT_EQ(TestFileName, buffer->filename());
  45. EXPECT_EQ("", buffer->text());
  46. }
  47. } // namespace
  48. } // namespace Carbon::Testing