public void TestCreateIndex() { using var indexBuilder = new CodeIndexBuilder("ABC", new LucenePoolLight(TempCodeIndexDir), new LucenePoolLight(TempHintIndexDir), Log); var fileName = Path.Combine(MonitorFolder, "A.txt"); File.AppendAllText(fileName, "ABCD EEEE"); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(fileName))); var results = indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()); var words = indexBuilder.HintIndexPool.SearchWord(new MatchAllDocsQuery()); Assert.AreEqual(1, results.Length); Assert.AreEqual(2, words.Length); Assert.AreEqual("A.txt", results[0].FileName); Assert.AreEqual("txt", results[0].FileExtension); Assert.AreEqual(fileName, results[0].FilePath); Assert.AreEqual("ABCD EEEE", results[0].Content); Assert.GreaterOrEqual(DateTime.UtcNow, results[0].IndexDate); CollectionAssert.AreEquivalent(new[] { "ABCD", "EEEE" }, words.Select(u => u.Word)); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(fileName))); results = indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()); words = indexBuilder.HintIndexPool.SearchWord(new MatchAllDocsQuery()); Assert.AreEqual(1, results.Length, "No Duplicate Index Created"); Assert.AreEqual(2, words.Length, "No Duplicate Index Created"); }
public void TestUpdateIndex() { using var indexBuilder = new CodeIndexBuilder("ABC", new LucenePoolLight(TempCodeIndexDir), new LucenePoolLight(TempHintIndexDir), Log); var fileName = Path.Combine(MonitorFolder, "A.txt"); File.AppendAllText(fileName, "ABCD Eeee EEEE"); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(fileName))); Assert.AreEqual("ABCD Eeee EEEE", indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()).First().Content); CollectionAssert.AreEquivalent(new[] { "ABCD", "Eeee", "EEEE" }, indexBuilder.HintIndexPool.SearchWord(new MatchAllDocsQuery()).Select(u => u.Word)); File.Delete(fileName); File.AppendAllText(fileName, "WOWO IT IS NEW CONTENT APPLY ABCD EEEE"); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.UpdateIndex(new FileInfo(fileName), CancellationToken.None)); Assert.AreEqual("WOWO IT IS NEW CONTENT APPLY ABCD EEEE", indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()).First().Content); CollectionAssert.AreEquivalent(new[] { "WOWO", "ABCD", "CONTENT", "APPLY", "EEEE" }, indexBuilder.HintIndexPool.SearchWord(new MatchAllDocsQuery()).Select(u => u.Word), "Words Been Added And Removed If Needed"); var fileName2 = Path.Combine(MonitorFolder, "B.txt"); File.AppendAllText(fileName2, "ABCD Eeee"); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(fileName2))); CollectionAssert.AreEquivalent(new[] { "WOWO", "ABCD", "CONTENT", "APPLY", "Eeee", "EEEE" }, indexBuilder.HintIndexPool.SearchWord(new MatchAllDocsQuery()).Select(u => u.Word), "Words Been Added And Removed If Needed"); File.Delete(fileName2); File.AppendAllText(fileName2, "Eeee"); CollectionAssert.AreEquivalent(new[] { "WOWO", "ABCD", "CONTENT", "APPLY", "Eeee", "EEEE" }, indexBuilder.HintIndexPool.SearchWord(new MatchAllDocsQuery()).Select(u => u.Word), "Words Been Added And Removed If Needed"); }
public void TestGetAllHintWords() { using var indexBuilder = new CodeIndexBuilder("ABC", new LucenePoolLight(TempCodeIndexDir), new LucenePoolLight(TempHintIndexDir), Log); File.AppendAllText(Path.Combine(MonitorFolder, "A.txt"), "ABCD EEEE WoWo Eeee Abcd"); File.AppendAllText(Path.Combine(MonitorFolder, "B.txt"), "Neww Content WoWo skrskrskr"); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(Path.Combine(MonitorFolder, "A.txt")))); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(Path.Combine(MonitorFolder, "B.txt")))); CollectionAssert.AreEquivalent(new[] { "ABCD", "EEEE", "WoWo", "Eeee", "Abcd", "Neww", "Content", "skrskrskr" }, indexBuilder.GetAllHintWords()); }
public void TestDeleteIndex() { using var indexBuilder = new CodeIndexBuilder("ABC", new LucenePoolLight(TempCodeIndexDir), new LucenePoolLight(TempHintIndexDir), Log); File.AppendAllText(Path.Combine(MonitorFolder, "A.txt"), "ABCD EEEE dddd"); File.AppendAllText(Path.Combine(MonitorFolder, "B.txt"), "ABCD DDDD eeEE"); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(Path.Combine(MonitorFolder, "A.txt")))); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(Path.Combine(MonitorFolder, "B.txt")))); Assert.AreEqual(2, indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()).Length); CollectionAssert.AreEquivalent(new[] { "ABCD", "EEEE", "DDDD", "dddd", "eeEE" }, indexBuilder.HintIndexPool.SearchWord(new MatchAllDocsQuery()).Select(u => u.Word)); Assert.IsTrue(indexBuilder.DeleteIndex(Path.Combine(MonitorFolder, "A.txt"))); Assert.AreEqual(1, indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()).Length); CollectionAssert.AreEquivalent(new[] { "ABCD", "DDDD", "eeEE" }, indexBuilder.HintIndexPool.SearchWord(new MatchAllDocsQuery()).Select(u => u.Word), "Words Been Removed If Needed"); }
public void TestRenameFolderIndexes() { using var indexBuilder = new CodeIndexBuilder("ABC", new LucenePoolLight(TempCodeIndexDir), new LucenePoolLight(TempHintIndexDir), Log); var oldPath = Path.Combine(MonitorFolder, "ABC"); Directory.CreateDirectory(oldPath); var newPath = Path.Combine(MonitorFolder, "EFG"); var oldFileName = Path.Combine(oldPath, "A.txt"); var newFileName = Path.Combine(newPath, "A.txt"); File.AppendAllText(oldFileName, "ABCD EEEE"); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(oldFileName))); Assert.AreEqual(oldFileName, indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()).First().FilePath); Directory.Move(oldPath, newPath); Assert.IsTrue(indexBuilder.RenameFolderIndexes(oldPath, newPath, CancellationToken.None)); Assert.AreEqual(newFileName, indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()).First().FilePath); var results = indexBuilder.CodeIndexPool.SearchCode(new PrefixQuery(indexBuilder.GetNoneTokenizeFieldTerm(nameof(CodeSource.FilePath), newPath))); Assert.AreEqual(1, results.Length); Assert.AreEqual(newFileName, results[0].FilePath); Assert.AreEqual("ABCD EEEE", results[0].Content); }
public void TestDeleteIndex_FolderDelete() { using var indexBuilder = new CodeIndexBuilder("ABC", new LucenePoolLight(TempCodeIndexDir), new LucenePoolLight(TempHintIndexDir), Log); Directory.CreateDirectory(Path.Combine(MonitorFolder, "SubDir")); File.AppendAllText(Path.Combine(MonitorFolder, "SubDir.txt"), "1234"); File.AppendAllText(Path.Combine(MonitorFolder, "SubDir", "A.txt"), "5678"); File.AppendAllText(Path.Combine(MonitorFolder, "SubDir", "B.txt"), "5678"); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(Path.Combine(MonitorFolder, "SubDir.txt")))); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(Path.Combine(MonitorFolder, "SubDir", "A.txt")))); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(Path.Combine(MonitorFolder, "SubDir", "B.txt")))); Assert.AreEqual(3, indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()).Length); Assert.IsTrue(indexBuilder.DeleteIndex(Path.Combine(MonitorFolder, "SubDir"))); var results = indexBuilder.CodeIndexPool.SearchCode(new MatchAllDocsQuery()); Assert.AreEqual(1, results.Length, "Should not delete the index of SubDir.txt"); Assert.AreEqual("SubDir.txt", results[0].FileName); }
public void TestCommit() { using var indexBuilder = new CodeIndexBuilder("ABC", new LucenePoolLight(TempCodeIndexDir), new LucenePoolLight(TempHintIndexDir), Log); File.AppendAllText(Path.Combine(MonitorFolder, "A.txt"), "ABCD EEEE"); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(Path.Combine(MonitorFolder, "A.txt")))); Assert.IsFalse(IndexBuilderHelper.IndexExists(TempCodeIndexDir)); indexBuilder.Commit(); Assert.IsTrue(IndexBuilderHelper.IndexExists(TempCodeIndexDir)); using var dir = Lucene.Net.Store.FSDirectory.Open(TempCodeIndexDir); using var reader = DirectoryReader.Open(dir); var searcher = new IndexSearcher(reader); Assert.AreEqual(1, searcher.Search(new MatchAllDocsQuery(), 1).TotalHits); }
public void TestGetCodeSourceFromDocument() { using var indexBuilder = new CodeIndexBuilder("ABC", new LucenePoolLight(TempCodeIndexDir), new LucenePoolLight(TempHintIndexDir), Log); var fileName = Path.Combine(MonitorFolder, "A.txt"); File.AppendAllText(fileName, "ABCD ABCD"); var fileInfo = new FileInfo(fileName); Thread.Sleep(1); Assert.AreEqual(IndexBuildResults.Successful, indexBuilder.CreateIndex(new FileInfo(fileName))); var codeSources = indexBuilder.CodeIndexPool.Search(new MatchAllDocsQuery(), 1).Select(CodeIndexBuilder.GetCodeSourceFromDocument).ToArray(); Assert.AreEqual(1, codeSources.Length); Assert.AreEqual(fileName, codeSources[0].FilePath); Assert.AreEqual("A.txt", codeSources[0].FileName); Assert.AreEqual("txt", codeSources[0].FileExtension); Assert.AreEqual("ABCD ABCD", codeSources[0].Content); Assert.AreNotEqual(Guid.Empty, new Guid(codeSources[0].CodePK)); Assert.AreEqual(fileInfo.LastWriteTimeUtc, codeSources[0].LastWriteTimeUtc); Assert.LessOrEqual(codeSources[0].LastWriteTimeUtc, codeSources[0].IndexDate); }