48 lines
1.4 KiB
C++
48 lines
1.4 KiB
C++
#include "Test/Test.h"
|
|
#include "Server/Indexer.h"
|
|
|
|
namespace clice::testing {
|
|
|
|
TEST(Indexer, Basic) {
|
|
config::IndexOptions options;
|
|
options.dir = path::join(".", "temp");
|
|
auto error = fs::create_directories(options.dir);
|
|
|
|
CompilationDatabase database;
|
|
auto prefix = path::join(test_dir(), "indexer");
|
|
auto foo = path::real_path(path::join(prefix, "foo.cpp"));
|
|
auto main = path::real_path(path::join(prefix, "main.cpp"));
|
|
database.updateCommand(foo, std::format("clang++ {}", foo));
|
|
database.updateCommand(main, std::format("clang++ {}", main));
|
|
|
|
Indexer indexer(options, database);
|
|
indexer.loadFromDisk();
|
|
|
|
auto p1 = indexer.index(main);
|
|
auto p2 = indexer.index(foo);
|
|
async::run(p1, p2);
|
|
|
|
auto kind =
|
|
RelationKind(RelationKind::Reference, RelationKind::Definition, RelationKind::Declaration);
|
|
proto::DeclarationParams params{
|
|
.textDocument = {.uri = SourceConverter::toURI(foo)},
|
|
.position = {2, 5}
|
|
};
|
|
auto lookup = indexer.lookup(params, kind);
|
|
auto&& [result] = async::run(lookup);
|
|
|
|
indexer.saveToDisk();
|
|
|
|
Indexer indexer2(options, database);
|
|
indexer2.loadFromDisk();
|
|
|
|
auto lookup2 = indexer2.lookup(params, kind);
|
|
auto&& [result2] = async::run(lookup2);
|
|
|
|
print("Result: {}\n", json::serialize(result));
|
|
|
|
EXPECT_EQ(result, result2);
|
|
}
|
|
|
|
} // namespace clice::testing
|