/*--------------------------------------------------------------------
 * FICHERO:  Vfec.c
 * OBJETIVO: Probar el objeto "Fecha"
 * AUTOR:    Pedro Reina
 * FECHA:    M.18.7.1995
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Ficheros de cabecera
 *------------------------------------------------------------------*/

#include "Fecha.h"

/*--------------------------------------------------------------------
 * Declaracin de funciones
 *------------------------------------------------------------------*/

void P_Fec_Crea();
void P_Fec_DiaSemana();
void P_Fec_Diferencia();
void P_Fec_Hoy();
void P_Fec_Cadena();
void P_Fec_LeeCadena();

/*--------------------------------------------------------------------
 * Variables globales
 *------------------------------------------------------------------*/

  /* Ninguna */

/*--------------------------------------------------------------------
 * Programa principal
 *------------------------------------------------------------------*/
void main()
  {
  int Opcion, Sigue=1;

  while ( Sigue )
    {
    printf ( "\n\n" );
    printf ( "\nPrueba del objeto Fecha" );
    printf ( "\n=======================\n" );

    printf ( "\n0.  Fin del programa" );
    printf ( "\n1.  Fec_Crea()" );
    printf ( "\n2.  Fec_DiaSemana()" );
    printf ( "\n3.  Fec_Diferencia()" );
    printf ( "\n4.  Fec_Hoy()" );
    printf ( "\n5.  Fec_Cadena()" );
    printf ( "\n6.  Fec_LeeCadena()" );

    printf ( "\n\nIntroduce nmero de opcin: " );
    scanf ( "%d", &Opcion );
    getchar();

    switch ( Opcion )
      {
      case 0:   Sigue = 0;                 break;
      case 1:   P_Fec_Crea();              break;
      case 2:   P_Fec_DiaSemana();         break;
      case 3:   P_Fec_Diferencia();        break;
      case 4:   P_Fec_Hoy();               break;
      case 5:   P_Fec_Cadena();            break;
      case 6:   P_Fec_LeeCadena();         break;
      }
    getchar();
    }
  }

/*--------------------------------------------------------------------
 * Funcin P_Fec_Crea()
 *------------------------------------------------------------------*/
