using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
namespace ScientificDistance.Unit_Tests
{
///
/// Generate report rows for various people in the database
/// See the following files for more details on where this data comes from:
/// http://stellman-greene.com/ScientificDistance/Steps%20for%20generating%20Scientific%20Distance%20test%20data.doc
/// http://stellman-greene.com/ScientificDistance/Scientific%20Distance%20unit%20test%20data.xls
///
[TestFixture]
public class ReportRowTests
{
[TestFixtureSetUp]
public void RebuildDatabase()
{
TestDatabase.Rebuild();
}
[Test]
public void HowardOConnor()
{
string expectedRow = "X0000001,2000-2005,X0000002,2000-2005,37,52,59,119,15,25";
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), "X0000001", "2000-2005", null);
Publications oconnorPublications = new Publications(new Database(TestDatabase.DSN), "X0000002", "2000-2005", null);
string actualRow = Overlap.GenerateOverlapReportRow(howardPublications, oconnorPublications);
Assert.AreEqual(expectedRow, actualRow);
}
[Test]
public void HeijerickNordstrom()
{
string expectedRow = "X0000003,2002,X0000004,1992-1997,30,39,46,64,4,4";
Publications heijerickPublications = new Publications(new Database(TestDatabase.DSN), "X0000003", "2002", null);
Publications nordstromPublications = new Publications(new Database(TestDatabase.DSN), "X0000004", "1992-1997", null);
string actualRow = Overlap.GenerateOverlapReportRow(heijerickPublications, nordstromPublications);
Assert.AreEqual(expectedRow, actualRow);
}
[Test]
public void HowardNordstrom()
{
string expectedRow = "X0000001,,X0000004,,106,217,72,116,1,1";
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), "X0000001", "", null);
Publications nordstromPublications = new Publications(new Database(TestDatabase.DSN), "X0000004", "", null);
string actualRow = Overlap.GenerateOverlapReportRow(howardPublications, nordstromPublications);
Assert.AreEqual(expectedRow, actualRow);
}
[Test]
public void EmptyPublications()
{
string expectedRow = "X0000002,1999,X0000003,2001,0,0,0,0,0,0";
Publications oconnorPublications = new Publications(new Database(TestDatabase.DSN), "X0000002", "1999", null);
Publications heijerickPublications = new Publications(new Database(TestDatabase.DSN), "X0000003", "2001", null);
string actualRow = Overlap.GenerateOverlapReportRow(oconnorPublications, heijerickPublications);
Assert.AreEqual(expectedRow, actualRow);
}
[Test]
public void ExcludedSomePublications()
{
// Here's the expected row for X0000003,2002,X0000004,1992-1997
string expectedRow = "X0000003,2002,X0000004,,30,39,46,64,4,4";
// We'll do all of X0000004, and remove the four publications outside of the range,
// so here are the PMIDs of the publications outside of the range.
List pmidsToExclude = new List() { 9713684, 11340600, 11564905, 12775905 };
Publications heijerickPublications = new Publications(new Database(TestDatabase.DSN), "X0000003", "2002", null);
Publications nordstromPublications = new Publications(new Database(TestDatabase.DSN), "X0000004", "", pmidsToExclude);
string actualRow = Overlap.GenerateOverlapReportRow(heijerickPublications, nordstromPublications);
Assert.AreEqual(expectedRow, actualRow);
}
[Test]
public void ExcludedAllPublications()
{
// Here's the expected row for Howard and O'Connor
string expectedRow = "X0000001,2000-2005,X0000002,2000-2005,0,0,0,0,0,0";
List pmidsToExcludeForHoward = new List() { 1620193, 2626221, 2661289, 3158849,
6446858, 6539643, 7432734, 7565486, 8818166, 9134263, 9368207, 10624722, 11707907, 12597089, 16173671 };
List pmidsToExcludeForOConnor = new List() { 7789203, 10902695, 11099113, 14531577,
14531585, 15055374, 15324991, 15901223, 16402868, 16671933, 17459175, 17492950, 17634075, 18049295 };
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), "X0000001", "2000-2005", pmidsToExcludeForHoward);
Publications oconnorPublications = new Publications(new Database(TestDatabase.DSN), "X0000002", "2000-2005", pmidsToExcludeForOConnor);
string actualRow = Overlap.GenerateOverlapReportRow(howardPublications, oconnorPublications);
Assert.AreEqual(expectedRow, actualRow);
}
[Test]
public void MissingSetnb()
{
string expectedRow = "X0000003,2002,Z1234567,,30,39,0,0,0,0";
Publications oconnorPublications = new Publications(new Database(TestDatabase.DSN), "X0000003", "2002", null);
Publications emptyPublications = new Publications(new Database(TestDatabase.DSN), "Z1234567", "", null);
string actualRow = Overlap.GenerateOverlapReportRow(oconnorPublications, emptyPublications);
Assert.AreEqual(expectedRow, actualRow);
expectedRow = "Z1234567,,X0000003,2002,0,0,30,39,0,0";
actualRow = Overlap.GenerateOverlapReportRow(emptyPublications, oconnorPublications);
Assert.AreEqual(expectedRow, actualRow);
}
[Test]
public void NullPublications()
{
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), "X0000001", "", null);
try
{
string result = Overlap.GenerateOverlapReportRow(howardPublications, null);
Assert.Fail("Null Publication parameter should throw an error");
}
catch (Exception ex)
{
Assert.IsTrue(ex is ArgumentNullException);
}
try
{
string result = Overlap.GenerateOverlapReportRow(null, howardPublications);
Assert.Fail("Null Publication parameter should throw an error");
}
catch (Exception ex)
{
Assert.IsTrue(ex is ArgumentNullException);
}
}
[Test]
public void InvalidWindows()
{
try
{
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), "X0000001", null, null);
Assert.Fail("Null window parameter should throw an error");
}
catch (Exception ex)
{
Assert.IsTrue(ex is ArgumentNullException);
}
try
{
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), "X0000001", "beer", null);
Assert.Fail("Invalid window parameter should throw an error");
}
catch (Exception ex)
{
Assert.IsTrue(ex is ArgumentException);
}
try
{
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), "X0000001", "2005-1992", null);
Assert.Fail("End date before start date should throw an error");
}
catch (Exception ex)
{
Assert.IsTrue(ex is ArgumentException);
}
try
{
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), "X0000001", "wrench-1992", null);
Assert.Fail("Invalid start date should throw an error");
}
catch (Exception ex)
{
Assert.IsTrue(ex is ArgumentException);
}
try
{
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), "X0000001", "1992-wallet", null);
Assert.Fail("Invalid end date should throw an error");
}
catch (Exception ex)
{
Assert.IsTrue(ex is ArgumentException);
}
}
[Test]
public void NullSetnb()
{
try
{
Publications howardPublications = new Publications(new Database(TestDatabase.DSN), null, "", null);
Assert.Fail("Null window parameter should throw an error");
}
catch (Exception ex)
{
Assert.IsTrue(ex is ArgumentNullException);
}
}
}
}