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 = this.fechaResolucion.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,
fecha, estado);
}
public void Test02_Manual_Estado()
{
bool exitoso = false;
// 1 de mayo, 17hs
DateTime fecha = new DateTime( 2005, 5, 1, 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 = this.fechaResolucion.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.Inexistente ); //Determinación del resultado
this.MostrarTest( System.Reflection.MethodInfo.GetCurrentMethod().Name, am, exitoso,
fecha, estado);
}
public void Test03_Manual_Estado()
{
bool exitoso = false;
// 2 de mayo, 17hs
DateTime fecha = new DateTime( 2005, 5, 2, 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 = this.fechaResolucion.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.Pendiente ); //Determinación del resultado
this.MostrarTest( System.Reflection.MethodInfo.GetCurrentMethod().Name, am, exitoso,
fecha, estado);
}
public void Test04_Manual_Estado()
{
bool exitoso = false;
// 10 de diciembre, 17hs
DateTime fecha = new DateTime( 2005, 12, 10, 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 = this.fechaResolucion.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 ); //Determinación del resultado
this.MostrarTest( System.Reflection.MethodInfo.GetCurrentMethod().Name, am, exitoso,
fecha, estado);
}
public void Test05_Manual_Estado()
{
bool exitoso = false;
// 10 de diciembre, 17hs
DateTime fecha = new DateTime( 2005, 12, 10, 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 = this.fechaResolucion.AddMonths( 2 );
//this.fechaRealizacion = new DateTime(2005,5,16, 9, 0, 0); //No realizada
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 ); //Determinación del resultado
this.MostrarTest( System.Reflection.MethodInfo.GetCurrentMethod().Name, am, exitoso,
fecha, estado);
}
#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.Write( a.ToString() );
foreach ( object o in parametrosExtra )
{
Console.WriteLine( o.ToString() );
}
Console.WriteLine();
}
#endregion Muestra de los tests
}
}