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++;
}
}
}