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 /// /// 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 ); DateTime fechaSolicitud = new DateTime(2005,5,2, 11, 0, 0); //2 de mayo, 11hs DateTime fechaResolucion = new DateTime(2005,5,2, 18, 0, 0); //2 de mayo, 18hs bool aprobada = true; DateTime fechaVencimiento = fechaResolucion.AddMonths( 2 ); DateTime fechaRealizacion = new DateTime(2005,5,16, 9, 0, 0); //16 de mayo, 9hs AutorizacionManual am = MakeAutorizacionManual( 1, fechaSolicitud, fechaResolucion, aprobada, fechaRealizacion, 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 ); DateTime fechaSolicitud = new DateTime(2005,5,2, 11, 0, 0); //2 de mayo, 11hs DateTime fechaResolucion = new DateTime(2005,5,2, 18, 0, 0); //2 de mayo, 18hs bool aprobada = true; DateTime fechaVencimiento = fechaResolucion.AddMonths( 2 ); DateTime fechaRealizacion = new DateTime(2005,5,16, 9, 0, 0); //16 de mayo, 9hs AutorizacionManual am = MakeAutorizacionManual( 1, fechaSolicitud, fechaResolucion, aprobada, fechaRealizacion, 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 ); DateTime fechaSolicitud = new DateTime(2005,5,2, 11, 0, 0); //2 de mayo, 11hs DateTime fechaResolucion = new DateTime(2005,5,2, 18, 0, 0); //2 de mayo, 18hs bool aprobada = true; DateTime fechaVencimiento = fechaResolucion.AddMonths( 2 ); DateTime fechaRealizacion = new DateTime(2005,5,16, 9, 0, 0); //16 de mayo, 9hs AutorizacionManual am = MakeAutorizacionManual( 1, fechaSolicitud, fechaResolucion, aprobada, fechaRealizacion, 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 ); DateTime fechaSolicitud = new DateTime(2005,5,2, 11, 0, 0); //2 de mayo, 11hs DateTime fechaResolucion = new DateTime(2005,5,2, 18, 0, 0); //2 de mayo, 18hs bool aprobada = true; DateTime fechaVencimiento = fechaResolucion.AddMonths( 2 ); DateTime fechaRealizacion = new DateTime(2005,5,16, 9, 0, 0); //16 de mayo, 9hs AutorizacionManual am = MakeAutorizacionManual( 1, fechaSolicitud, fechaResolucion, aprobada, fechaRealizacion, 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 ); DateTime fechaSolicitud = new DateTime(2005,5,2, 11, 0, 0); //2 de mayo, 11hs DateTime fechaResolucion = new DateTime(2005,5,2, 18, 0, 0); //2 de mayo, 18hs bool aprobada = true; DateTime fechaVencimiento = fechaResolucion.AddMonths( 2 ); DateTime fechaRealizacion = DateTime.MinValue; //No realizada AutorizacionManual am = this.MakeAutorizacionManual( 1, fechaSolicitud, fechaResolucion, aprobada, fechaRealizacion, 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 Test06_Manual_Estado() { bool exitoso = false; // 10 de diciembre, 17hs DateTime fecha = new DateTime( 2005, 12, 10, 17, 0, 0 ); DateTime fechaSolicitud = new DateTime(2005,5,2, 11, 0, 0); //2 de mayo, 11hs DateTime fechaResolucion = new DateTime(2005,5,2, 18, 0, 0); //2 de mayo, 18hs bool aprobada = false; DateTime fechaVencimiento = DateTime.MinValue; DateTime fechaRealizacion = DateTime.MinValue; //No realizada AutorizacionManual am = this.MakeAutorizacionManual( 1, fechaSolicitud, fechaResolucion, aprobada, fechaRealizacion, fechaVencimiento ); Autorizacion.Estado estado = am.getEstado(fecha); exitoso = ( estado == Autorizacion.Estado.Rechazada ); //Determinación del resultado this.MostrarTest( System.Reflection.MethodInfo.GetCurrentMethod().Name, am, exitoso, fecha, estado); } public void Test07_Manual_Estado() { bool exitoso = false; // 2 de mayo, 12hs DateTime fecha = new DateTime( 2005, 5, 2, 12, 0, 0 ); DateTime fechaSolicitud = new DateTime(2005,5,2, 11, 0, 0); //2 de mayo, 11hs DateTime fechaResolucion = new DateTime(2005,5,2, 18, 0, 0); //2 de mayo, 18hs bool aprobada = false; DateTime fechaVencimiento = DateTime.MinValue; DateTime fechaRealizacion = DateTime.MinValue; //No realizada AutorizacionManual am = this.MakeAutorizacionManual( 1, fechaSolicitud, fechaResolucion, aprobada, fechaRealizacion, 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); } #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 } }