using System;
using Dominio.Autorizaciones;
namespace Tests
{
///
/// Clase para testear la clase Autorizacion
///
public sealed class TestsAutorizacion
{
#region Singleton
private TestsAutorizacion()
{
}
public static TestsAutorizacion Instancia
{
get { return new TestsAutorizacion(); }
}
#endregion Singleton
#region Factorys de Autorizaciones
private AutorizacionAutomatica MakeAutorizacionAutomatica( int codigo, DateTime fechaSolicitud,
bool aprobada, DateTime fechaRealizacion, DateTime fechaVencimiento )
{
AutorizacionAutomatica a = new AutorizacionAutomatica( fechaSolicitud );
a.Codigo = codigo;
a.Aprobada = aprobada;
a.FechaRealizacion = fechaRealizacion;
a.FechaVencimiento = fechaVencimiento;
return a;
}
private AutorizacionManual MakeAutorizacionManual( int codigo, DateTime fechaSolicitud,
DateTime fechaResolucion, bool aprobada, DateTime fechaRealizacion, DateTime fechaVencimiento )
{
AutorizacionManual a = new AutorizacionManual( fechaSolicitud );
a.Codigo = codigo;
a.Aprobada = aprobada;
a.FechaResolucion = fechaResolucion;
a.FechaRealizacion = fechaRealizacion;
a.FechaVencimiento = fechaVencimiento;
return a;
}
#endregion Factorys de Autorizaciones
#region Datos a usar durante las pruebas
private DateTime fechaSolicitud;
private DateTime fechaResolucion;
private DateTime fechaRealizacion;
private DateTime fechaVencimiento;
private bool aprobada;
#endregion Datos a usar durante las pruebas
///
/// Ejecuta todos los métodos de ésta clase cuyos nombres comiencen con "Test"
///
public void EjecutarTodos()
{
System.Reflection.MethodInfo[] metodos = typeof(TestsAutorizacion).GetMethods();
foreach ( System.Reflection.MethodInfo metodo in metodos )
{
if ( metodo.Name.Substring(0, 4) == "Test" )
metodo.Invoke( this, null );
}
}
#region Tests individuales
public void Test01_Manual_Estado()
{
bool exitoso = false;
// 30 de mayo, 17hs
DateTime fecha = new DateTime( 2005, 5, 30, 17, 0, 0 );
this.fechaSolicitud = new DateTime(2005,5,2, 11, 0, 0); //2 de mayo, 11hs
this.fechaResolucion = new DateTime(2005,5,2, 18, 0, 0); //2 de mayo, 18hs
this.aprobada = true;
this.fechaVencimiento = fechaResolucion;
this.fechaVencimiento.AddMonths( 2 );
this.fechaRealizacion = new DateTime(2005,5,16, 9, 0, 0); //16 de mayo, 9hs
AutorizacionManual am = this.MakeAutorizacionManual( 1, this.fechaSolicitud, this.fechaResolucion, this.aprobada,
this.fechaRealizacion, this.fechaVencimiento );
Autorizacion.Estado estado = am.getEstado(fecha);
exitoso = ( estado == Autorizacion.Estado.Realizada );
this.MostrarTest( System.Reflection.MethodInfo.GetCurrentMethod().Name, am, exitoso );
}
#endregion Tests individuales
#region Muestra de los tests
private void MostrarTest( string nombre, Autorizacion a, bool exito ) //, params object[] parametrosExtra )
{
string error = "ERROR - TEST NO SUPERADO";
string ok = "OK - TEST SUPERADO";
Console.WriteLine( "Test: " + nombre );
if ( exito )
Console.WriteLine( ok );
else
Console.WriteLine( error );
Console.WriteLine( a.ToString() );
//System.Reflection.ParameterInfo[] parametros = System.Reflection.MethodInfo.GetCurrentMethod().GetParameters();
//parametros[2].
}
#endregion Muestra de los tests
}
}