using System; using System.Collections.Generic; using System.Text; using NUnit.Framework; using Rhino.Mocks; namespace ScrewTurn.Wiki.SearchEngine.Tests { public class TestsBase { /// /// A general purpose mock repository, initalized dusing test fixture setup. /// private MockRepository looseMocks; /// /// Demo content for a plain-text document. /// protected const string PlainTextDocumentContent = "This is some content."; /// /// Demo content for a plain-text document. /// protected const string PlainTextDocumentContent2 = "Dummy text used for testing purposes."; /// /// Demo content for a plain-text document. /// protected const string PlainTextDocumentContent3 = "Todo."; /// /// Demo content for a plain-text document. /// protected const string PlainTextDocumentContent4 = "Content with repeated content."; /// /// The words contained in the demo content (PlainTextDocumentContent). /// protected WordInfo[] PlainTextDocumentWords = new WordInfo[] { new WordInfo("This", 0, 0, WordLocation.Content), new WordInfo("is", 5, 1, WordLocation.Content), new WordInfo("some", 8, 2, WordLocation.Content), new WordInfo("content", 13, 3, WordLocation.Content) }; /// /// The words contained in the demo content (PlainTextDocumentContent2). /// protected WordInfo[] PlainTextDocumentWords2 = new WordInfo[] { new WordInfo("Dummy", 0, 0, WordLocation.Content), new WordInfo("text", 6, 1, WordLocation.Content), new WordInfo("used", 11, 2, WordLocation.Content), new WordInfo("for", 16, 3, WordLocation.Content), new WordInfo("testing", 20, 4, WordLocation.Content), new WordInfo("purposes", 28, 5, WordLocation.Content) }; /// /// The words contained in the demo content (PlainTextDocumentContent3). /// protected WordInfo[] PlainTextDocumentWords3 = new WordInfo[] { new WordInfo("Todo", 0, 0, WordLocation.Content) }; /// /// The words contained in the demo content (PlainTextDocumentContent4). /// protected WordInfo[] PlainTextDocumentWords4 = new WordInfo[] { new WordInfo("Content", 0, 0, WordLocation.Content), new WordInfo("with", 8, 1, WordLocation.Content), new WordInfo("repeated", 13, 2, WordLocation.Content), new WordInfo("content", 22, 3, WordLocation.Content) }; [SetUp] public void SetUp() { looseMocks = new MockRepository(); } /// /// Mocks an index, inheriting from IndexBase. /// /// The index. public IInMemoryIndex MockInMemoryIndex() { InMemoryIndexBase index = looseMocks.DynamicMock(); looseMocks.Replay(index); return index; } /// /// Mocks a document with a fixed content. /// /// The name. /// The title. /// The type tag. /// The date/time. /// The mocked document. public IDocument MockDocument(string name, string title, string typeTag, DateTime dateTime) { IDocument doc = looseMocks.DynamicMock(); Expect.Call(doc.Name).Return(name).Repeat.Any(); Expect.Call(doc.ID).Return(1).Repeat.Any(); Expect.Call(doc.Title).Return(title).Repeat.Any(); Expect.Call(doc.TypeTag).Return(typeTag).Repeat.Any(); Expect.Call(doc.DateTime).Return(dateTime).Repeat.Any(); Expect.Call(doc.Tokenize(title)).Return(Tools.Tokenize(title, WordLocation.Title)).Repeat.Any(); Expect.Call(doc.Tokenize(null)).IgnoreArguments().Return(PlainTextDocumentWords).Repeat.Any(); looseMocks.Replay(doc); return doc; } /// /// Mocks a document with a fixed content. /// /// The name. /// The title. /// The type tag. /// The date/time. /// The mocked document. public IDocument MockDocument2(string name, string title, string typeTag, DateTime dateTime) { IDocument doc = looseMocks.DynamicMock(); Expect.Call(doc.Name).Return(name).Repeat.Any(); Expect.Call(doc.ID).Return(2).Repeat.Any(); Expect.Call(doc.Title).Return(title).Repeat.Any(); Expect.Call(doc.TypeTag).Return(typeTag).Repeat.Any(); Expect.Call(doc.DateTime).Return(dateTime).Repeat.Any(); Expect.Call(doc.Tokenize(title)).Return(Tools.Tokenize(title, WordLocation.Title)).Repeat.Any(); Expect.Call(doc.Tokenize(null)).IgnoreArguments().Return(PlainTextDocumentWords2).Repeat.Any(); looseMocks.Replay(doc); return doc; } /// /// Mocks a document with a fixed content. /// /// The name. /// The title. /// The type tag. /// The date/time. /// The mocked document. public IDocument MockDocument3(string name, string title, string typeTag, DateTime dateTime) { IDocument doc = looseMocks.DynamicMock(); Expect.Call(doc.Name).Return(name).Repeat.Any(); Expect.Call(doc.ID).Return(3).Repeat.Any(); Expect.Call(doc.Title).Return(title).Repeat.Any(); Expect.Call(doc.TypeTag).Return(typeTag).Repeat.Any(); Expect.Call(doc.DateTime).Return(dateTime).Repeat.Any(); Expect.Call(doc.Tokenize(title)).Return(Tools.Tokenize(title, WordLocation.Title)).Repeat.Any(); Expect.Call(doc.Tokenize(null)).IgnoreArguments().Return(PlainTextDocumentWords3).Repeat.Any(); looseMocks.Replay(doc); return doc; } /// /// Mocks a document with a fixed content. /// /// The name. /// The title. /// The type tag. /// The date/time. /// The mocked document. public IDocument MockDocument4(string name, string title, string typeTag, DateTime dateTime) { IDocument doc = looseMocks.DynamicMock(); Expect.Call(doc.Name).Return(name).Repeat.Any(); Expect.Call(doc.ID).Return(4).Repeat.Any(); Expect.Call(doc.Title).Return(title).Repeat.Any(); Expect.Call(doc.TypeTag).Return(typeTag).Repeat.Any(); Expect.Call(doc.DateTime).Return(dateTime).Repeat.Any(); Expect.Call(doc.Tokenize(title)).Return(Tools.Tokenize(title, WordLocation.Title)).Repeat.Any(); Expect.Call(doc.Tokenize(null)).IgnoreArguments().Return(PlainTextDocumentWords4).Repeat.Any(); looseMocks.Replay(doc); return doc; } public uint FreeDocumentId = 1; public uint FreeWordId = 1; public void AutoHandlerForDocumentStorage(object sender, IndexChangedEventArgs e) { List ids = new List(); if(e.ChangeData != null && e.ChangeData.Words != null) { foreach(DumpedWord w in e.ChangeData.Words) { ids.Add(new WordId(w.Text, FreeWordId)); FreeWordId++; } } e.Result = new IndexStorerResult(FreeDocumentId, ids); FreeDocumentId++; } } }