emrekultursay updated this revision to Diff 252881. emrekultursay marked 3 inline comments as done. emrekultursay added a comment.
Applied labath@'s suggestions on test Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76805/new/ https://reviews.llvm.org/D76805 Files: lldb/source/Core/SourceManager.cpp lldb/unittests/Core/CMakeLists.txt lldb/unittests/Core/SourceManagerTest.cpp Index: lldb/unittests/Core/SourceManagerTest.cpp =================================================================== --- /dev/null +++ lldb/unittests/Core/SourceManagerTest.cpp @@ -0,0 +1,48 @@ +//===-- SourceManagerTest.cpp ---------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "lldb/Core/SourceManager.h" +#include "lldb/Host/FileSystem.h" + +#include "gtest/gtest.h" + +using namespace lldb; +using namespace lldb_private; + +class SourceFileCache : public ::testing::Test { +public: + void SetUp() override { FileSystem::Initialize(); } + void TearDown() override { FileSystem::Terminate(); } +}; + +TEST_F(SourceFileCache, FindSourceFileFound) { + SourceManager::SourceFileCache cache; + + // Insert: foo + FileSpec foo_file_spec("foo"); + auto foo_file_sp = std::make_shared<SourceManager::File>(foo_file_spec, nullptr); + cache.AddSourceFile(foo_file_sp); + + // Query: foo, expect found. + FileSpec another_foo_file_spec("foo"); + ASSERT_EQ(cache.FindSourceFile(another_foo_file_spec), foo_file_sp); +} + +TEST_F(SourceFileCache, FindSourceFileNotFound) { + SourceManager::SourceFileCache cache; + + // Insert: foo + FileSpec foo_file_spec("foo"); + auto foo_file_sp = + std::make_shared<SourceManager::File>(foo_file_spec, nullptr); + cache.AddSourceFile(foo_file_sp); + + // Query: bar, expect not found. + FileSpec bar_file_spec("bar"); + ASSERT_EQ(cache.FindSourceFile(bar_file_spec), nullptr); +} Index: lldb/unittests/Core/CMakeLists.txt =================================================================== --- lldb/unittests/Core/CMakeLists.txt +++ lldb/unittests/Core/CMakeLists.txt @@ -1,6 +1,7 @@ add_lldb_unittest(LLDBCoreTests MangledTest.cpp RichManglingContextTest.cpp + SourceManagerTest.cpp StreamCallbackTest.cpp UniqueCStringMapTest.cpp Index: lldb/source/Core/SourceManager.cpp =================================================================== --- lldb/source/Core/SourceManager.cpp +++ lldb/source/Core/SourceManager.cpp @@ -696,7 +696,7 @@ } void SourceManager::SourceFileCache::AddSourceFile(const FileSP &file_sp) { - FileSpec file_spec; + FileSpec file_spec = file_sp->GetFileSpec(); FileCache::iterator pos = m_file_cache.find(file_spec); if (pos == m_file_cache.end()) m_file_cache[file_spec] = file_sp;
Index: lldb/unittests/Core/SourceManagerTest.cpp =================================================================== --- /dev/null +++ lldb/unittests/Core/SourceManagerTest.cpp @@ -0,0 +1,48 @@ +//===-- SourceManagerTest.cpp ---------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "lldb/Core/SourceManager.h" +#include "lldb/Host/FileSystem.h" + +#include "gtest/gtest.h" + +using namespace lldb; +using namespace lldb_private; + +class SourceFileCache : public ::testing::Test { +public: + void SetUp() override { FileSystem::Initialize(); } + void TearDown() override { FileSystem::Terminate(); } +}; + +TEST_F(SourceFileCache, FindSourceFileFound) { + SourceManager::SourceFileCache cache; + + // Insert: foo + FileSpec foo_file_spec("foo"); + auto foo_file_sp = std::make_shared<SourceManager::File>(foo_file_spec, nullptr); + cache.AddSourceFile(foo_file_sp); + + // Query: foo, expect found. + FileSpec another_foo_file_spec("foo"); + ASSERT_EQ(cache.FindSourceFile(another_foo_file_spec), foo_file_sp); +} + +TEST_F(SourceFileCache, FindSourceFileNotFound) { + SourceManager::SourceFileCache cache; + + // Insert: foo + FileSpec foo_file_spec("foo"); + auto foo_file_sp = + std::make_shared<SourceManager::File>(foo_file_spec, nullptr); + cache.AddSourceFile(foo_file_sp); + + // Query: bar, expect not found. + FileSpec bar_file_spec("bar"); + ASSERT_EQ(cache.FindSourceFile(bar_file_spec), nullptr); +} Index: lldb/unittests/Core/CMakeLists.txt =================================================================== --- lldb/unittests/Core/CMakeLists.txt +++ lldb/unittests/Core/CMakeLists.txt @@ -1,6 +1,7 @@ add_lldb_unittest(LLDBCoreTests MangledTest.cpp RichManglingContextTest.cpp + SourceManagerTest.cpp StreamCallbackTest.cpp UniqueCStringMapTest.cpp Index: lldb/source/Core/SourceManager.cpp =================================================================== --- lldb/source/Core/SourceManager.cpp +++ lldb/source/Core/SourceManager.cpp @@ -696,7 +696,7 @@ } void SourceManager::SourceFileCache::AddSourceFile(const FileSP &file_sp) { - FileSpec file_spec; + FileSpec file_spec = file_sp->GetFileSpec(); FileCache::iterator pos = m_file_cache.find(file_spec); if (pos == m_file_cache.end()) m_file_cache[file_spec] = file_sp;
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits