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 } }