void P_Fec_Crea()
  {
  fecha    Fecha;
  contador Ano;
  octeto   Mes, Dia;
  int      Aux;

  printf ( "\n\n" );
  printf ( "\nPrueba de Fec_Crea()" );
  printf ( "\n--------------------\n" );

  printf ( "\nEl ao: " ); scanf ( "%d", &Aux ); Ano = Aux;
  printf ( "El mes: " ); scanf ( "%d", &Aux );   Mes = Aux;
  printf ( "El da: " ); scanf ( "%d", &Aux );   Dia = Aux;

  if ( Fecha = Fec_Crea (Ano, Mes, Dia) )
    {
    printf ( "\nEl ao: %d", Fec_Ano (Fecha) );
    printf ( "\nEl mes: %d", Fec_Mes (Fecha) );
    printf ( "\nEl da: %d", Fec_Dia (Fecha) );

    Fec_Destruye (Fecha);
    }

  printf ("\n\nPulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Fec_DiaSemana()
 *------------------------------------------------------------------*/
void P_Fec_DiaSemana()
  {
  static cadena NombreDia[] = {"Domingo", "Lunes", "Martes", "Mircoles",
                               "Jueves", "Viernes", "Sbado" };
  fecha    Fecha;
  contador Ano;
  octeto   Mes, Dia;
  int      Aux;

  printf ( "\n\n" );
  printf ( "\nPrueba de Fec_DiaSemana()" );
  printf ( "\n-------------------------\n" );

  printf ( "\nEl ao: " ); scanf ( "%d", &Aux ); Ano = Aux;
  printf ( "El mes: " ); scanf ( "%d", &Aux );   Mes = Aux;
  printf ( "El da: " ); scanf ( "%d", &Aux );   Dia = Aux;

  if ( Fecha = Fec_Crea (Ano, Mes, Dia) )
    {
    printf ( "\nNmero del da de la semana: %d", Fec_DiaSemana(Fecha) );
    printf ( "\nDa de la semana: %s", NombreDia[Fec_DiaSemana(Fecha)] );
    Fec_Destruye (Fecha);
    }

  printf ("\n\nPulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Fec_Hoy()
 *------------------------------------------------------------------*/
void P_Fec_Hoy()
  {
  fecha Fecha;

  printf ( "\n\n" );
  printf ( "\nPrueba de Fec_Hoy()" );
  printf ( "\n-------------------\n" );

  if ( Fecha = Fec_Hoy() )
    {
    printf ( "\nEsta es la fecha de hoy: %d.%d.%d", Fec_Dia(Fecha),
             Fec_Mes(Fecha), Fec_Ano(Fecha) );
    Fec_Destruye (Fecha);
    }
  else
    { printf ( "\nNo se puede crear la fecha" ); }

  printf ("\n\nPulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Fec_Diferencia()
 *------------------------------------------------------------------*/
void P_Fec_Diferencia()
  {
  fecha    Fecha1, Fecha2;
  contador Ano;
  octeto   Mes, Dia;
  int      Aux;

  printf ( "\n\n" );
  printf ( "\nPrueba de Fec_Diferencia()" );
  printf ( "\n--------------------------\n" );

  printf ( "\nPrimera fecha:" );

  printf ( "\nEl ao: " ); scanf ( "%d", &Aux ); Ano = Aux;
  printf ( "El mes: " ); scanf ( "%d", &Aux );   Mes = Aux;
  printf ( "El da: " ); scanf ( "%d", &Aux );   Dia = Aux;

  if ( Fecha1 = Fec_Crea (Ano, Mes, Dia) )
    {
    printf ( "\nSegunda fecha:" );

    printf ( "\nEl ao: " ); scanf ( "%d", &Aux ); Ano = Aux;
    printf ( "El mes: " ); scanf ( "%d", &Aux );   Mes = Aux;
    printf ( "El da: " ); scanf ( "%d", &Aux );   Dia = Aux;

    if ( Fecha2 = Fec_Crea (Ano, Mes, Dia) )
      { printf ( "\nDiferencia: %ld", Fec_Diferencia(Fecha1,Fecha2) ); }
    }

  if ( Fecha1 ) { Fec_Destruye (Fecha1); }
  if ( Fecha2 ) { Fec_Destruye (Fecha2); }

  printf ("\n\nPulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Fec_Cadena()
 *------------------------------------------------------------------*/
void P_Fec_Cadena()
  {
  fecha    Fecha;
  contador Ano;
  octeto   Mes, Dia;
  int      Aux;
  cadena   Cadena;

  printf ( "\n\n" );
  printf ( "\nPrueba de Fec_Cadena()" );
  printf ( "\n----------------------\n" );

  printf ( "\nEl ao: " ); scanf ( "%d", &Aux ); Ano = Aux;
  printf ( "El mes: " ); scanf ( "%d", &Aux );   Mes = Aux;
  printf ( "El da: " ); scanf ( "%d", &Aux );   Dia = Aux;

  if ( Fecha = Fec_Crea (Ano, Mes, Dia) )
    {
    Cadena = Fec_Cadena (Fecha);
    printf ( "\nEscrita como cadena: %s", Cadena );

    Fec_Destruye (Fecha);
    Cad_Destruye (Cadena);
    }

  printf ("\n\nPulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Fec_LeeCadena()
 *------------------------------------------------------------------*/
void P_Fec_LeeCadena()
  {
  fecha  Fecha;
  cadena Cadena;

  printf ( "\n\n" );
  printf ( "\nPrueba de Fec_LeeCadena()" );
  printf ( "\n-------------------------\n" );

  Cadena = Cad_Crea (8);
  printf ( "\nIntroduce una cadena con formato AAAAMMDD: " );
  scanf ( "%s", Cadena );

  if ( Fecha = Fec_LeeCadena (Cadena) )
    {
    printf ( "\nEsta es la fecha leda: %d.%d.%d", Fec_Dia(Fecha),
             Fec_Mes(Fecha), Fec_Ano(Fecha) );
    Fec_Destruye (Fecha);
    }

  Cad_Destruye (Cadena);

  printf ("\n\nPulsa ENTER para seguir: ");
  getchar();
  }
