/*--------------------------------------------------------------------
 * FICHERO:  Vcar.c
 * OBJETIVO: Probar el objeto "Carcter"
 * AUTOR:    Pedro Reina
 * FECHA:    D.6.8.1995
 *------------------------------------------------------------------*/

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

#include "Caracter.h"

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

void P_Car_Tipo();
void P_Car_Macro();
void P_Car_EsM();
void P_Car_Convierte();
void P_Car_Compara();

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

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

    printf ( "\n0. Fin del programa" );
    printf ( "\n1. Tipo carcter" );
    printf ( "\n2. Car_EsMinus(), Car_EsMayus(), ..." );
    printf ( "\n3. Car_Convierte...()" );
    printf ( "\n4. Macros" );
    printf ( "\n5. Car_Compara()" );

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

    switch ( Opcion )
      {
      case 0:   Sigue = 0;               break;
      case 1:   P_Car_Tipo();            break;
      case 2:   P_Car_EsM();             break;
      case 3:   P_Car_Convierte();       break;
      case 4:   P_Car_Macro();           break;
      case 5:   P_Car_Compara();         break;
      }
    }
  }

/*--------------------------------------------------------------------
 * Definicin de funciones
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Funcin P_Car_Tipo()
 *------------------------------------------------------------------*/
void P_Car_Tipo()
  {
  caracter c;

  printf ( "\n\n" );
  printf ( "\nPrueba del tipo carcter" );
  printf ( "\n------------------------\n" );

  c = 253;
  printf ( "\n%d, %d, %d, %d", c++, c++, c++, c++ );

  c = 2;
  printf ( "\n%d, %d, %d, %d", c--, c--, c--, c-- );

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

/*--------------------------------------------------------------------
 * Funcin P_Car_EsM()
 *------------------------------------------------------------------*/
void P_Car_EsM()
  {
  caracter c=0;

  printf ( "\n\n" );
  printf ( "\nPrueba de Car_EsMinus(), Car_EsMayus(), ..." );
  printf ( "\n-------------------------------------------\n" );

  while ( ++c )
    {
    if ( c%15 == 1 )
      { printf ( "\nCar\tEsMinus\tEsMayus\tMinus\tMayus" ); }
    printf ("\n%c\t%d\t%d\t%c\t%c",c,Car_EsMinus(c),Car_EsMayus(c),
             Car_Minus(c),Car_Mayus(c));
    if ( c%15 == 0 )
      {
      printf ("\nPulsa ENTER para seguir: ");
      getchar();
      }
    }
  }

/*--------------------------------------------------------------------
 * Funcin P_Car_Convierte()
 *------------------------------------------------------------------*/
void P_Car_Convierte()
  {
  caracter c=0;

  printf ( "\n\n" );
  printf ( "\nPrueba de Car_Convierte...()" );
  printf ( "\n----------------------------\n" );

  while ( ++c )
    {
    if ( c%15 == 1 )
      {
      printf (
             "\nCar\tPC->QL\tQL->PC\tQL->AN\tAN-QL\tPC->AN\tAN->PC"
             );
      }
    printf ("\n%c\t%d\t%d\t%d\t%d\t%d\t%d",c, Car_ConviertePCaQL(c),
             Car_ConvierteQLaPC(c), Car_ConvierteQLaANSI(c),
             Car_ConvierteANSIaQL(c), Car_ConviertePCaANSI(c),
             Car_ConvierteANSIaPC(c) );
    if ( c%15 == 0 )
      {
      printf ("\nPulsa ENTER para seguir: ");
      getchar();
      }
    }
  }

/*--------------------------------------------------------------------
 * Funcin P_Car_Macro()
 *------------------------------------------------------------------*/
void P_Car_Macro()
  {
  printf ( "\n\n" );
  printf ( "\nPrueba de macros" );
  printf ( "\n----------------\n" );

  printf ( "\nFlecha arriba: %c", CAR_FLECHA_ARRIBA );
  printf ( "\nFlecha abajo: %c", CAR_FLECHA_ABAJO );
  printf ( "\nFlecha derecha: %c", CAR_FLECHA_DERECHA );
  printf ( "\nFlecha izquierda: %c", CAR_FLECHA_IZQUIERDA );

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

/*--------------------------------------------------------------------
 * Funcin P_Car_Compara()
 *------------------------------------------------------------------*/
void P_Car_Compara()
  {
  caracter c1, c2;

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

  c1 = '', c2 = 'a';
  printf ( "\nComparacin de %c y %c -> %d", c1, c2, Car_Compara(c1,c2) );

  c1 = '', c2 = 'o';
  printf ( "\nComparacin de %c y %c -> %d", c1, c2, Car_Compara(c1,c2) );

  c1 = '', c2 = 'E';
  printf ( "\nComparacin de %c y %c -> %d", c1, c2, Car_Compara(c1,c2) );

  c1 = '', c2 = 'u';
  printf ( "\nComparacin de %c y %c -> %d", c1, c2, Car_Compara(c1,c2) );

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