#region License
/**
* Ingenious MVC : An MVC framework for .NET 2.0
* Copyright (C) 2006, JDP Group
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Authors: - Kent Boogaart (kentcb@internode.on.net)
*/
#endregion
using System;
using System.IO;
using System.Reflection;
using System.Resources;
using System.Xml;
using NUnit.Framework;
using Ingenious.Mvc;
namespace Ingenious.Mvc.UnitTest{
/// <summary>
/// A base class for unit tests.
/// </summary>
[TestFixture]
public abstract class UnitTestBase
{
private ResourceManager _resourceManager;
private TaskManager _taskManager;
/// <summary>
/// Gets a <see cref="TaskManager"/> that can be used by the unit test. This is recreated for every individual test.
/// </summary>
protected TaskManager TaskManager
{
get
{
return _taskManager;
}
}
protected UnitTestBase()
{
_resourceManager = new ResourceManager(GetType());
}
[SetUp]
protected void DoSetUp()
{
_taskManager = new TaskManager();
//setup in the base class - nunit doesn't support [SetUp] at multiple levels of the inheritance hierarchy
SetUp();
}
/// <summary>
/// Can be overridden in base classes to perform setup operations.
/// </summary>
protected virtual void SetUp()
{
}
[TearDown]
protected void DoTearDown()
{
TearDown();
}
/// <summary>
/// Can be overridden in base classes to perform tear down operations.
/// </summary>
protected virtual void TearDown()
{
}
/// <summary>
/// Gets a resource for the unit test as a <c>string</c>.
/// </summary>
protected string GetResourceAsString(string resourceName)
{
string retVal = _resourceManager.GetString(resourceName);
if (retVal == null)
{
throw new NullReferenceException(string.Format("No resource called '{0}' was found for type '{1}'.", resourceName, GetType()));
}
return retVal;
}
/// <summary>
/// Gets a resource for the unit test as a <c>Stream</c>.
/// </summary>
protected Stream GetResourceAsStream(string resourceName)
{
string resource = GetResourceAsString(resourceName);
byte[] resourceBytes = System.Text.Encoding.Default.GetBytes(resource);
return new MemoryStream(resourceBytes);
}
/// <summary>
/// Gets a resource for the unit test as an <c>XmlNode</c>.
/// </summary>
protected XmlNode GetResourceAsXml(string resourceName)
{
string resource = GetResourceAsString(resourceName);
XmlDocument retVal = new XmlDocument();
retVal.LoadXml(resource);
if (retVal.ChildNodes.Count == 1)
{
return retVal.ChildNodes[0];
}
else
{
return retVal;
}
}
/// <summary>
/// Configures the <see cref="TaskManager"/> with the specified resource.
/// </summary>
protected void Configure(string resourceName)
{
Ingenious.Mvc.Configuration.Configurators.XmlConfigurator.Configure(_taskManager, GetResourceAsXml(resourceName));
}
/// <summary>
/// Creates a <see cref="Task"/> instance.
/// </summary>
protected Task CreateTask()
{
return CreateTask(Guid.NewGuid().ToString());
}
/// <summary>
/// Creates a <see cref="Task"/> instance.
/// </summary>
protected Task CreateTask(Id<Task> taskId)
{
return CreateTask(taskId, null);
}
/// <summary>
/// Creates a <see cref="Task"/> instance.
/// </summary>
protected Task CreateTask(object data)
{
return CreateTask(Guid.NewGuid().ToString(), data);
}
/// <summary>
/// Creates a <see cref="Task"/> instance.
/// </summary>
protected Task CreateTask(Id<Task> taskId, object data)
{
return Ingenious.Mvc.Factories.DefaultTaskFactory.Instance.Create(TaskManager.ActiveTask, taskId, TaskManager, data);
}
}
}
|