screwturn-4/SearchEngine-Tests/SearchResultCollectionTests.cs
2009-09-30 13:47:13 +00:00

287 lines
9.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
namespace ScrewTurn.Wiki.SearchEngine.Tests {
[TestFixture]
public class SearchResultCollectionTests : TestsBase {
[Test]
public void Constructor_NoCapacity() {
SearchResultCollection collection = new SearchResultCollection();
Assert.AreEqual(0, collection.Count, "Wrong count (collection should be empty)");
}
[Test]
public void Constructor_WithCapacity() {
SearchResultCollection collection = new SearchResultCollection(15);
Assert.AreEqual(0, collection.Count, "Wrong count (collection should be empty)");
Assert.AreEqual(15, collection.Capacity, "Wrong capacity");
}
[Test]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void Constructor_InvalidCapacity() {
SearchResultCollection collection = new SearchResultCollection(0);
}
[Test]
public void AddAndCount() {
SearchResultCollection collection = new SearchResultCollection();
Assert.AreEqual(0, collection.Count);
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
SearchResult res2 = new SearchResult(MockDocument("d2", "d", "d", DateTime.Now));
collection.Add(res);
collection.Add(res2);
Assert.AreEqual(2, collection.Count, "Wrong count (collection should contain 2 items)");
Assert.AreEqual(res, collection[0], "Wrong item at index 0");
Assert.AreEqual(res2, collection[1], "Wrong item at index 1");
}
[Test]
[ExpectedException(typeof(ArgumentNullException))]
public void Add_NullItem() {
SearchResultCollection collection = new SearchResultCollection();
collection.Add(null);
}
[Test]
[ExpectedException(typeof(ArgumentException))]
public void Add_DuplicateItem() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
SearchResult res2 = new SearchResult(MockDocument("d2", "d", "d", DateTime.Now));
collection.Add(res);
collection.Add(res2);
collection.Add(res);
}
[Test]
public void Clear() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
collection.Add(res);
Assert.AreEqual(1, collection.Count, "Wrong count (collection should contain 1 item)");
collection.Clear();
Assert.AreEqual(0, collection.Count, "Wrong count (collection should be empty)");
}
[Test]
public void Contains() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
SearchResult res2 = new SearchResult(MockDocument("d2", "d", "d", DateTime.Now));
collection.Add(res);
Assert.IsTrue(collection.Contains(res), "Collection should contain item");
Assert.IsFalse(collection.Contains(res2), "Collection should not contain item");
Assert.IsFalse(collection.Contains(null), "Contains should return false");
}
[Test]
public void GetSearchResult() {
SearchResultCollection collection = new SearchResultCollection();
IDocument doc1 = MockDocument("d", "d", "d", DateTime.Now);
IDocument doc2 = MockDocument("d2", "d", "d", DateTime.Now);
IDocument doc3 = MockDocument("d3", "d", "d", DateTime.Now);
SearchResult res = new SearchResult(doc1);
SearchResult res2 = new SearchResult(doc2);
collection.Add(res);
collection.Add(res2);
Assert.AreEqual(res, collection.GetSearchResult(doc1), "Wrong search result object");
Assert.IsNull(collection.GetSearchResult(doc3), "GetSearchResult should return null");
}
[Test]
[ExpectedException(typeof(ArgumentNullException))]
public void GetSearchResult_NullDocument() {
SearchResultCollection collection = new SearchResultCollection();
collection.GetSearchResult(null);
}
[Test]
public void CopyTo() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
SearchResult res2 = new SearchResult(MockDocument("d2", "d", "d", DateTime.Now));
collection.Add(res);
collection.Add(res2);
SearchResult[] results = new SearchResult[2];
collection.CopyTo(results, 0);
Assert.AreEqual(res, results[0], "Wrong result item");
Assert.AreEqual(res2, results[1], "Wrong result item");
results = new SearchResult[3];
collection.CopyTo(results, 0);
Assert.AreEqual(res, results[0], "Wrong result item");
Assert.AreEqual(res2, results[1], "Wrong result item");
Assert.IsNull(results[2], "Non-null item");
results = new SearchResult[3];
collection.CopyTo(results, 1);
Assert.IsNull(results[0], "Non-null item");
Assert.AreEqual(res, results[1], "Wrong result item");
Assert.AreEqual(res2, results[2], "Wrong result item");
}
[Test]
[ExpectedException(typeof(ArgumentNullException))]
public void CopyTo_NullArray() {
SearchResultCollection collection = new SearchResultCollection();
collection.CopyTo(null, 0);
}
[Test]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void CopyTo_InvalidIndex_Negative() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult[] results = new SearchResult[10];
collection.CopyTo(results, -1);
}
[Test]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void CopyTo_InvalidIndex_TooBig() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult[] results = new SearchResult[10];
collection.CopyTo(results, 10);
}
[Test]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void CopyTo_ArrayTooSmall() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
SearchResult res2 = new SearchResult(MockDocument("d2", "d", "d", DateTime.Now));
collection.Add(res);
collection.Add(res2);
SearchResult[] results = new SearchResult[1];
collection.CopyTo(results, 0);
}
[Test]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void CopyTo_NoSpaceAtIndex() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
SearchResult res2 = new SearchResult(MockDocument("d2", "d", "d", DateTime.Now));
collection.Add(res);
collection.Add(res2);
SearchResult[] results = new SearchResult[2];
collection.CopyTo(results, 1);
}
[Test]
public void ReadOnly() {
SearchResultCollection collection = new SearchResultCollection();
Assert.IsFalse(collection.IsReadOnly);
}
[Test]
public void Remove() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
SearchResult res2 = new SearchResult(MockDocument("d2", "d", "d", DateTime.Now));
SearchResult res3 = new SearchResult(MockDocument("d3", "d", "d", DateTime.Now));
collection.Add(res);
collection.Add(res2);
Assert.IsTrue(collection.Remove(res), "Remove should return true");
Assert.IsFalse(collection.Remove(res3), "Remove should return false");
Assert.AreEqual(1, collection.Count, "Wrong count");
Assert.AreEqual(res2, collection[0], "Wrong item at index 0");
}
[Test]
[ExpectedException(typeof(ArgumentNullException))]
public void Remove_NullItem() {
SearchResultCollection collection = new SearchResultCollection();
collection.Remove(null);
}
[Test]
public void GetEnumerator() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
SearchResult res2 = new SearchResult(MockDocument("d2", "d", "d", DateTime.Now));
collection.Add(res);
collection.Add(res2);
int count = 0;
foreach(SearchResult r in collection) {
count++;
}
Assert.AreEqual(2, count, "Wrong count - enumerator does not work");
}
[Test]
public void Indexer() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult res = new SearchResult(MockDocument("d", "d", "d", DateTime.Now));
SearchResult res2 = new SearchResult(MockDocument("d2", "d", "d", DateTime.Now));
collection.Add(res);
collection.Add(res2);
Assert.AreEqual(res, collection[0], "Wrong item");
Assert.AreEqual(res2, collection[1], "Wrong item");
}
[Test]
[ExpectedException(typeof(IndexOutOfRangeException))]
public void Indexer_InvalidIndex_Negative() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult i = collection[-1];
}
[Test]
[ExpectedException(typeof(IndexOutOfRangeException))]
public void Indexer_InvalidIndex_TooBig() {
SearchResultCollection collection = new SearchResultCollection();
SearchResult i = collection[1];
}
}
}