/Source Code/UnitTests/Searching and Indexing/SearcherTest.vb
Visual Basic | 597 lines | 379 code | 118 blank | 100 comment | 2 complexity | 82005c39491819fb7a5d7de9db04b22c MD5 | raw file
- Imports System.Collections.Generic
- Imports Microsoft.VisualStudio.TestTools.UnitTesting
- Imports PowerSong.FastSearching
-
- ''' <summary>
- ''' This is a test class for SearcherTest and is intended
- ''' to contain all SearcherTest Unit Tests
- ''' </summary>
- <TestClass()> _
- Public Class SearcherTest
- Inherits BaseSearchTester
-
- <ClassCleanup()> _
- Public Shared Sub CleanUp()
- RemoveTemporaryFiles()
- End Sub
-
- ''' <summary>
- ''' Verifies that searching for nothing in an empty index returns no documents.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchEmptyIndexTest1()
-
- Dim Index As New Indexer
- Dim Searcher As New Searcher(Index)
- Dim Results As List(Of String) = Searcher.Search(String.Empty)
- Assert.AreEqual(0, Results.Count, "Some results were returned when they were not expected.")
-
- End Sub
-
- ''' <summary>
- ''' Verifies that searching for something in an empty index returns no documents.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchEmptyIndexTest2()
-
- Dim Index As New Indexer
- Dim Searcher As New Searcher(Index)
-
- Dim Results As List(Of String) = Searcher.Search("First")
- Assert.AreEqual(0, Results.Count, "Some results were returned when they were not expected.")
-
- Results = Searcher.Search("TWO WORDS")
- Assert.AreEqual(0, Results.Count, "Some results were returned when they were not expected.")
-
- Results = Searcher.Search("!!!")
- Assert.AreEqual(0, Results.Count, "Some results were returned when they were not expected.")
-
- End Sub
-
- ''' <summary>
- ''' Verifies that searching for nothing in a populated index returns no documents.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchPopulatedIndexTest()
-
- Dim Index As Indexer = CreateBasicIndex()
- Dim Searcher As New Searcher(Index)
- Dim Results As List(Of String) = Searcher.Search(String.Empty)
- Assert.AreEqual(0, Results.Count, "Some results were returned when they were not expected.")
-
- End Sub
-
- ''' <summary>
- ''' Verifies that searching for a word existing in the sole document in an index
- ''' returns that document.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchForSoleFileTest()
-
- Dim Index As New Indexer
- Index.AddFileContentsToIndex("SOLE_FILE", "This is the sole file in the index.")
- Dim Searcher As New Searcher(Index)
-
- For Each Terms As String In New String() {"sole", "SOLE", "index.", "the sole file", "this is the sole file in the index"}
-
- Dim Results As List(Of String) = Searcher.Search(Terms)
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned when searching for '" + Terms + "'.")
- Assert.AreEqual("SOLE_FILE", Results(0), "The file was not returned.")
-
- Next
-
- End Sub
-
- ''' <summary>
- ''' Ensures that searching a moderately sized index works, for one word existing in
- ''' a single document.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchForAFileTest()
-
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
-
- For Each Terms As String In New String() {"FIRST", "SECOND", "THIRD", "FOURTH", "FIFTH", "SIXTH", "SEVENTH", "ONE"}
- Dim Results As List(Of String) = Searcher.Search(Terms)
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned when searching for '" + Terms + "'.")
- Next
-
- Assert.AreEqual("A", Searcher.Search("FIRST")(0), "The file was not returned.")
- Assert.AreEqual("B", Searcher.Search("SECOND")(0), "The file was not returned.")
- Assert.AreEqual("C", Searcher.Search("THIRD")(0), "The file was not returned.")
- Assert.AreEqual("D", Searcher.Search("FOURTH")(0), "The file was not returned.")
- Assert.AreEqual("E", Searcher.Search("FIFTH")(0), "The file was not returned.")
- Assert.AreEqual("F", Searcher.Search("SIXTH")(0), "The file was not returned.")
- Assert.AreEqual("G", Searcher.Search("SEVENTH")(0), "The file was not returned.")
- Assert.AreEqual("D", Searcher.Search("ONE")(0), "The file was not returned.")
-
- End Sub
-
- ''' <summary>
- ''' Ensures that searching a moderately sized index works, for one word existing in
- ''' multiple documents.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchForMultipleFilesTest()
-
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
-
- Dim Results As List(Of String) = Searcher.Search("ONE")
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned.")
- Assert.AreEqual("D", Results(0), "An unexpected file was returned.")
-
- Results = Searcher.Search("two")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("D"), Results(0), "An unexpected file was returned.")
-
- Results = Searcher.Search(" three")
- Assert.AreEqual(3, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("D"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("G"), "An unexpected file was returned.")
-
- Results = Searcher.Search(" four ")
- Assert.AreEqual(4, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("C"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("D"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("E"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("F"), "An unexpected file was returned.")
-
- Results = Searcher.Search("five")
- Assert.AreEqual(5, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("C"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("D"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("E"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("F"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("G"), "An unexpected file was returned.")
-
- Results = Searcher.Search("SIX")
- Assert.AreEqual(6, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("B"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("C"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("D"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("E"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("F"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("G"), "An unexpected file was returned.")
-
- Results = Searcher.Search("all")
- Assert.AreEqual(7, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("B"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("C"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("D"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("E"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("F"), "An unexpected file was returned.")
- Assert.IsTrue(Results.Contains("G"), "An unexpected file was returned.")
-
- End Sub
-
- ''' <summary>
- ''' Ensures that searching a moderately sized index works, for multiple words existing
- ''' in a single document.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchMultipleWordsSingleDocumentTest()
-
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
-
- Dim Results As List(Of String) = Searcher.Search("ONE")
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned.")
- Assert.AreEqual("D", Results(0), "An unexpected file was returned.")
-
- Results = Searcher.Search("ONE ONE ONE ONE")
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned.")
- Assert.AreEqual("D", Results(0), "An unexpected file was returned.")
-
- Results = Searcher.Search("ONE fourth")
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned.")
- Assert.AreEqual("D", Results(0), "An unexpected file was returned.")
-
- End Sub
-
- ''' <summary>
- ''' Ensures that searching a moderately sized index works, for multiple words existing
- ''' in multiple documents. (This involves various scenarios and is the most complex test)
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchMultipleWordsMultipleDocumentsTest()
-
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
-
- Dim Results As List(Of String) = Searcher.Search("ONE two")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("D"), "An expected file was not returned.")
-
- Results = Searcher.Search("three two")
- Assert.AreEqual(3, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("D"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("G"), "An expected file was not returned.")
-
- Results = Searcher.Search("first second")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("B"), "An expected file was not returned.")
-
- Results = Searcher.Search("third seventh")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("C"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("G"), "An expected file was not returned.")
-
- Results = Searcher.Search("second two")
- Assert.AreEqual(3, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("B"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("D"), "An expected file was not returned.")
-
- Results = Searcher.Search("all one two three")
- Assert.AreEqual(7, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("B"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("C"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("D"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("E"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("F"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("G"), "An expected file was not returned.")
-
- Results = Searcher.Search("this is the first file")
- Assert.AreEqual(7, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("B"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("C"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("D"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("E"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("F"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("G"), "An expected file was not returned.")
-
- End Sub
-
- ''' <summary>
- ''' Ensures that searching a moderately sized index works, for multiple words
- ''' existing in all documents.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchMultipleWordsAllDocumentsTest()
-
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
-
- Dim Results As List(Of String) = Searcher.Search("this all two three second")
- Assert.AreEqual(7, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("B"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("C"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("D"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("E"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("F"), "An expected file was not returned.")
- Assert.IsTrue(Results.Contains("G"), "An expected file was not returned.")
-
- End Sub
-
- ''' <summary>
- ''' Ensures that searching a moderately sized index works, for all words not
- ''' existing in any documents.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchWordsNotInAnyDocumentsTest()
-
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
- Dim Results As List(Of String) = Searcher.Search("hooligans manchester welsh english")
- Assert.AreEqual(0, Results.Count, "Incorrect number of documents returned.")
-
- End Sub
-
- ''' <summary>
- ''' Check that the correct order of documents is returned when searching a moderately sized index.
- ''' </summary>
- <TestMethod()> _
- Public Sub ConfirmDocumentOrderTest()
-
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
-
- Dim Results As List(Of String) = Searcher.Search("ONE")
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned.")
- Assert.AreEqual("D", Results(0), "Incorrect document or document order.")
-
- Results = Searcher.Search("TWO")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.AreEqual("D", Results(0), "Incorrect document or document order.")
- Assert.AreEqual("A", Results(1), "Incorrect document or document order.")
-
- Results = Searcher.Search("TWO ONE")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.AreEqual("D", Results(0), "Incorrect document or document order.")
- Assert.AreEqual("A", Results(1), "Incorrect document or document order.")
-
- Results = Searcher.Search("TWO forceTop")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.AreEqual("A", Results(0), "Incorrect document or document order.")
- Assert.AreEqual("D", Results(1), "Incorrect document or document order.")
-
- Results = Searcher.Search("ALL SIX FIVE FOUR THREE TWO ONE")
- Assert.AreEqual(7, Results.Count, "Incorrect number of documents returned.")
- Assert.AreEqual("D", Results(0), "Incorrect document or document order.")
- Assert.AreEqual("A", Results(1), "Incorrect document or document order.")
- Assert.AreEqual("G", Results(2), "Incorrect document or document order.")
- Assert.AreEqual("F", Results(3), "Incorrect document or document order.")
- Assert.AreEqual("E", Results(4), "Incorrect document or document order.")
- Assert.AreEqual("C", Results(5), "Incorrect document or document order.")
- Assert.AreEqual("B", Results(6), "Incorrect document or document order.")
-
- End Sub
-
- ''' <summary>
- ''' Confirm searching works as expected after clearing the index.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchClearedIndexTest()
-
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
-
- Dim Results As List(Of String) = Searcher.Search("ALL")
- Assert.AreEqual(7, Results.Count, "Incorrect number of documents returned.")
-
- Index.Clear()
-
- Assert.AreEqual(0, Searcher.Search("ALL").Count, "Documents were returned.")
-
- End Sub
-
- ''' <summary>
- ''' Confirm searching works as expected after adding documents.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchAfterAddingDocumentsTest()
-
- ' Create a searcher
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
-
- ' Perform a simple search
- Dim Results As List(Of String) = Searcher.Search("TWO EIGHT")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("D"), "Expected document was not returned.")
-
- ' Add a document with unique word "EIGHT"
- Index.AddFileContentsToIndex("NEW1", "additional file EIGHT")
-
- ' Confirm the new document can be returned by itself
- Results = Searcher.Search("EIGHT")
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("NEW1"), "Expected document was not returned.")
-
- ' Confirm the new document can be returned along with other documents
- Results = Searcher.Search("TWO EIGHT")
- Assert.AreEqual(3, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("D"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("NEW1"), "Expected document was not returned.")
-
- ' Confirm all documents can be returned, including the new one
- Results = Searcher.Search("ALL EIGHT")
- Assert.AreEqual(8, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("B"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("C"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("D"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("E"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("F"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("G"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("NEW1"), "Expected document was not returned.")
-
- ' Confirm only old documents can be returned
- Results = Searcher.Search("TWO")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("D"), "Expected document was not returned.")
-
- ' Add another file, this time with a word that already exists in other documents
- Index.AddFileContentsToIndex("NEW2", "YET MORE: TWO")
-
- ' Confirm that searching for a word in old and new documents returns the correct results
- Results = Searcher.Search("TWO")
- Assert.AreEqual(3, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("D"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("NEW2"), "Expected document was not returned.")
-
- ' Confirm that all documents can be returned
- Results = Searcher.Search("ALL EIGHT TWO")
- Assert.AreEqual(9, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("B"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("C"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("D"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("E"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("F"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("G"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("NEW1"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("NEW2"), "Expected document was not returned.")
-
- End Sub
-
- ''' <summary>
- ''' A simple test for proving no documents get returned when an index is emptied by
- ''' removing existing document(s).
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchEmptiedIndexTest()
-
- ' Create an index with one document
- Dim Index As New Indexer
- Index.AddFileContentsToIndex("A", "File contents go here.")
-
- ' Search for the document
- Dim Searcher As New Searcher(Index)
- Dim Results As List(Of String) = Searcher.Search("contents")
- Assert.AreEqual(1, Results.Count, "No documents returned when one was expected.")
- Assert.AreEqual("A", Results(0), "Incorrect document returned.")
-
- ' Remove the document
- Index.RemoveDocumentFromIndex("A")
-
- ' The same search should no longer work
- Results = Searcher.Search("contents")
- Assert.AreEqual(0, Results.Count, "One or more documents were returned.")
-
- End Sub
-
- ''' <summary>
- ''' The simpler version of SearchAterRemovingDocumentsTest2.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchAterRemovingDocumentsTest1()
-
- ' Create an index with one document
- Dim Index As New Indexer
- Index.AddFileContentsToIndex("A", "File contents go here.")
- Index.AddFileContentsToIndex("B", "File contents go here.")
-
- ' Search for the document
- Dim Searcher As New Searcher(Index)
- Dim Results As List(Of String) = Searcher.Search("contents")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Document not returned as expected.")
- Assert.IsTrue(Results.Contains("B"), "Document not returned as expected.")
-
- ' Remove a document, and prove only one gets returned now
- Index.RemoveDocumentFromIndex("B")
- Results = Searcher.Search("contents")
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Document not returned as expected.")
-
- ' Remove a document, and prove only one gets returned now
- Index.RemoveDocumentFromIndex("A")
- Results = Searcher.Search("contents")
- Assert.AreEqual(0, Results.Count, "One or more documents were returned.")
-
- End Sub
-
- ''' <summary>
- ''' Confirm searching works as expected after removing documents.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchAterRemovingDocumentsTest2()
-
- ' Create a searcher
- Dim Index As Indexer = CreateModerateIndex()
- Dim Searcher As New Searcher(Index)
-
- ' Perform a simple search
- Dim Results As List(Of String) = Searcher.Search("TWO")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("D"), "Expected document was not returned.")
-
- ' Remove a document
- Index.RemoveDocumentFromIndex("D")
-
- ' Confirm the same search returns only one document
- Results = Searcher.Search("TWO")
- Assert.AreEqual(1, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Expected document was not returned.")
-
- ' Confirm searching for all documents returns everything except the removed document
- Results = Searcher.Search("ALL")
- Assert.AreEqual(6, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("B"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("C"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("E"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("F"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("G"), "Expected document was not returned.")
-
- ' Remove some more documents
- Index.RemoveDocumentFromIndex("G")
- Index.RemoveDocumentFromIndex("A")
-
- ' Confirm previously valid terms no longer return documents
- Results = Searcher.Search("TWO")
- Assert.AreEqual(0, Results.Count, "Incorrect number of documents returned.")
-
- ' Get all remaining documents
- Results = Searcher.Search("ALL documents including ONE TWO THREE FOUR FIVE SIX")
- Assert.AreEqual(4, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("B"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("C"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("E"), "Expected document was not returned.")
- Assert.IsTrue(Results.Contains("F"), "Expected document was not returned.")
-
- End Sub
-
- ''' <summary>
- ''' Confirm searching works as expected after both adding and removing documents.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearchAterAddingAndRemovingDocumentsTest()
-
- ' Create an index
- Dim Index As Indexer = CreateModerateIndex()
-
- ' Remove two documents
- Index.RemoveDocumentFromIndex("B")
- Index.RemoveDocumentFromIndex("D")
-
- ' Add a document
- Index.AddFileContentsToIndex("X", "XXX YYY ZZZ ALL")
-
- ' Save and load the index again
- Dim FileName As String = GetTemporaryFileName()
- Index.Save(FileName)
- Index = Indexer.LoadIndex(FileName)
-
- ' Perform some quick checks
- Assert.AreEqual(6, Index.DocumentCount, "Incorrect number of documents indexed.")
- Assert.AreEqual("A", Index.DocumentName(0), "Document not indexed properly.")
- Assert.AreEqual("C", Index.DocumentName(2), "Document not indexed properly.")
- Assert.AreEqual("E", Index.DocumentName(4), "Document not indexed properly.")
- Assert.AreEqual("F", Index.DocumentName(5), "Document not indexed properly.")
- Assert.AreEqual("G", Index.DocumentName(6), "Document not indexed properly.")
- Assert.AreEqual("X", Index.DocumentName(7), "Document not indexed properly.")
-
- ' Perform some searches
- Dim Searcher As New Searcher(Index)
- Assert.AreEqual("X", Searcher.Search("XXX")(0))
- Assert.AreEqual("X", Searcher.Search("YYY")(0))
- Assert.AreEqual("X", Searcher.Search("ZZZ")(0))
- Assert.AreEqual("X", Searcher.Search("XXX YYY ZZZ")(0))
- Assert.AreEqual("X", Searcher.Search("ZZZ")(0))
-
- ' Get all documents and check that they are all returned
- Dim Results As List(Of String) = Searcher.Search("ALL")
- Assert.AreEqual(6, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Result does not contain expected document.")
- Assert.IsTrue(Results.Contains("C"), "Result does not contain expected document.")
- Assert.IsTrue(Results.Contains("E"), "Result does not contain expected document.")
- Assert.IsTrue(Results.Contains("F"), "Result does not contain expected document.")
- Assert.IsTrue(Results.Contains("G"), "Result does not contain expected document.")
- Assert.IsTrue(Results.Contains("X"), "Result does not contain expected document.")
-
- ' Also, confirm that it is possible to not get the document
- Results = Searcher.Search("THREE")
- Assert.AreEqual(2, Results.Count, "Incorrect number of documents returned.")
- Assert.IsTrue(Results.Contains("A"), "Result does not contain expected document.")
- Assert.IsTrue(Results.Contains("G"), "Result does not contain expected document.")
-
- End Sub
-
- ''' <summary>
- ''' A test for Searcher Constructor.
- ''' </summary>
- <TestMethod()> _
- Public Sub SearcherConstructorTest()
- Dim Index As New Indexer
- Dim Search As Searcher = New Searcher(Index)
- End Sub
-
- End Class