Ejemplo n.º 1
0
TAB_tpCondRet TAB_VerificarTabuleiro(Tabuleiro* tabuleiro)
{
    int condRet, linha, coluna;
    Peca*peca;
    LIS_tppLista lista;
    if(!tabuleiro) {
        CNT_CONTAR("Tabuleiro Inexistente");
        TST_NotificarFalha("Tentou verificar tabuleiro inexistente.");
        return TAB_CondRetErroEstrutura;
    }
    else
        CNT_CONTAR("Tabuleiro Existente");

    if(!CED_VerificarEspaco(tabuleiro, NULL)) {
        CNT_CONTAR("Tabuleiro possui alguma falha");
        TST_NotificarFalha("Controle do espaço acusou erro.");
        return TAB_CondRetErroEstrutura ;
    }
    else
        CNT_CONTAR("Tabuleiro nao possui falha");

    if(TST_CompararInt(TAB_Tabuleiro, CED_ObterTipoEspaco(tabuleiro),
                       "Tipo do espaço de dados nao e tabuleiro.") != TST_CondRetOK) {
        CNT_CONTAR("Tipo nao e Tabuleiro");
        return TAB_CondRetErroEstrutura;
    }
    else
        CNT_CONTAR("Tipo e Tabuleiro");
	CED_MarcarEspacoAtivo(tabuleiro);
    CNT_CONTAR("Tipo Tabuleiro OK");

    /*Verificar a lista das listas, primária*/
    if(LIS_VerificarLista(tabuleiro->lista) == LIS_CondRetErroEstrutura)
    {
        CNT_CONTAR("Lista de listas com erro");
        return TAB_CondRetErroEstrutura;
    }

    /*Verificar Cada elemento da lista, ou seja, cada linha*/
    LIS_IrInicioLista(tabuleiro->lista);
    for(linha = 0; linha < TabuleiroAltura; ++linha) {
        lista = LIS_ObterValor(tabuleiro->lista);
        condRet = LIS_VerificarLista(lista);
        if(condRet == LIS_CondRetErroEstrutura) {
            CNT_CONTAR("Uma das listas de pecas possui algum problema");
            return TAB_CondRetErroEstrutura;
        }
        /*Verificar Cada elemento da lista secundária, ou seja, cada casa do tabuleiro*/
        LIS_IrInicioLista(lista);
        for(coluna = 0; coluna < TabuleiroLargura; ++coluna) {
            peca = LIS_ObterValor(lista);
            if(peca) {
                CNT_CONTAR("Casa nao Vazia");
                if(TST_CompararInt(PEC_Peca, CED_ObterTipoEspaco(peca), "Tipo do espaço de dados nao e peca.") != TST_CondRetOK) {
                    TST_NotificarFalha("Tipo numa casa do tabuleiro nao e peca");
                    CNT_CONTAR("Tipo nao e peca");
                    return TAB_CondRetErroEstrutura;
                }
                else
                   {
					   CNT_CONTAR("Tipo e peca");
				CED_MarcarEspacoAtivo(peca);
				}
			}
            else
                CNT_CONTAR("Casa Vazia");
            LIS_AvancarElementoCorrente(lista, 1);
        }
        if(LIS_IrIndice(lista, 7) == LIS_CondRetOK && LIS_IrIndice(lista, 8) == LIS_CondRetFimLista)
            CNT_CONTAR("Tabuleiro com 8 colunas");
        else {
            CNT_CONTAR("Tabuleiro nao tem 8 colunas");
            TST_NotificarFalha("Tabuleiro nao tem 8 colunas");
            return TAB_CondRetErroEstrutura;
        }
        LIS_AvancarElementoCorrente(tabuleiro->lista, 1);

    }
    if(LIS_IrIndice(tabuleiro->lista, 7) == LIS_CondRetOK && LIS_IrIndice(tabuleiro->lista, 8) == LIS_CondRetFimLista)
        CNT_CONTAR("Tabuleiro com 8 linhas");
    else {
        CNT_CONTAR("Tabuleiro nao tem 8 linhas");
        TST_NotificarFalha("Tabuleiro nao tem 8 linhas");
        return TAB_CondRetErroEstrutura;
    }
    CNT_CONTAR("Ha uma lista de listas e a sublista de pecas sem problemas");
    return TAB_CondRetOK;
}
Ejemplo n.º 2
0
   TST_tpCondRet TST_EfetuarComando( char * ComandoTeste )
   {

      int  i ;
         
      int  numLidos    = -1 ;
      int  inxEspaco   = -1 ;
      int  valEsperado = -1 ;
      int  valObtido   = -1 ;
         
      #define  DIM_STRING_PARM   100
      char StringParm[ DIM_STRING_PARM ] ;
         
      int       Deslocamento ;
      int       Valor ;

      int   Tamanho ;
      int   numLinhaFonte ;

      int idTipo ;

      int numAllocs  = -1 ,
          Frequencia =  0 ,
          ContaNULL  =  0 ;

      double Tolerancia      ,
             PercentEsperado ,
             PercentObtido   ;

      void * pEspaco = NULL ;

      InstrumentarString( StringParm , DIM_STRING_PARM ) ;

      /* Tratar: Reinicializar módulo de teste espeçifico */

         if ( strcmp( ComandoTeste , ResetEspacosCmd ) == 0 )
         {

            if ( EhPrimeiraVez )
            {
               EhPrimeiraVez = FALSE ;

               for( i = 0 ; i < DIM_VT_ESPACO ; i ++ )
               {
                  vtEspaco[ i ] = NULL ;
               } /* for */

               return TST_CondRetOK ;
            } /* if */

            for( i = 0 ; i < DIM_VT_ESPACO ; i++ )
            {
               if ( vtEspaco[ i ] != NULL )
               {
                  CED_Free( vtEspaco[ i ] ) ;
                  vtEspaco[ i ] = NULL ;
               } /* if */
            } /* for */

            return TST_CondRetOK ;

         } /* fim ativa: Tratar: Reinicializar módulo de teste espeçifico */

      /* Tratar: Deturpar espaço */

         else if ( strcmp( ComandoTeste , DeturparEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "iii" ,
                               &inxEspaco , &Deslocamento , &Valor ) ;

            if ( ( numLidos != 3 )
              || !VerificarInxEspaco( inxEspaco , TRUE ))
            {
               return TST_CondRetParm ;
            } /* if */

            (( char * ) vtEspaco[ inxEspaco ] )[ Deslocamento ] = ( char ) Valor ;

            return TST_CondRetOK ;

         } /* fim ativa: Tratar: Deturpar espaço */

      /* Tratar: Atribuir string ao espaço */

         else if ( strcmp( ComandoTeste , InserirStringEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "is" ,
                               &inxEspaco , StringParm ) ;

            if ( ( numLidos != 2 )
              || !VerificarInxEspaco( inxEspaco , TRUE )
              || !VerificarString( StringParm , DIM_STRING_PARM ))
            {
               return TST_CondRetParm ;
            } /* if */

            strcpy( vtEspaco[ inxEspaco ] , StringParm ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Tratar: Atribuir string ao espaço */

      /* Testar: Obter string contido no espaço */

         else if ( strcmp( ComandoTeste , ObterStringEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "is" ,
                               &inxEspaco , StringParm ) ;

            if ( ( numLidos != 2 )
              || !VerificarInxEspaco( inxEspaco , TRUE )
              || !VerificarString( StringParm , DIM_STRING_PARM ))
            {
               return TST_CondRetParm ;
            } /* if */

            return TST_CompararEspaco( StringParm , vtEspaco[ inxEspaco ] ,
                      strlen( StringParm ) , "Conteúdo do valor errado." ) ;

         } /* fim ativa: Testar: Obter string contido no espaço */

      /* Testar: CED &Alocar espaço */

         else if ( strcmp( ComandoTeste , AlocarEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "iiis" ,
                               &inxEspaco , &Tamanho , &numLinhaFonte , StringParm ) ;

            if ( ( numLidos != 4 )
              || ( Tamanho  <= 0 )
              || ( numLinhaFonte < 1 )
              || !VerificarInxEspaco( inxEspaco , FALSE )
              || !VerificarString( StringParm , DIM_STRING_PARM ))
            {
               return TST_CondRetParm ;
            } /* if */

            vtEspaco[ inxEspaco ] =
                      CED_Malloc( Tamanho , numLinhaFonte , StringParm ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Alocar espaço */

      /* Testar: CED &Desalocar espaço */

         else if ( strcmp( ComandoTeste , DesalocarEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "i" ,
                               &inxEspaco ) ;

            if ( ( numLidos != 1 )
              || !VerificarInxEspaco( inxEspaco , FALSE ))
            {
               return TST_CondRetParm ;
            } /* if */

            CED_Free( vtEspaco[ inxEspaco ] ) ;

            vtEspaco[ inxEspaco ] = NULL ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Desalocar espaço */

      /* Testar: CED &Exibir conteúdo bruto do espaço */

         else if ( strcmp( ComandoTeste , ExibirEspacoBrutoCmd ) == 0 )
         {

            #define  DIM_ESPACO  70

            numLidos = LER_LerParametros( "i" ,
                               &inxEspaco ) ;

            if ( ( numLidos != 1 )
              || !VerificarInxEspaco( inxEspaco , FALSE ))
            {
               return TST_CondRetParm ;
            } /* if */

            TST_ExibirEspacoHexa( DIM_ESPACO + 4 , (( char * ) vtEspaco[ inxEspaco ] ) - DIM_ESPACO ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Exibir conteúdo bruto do espaço */

      /* Testar: CED &Exibir conteúdo útil do espaço */

         else if ( strcmp( ComandoTeste , ExibirEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "i" ,
                               &inxEspaco ) ;

            if ( ( numLidos != 1 )
              || !VerificarInxEspaco( inxEspaco , FALSE ))
            {
               return TST_CondRetParm ;
            } /* if */

            CED_ExibirEspaco( vtEspaco[ inxEspaco ] ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Exibir conteúdo útil do espaço */

      /* Testar: CED &Verificar a integridade de um espaço de dados */

         else if ( strcmp( ComandoTeste , VerificarEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "ii" ,
                               &inxEspaco , &valEsperado ) ;

            if ( ( numLidos != 2 )
              || !VerificarInxEspaco( inxEspaco , FALSE ))
            {
               return TST_CondRetParm ;
            } /* if */

            valObtido = CED_VerificarEspaco( vtEspaco[ inxEspaco ] ,
                                             VerificarValor ) ;

            return TST_CompararBool( valEsperado , valObtido ,
                   "Verificação resultou errado." ) ;

         } /* fim ativa: Testar: CED &Verificar a integridade de um espaço de dados */

      /* Testar: CED &Definir o tipo do espaço */

         else if ( strcmp( ComandoTeste , DefinirTipoEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "iii" ,
                               &inxEspaco , &idTipo , &valEsperado ) ;

            if ( ( numLidos != 3 )
              || !VerificarInxEspaco( inxEspaco , FALSE ))
            {
               return TST_CondRetParm ;
            } /* if */

            valObtido = CED_DefinirTipoEspaco( vtEspaco[ inxEspaco ] , idTipo );

            return TST_CompararInt( valEsperado , valObtido ,
                   "Condição de retorno errada." ) ;

         } /* fim ativa: Testar: CED &Definir o tipo do espaço */

      /* Testar: CED &Obter o tipo do espaço */

         else if ( strcmp( ComandoTeste , ObterTipoEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "ii" ,
                               &inxEspaco , &valEsperado ) ;

            if ( ( numLidos != 2 )
              || !VerificarInxEspaco( inxEspaco , FALSE ))
            {
               return TST_CondRetParm ;
            } /* if */

            valObtido = CED_ObterTipoEspaco( vtEspaco[ inxEspaco ] ) ;

            return TST_CompararInt( valEsperado , valObtido ,
                   "Tipo do espaço errado." ) ;

         } /* fim ativa: Testar: CED &Obter o tipo do espaço */

      /* Testar: CED &Obter tamanho do valor contido no espaço */

         else if ( strcmp( ComandoTeste , ObterTamanhoEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "ii" ,
                               &inxEspaco , &valEsperado ) ;

            if ( ( numLidos != 2 )
              || !VerificarInxEspaco( inxEspaco , FALSE ))
            {
               return TST_CondRetParm ;
            } /* if */

            valObtido = CED_ObterTamanhoValor( vtEspaco[ inxEspaco ] ) ;

            return TST_CompararInt( valEsperado , valObtido ,
                   "Tamanho do valor errado." ) ;

         } /* fim ativa: Testar: CED &Obter tamanho do valor contido no espaço */

      /* Testar: CED &Marcar ativo o espaço */

         else if ( strcmp( ComandoTeste , MarcarEspacoAtivoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "i" ,
                               &inxEspaco ) ;

            if ( ( numLidos != 1 )
              || !VerificarInxEspaco( inxEspaco , TRUE ))
            {
               return TST_CondRetParm ;
            } /* if */

            CED_MarcarEspacoAtivo( vtEspaco[ inxEspaco ] ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Marcar ativo o espaço */

      /* Testar: CED &Marcar não ativo o espaço */

         else if ( strcmp( ComandoTeste , MarcarEspacoNaoAtivoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "i" ,
                               &inxEspaco ) ;

            if ( ( numLidos != 1 )
              || !VerificarInxEspaco( inxEspaco , TRUE ))
            {
               return TST_CondRetParm ;
            } /* if */

            CED_MarcarEspacoNaoAtivo( vtEspaco[ inxEspaco ] ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Marcar não ativo o espaço */

      /* Testar: CED &Marcar não ativos todos os espaços */

         else if ( strcmp( ComandoTeste , MarcarTodosNaoAtivosCmd ) == 0 )
         {

            CED_MarcarTodosEspacosInativos( ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Marcar não ativos todos os espaços */

      /* Testar: CED &Verificar se espaço é ativo */

         else if ( strcmp( ComandoTeste , VerificarEspacoAtivoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "ii" ,
                               &inxEspaco , &valEsperado ) ;

            if ( ( numLidos != 2 )
              || !VerificarInxEspaco( inxEspaco , TRUE ))
            {
               return TST_CondRetParm ;
            } /* if */

            valObtido = CED_EhEspacoAtivo( vtEspaco[ inxEspaco ] ) ;

            return TST_CompararInt( valEsperado , valObtido ,
                   "Marca de espaço ativo errada." ) ;

         } /* fim ativa: Testar: CED &Verificar se espaço é ativo */

      /* Testar CED  &Limitar com freqüência de geração de NULL */

         else if ( strcmp( ComandoTeste , VerificarFrequenciaCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "iif" ,
                               &numAllocs , &Frequencia , &Tolerancia ) ;

            if ( ( numLidos != 3   )
              || ( numAllocs < 100 ))
            {
               return TST_CondRetParm ;
            } /* if */

            valObtido = CED_LimitarFrequencia( Frequencia ) ;
            if ( !valObtido )
            {
               return TST_NotificarFalha( "Freqüência limite de malloc em erro." ) ;
            } /* if */

            for( i = 0 ; i < numAllocs ; i++ )
            {
               pEspaco = CED_Malloc( 100 , i + 1 , "TesteFrequencia" ) ;
               if ( pEspaco == NULL )
               {
                  ContaNULL ++ ;
               } else
               {
                  CED_Free( pEspaco ) ;
               } /* if */
            } /* for */

            PercentEsperado = ( 1000. - Frequencia ) / 1000. ;

            PercentObtido   = ContaNULL ;
            PercentObtido   = PercentObtido / numAllocs ;

            return TST_CompararFloat( PercentEsperado , PercentObtido , Tolerancia ,
                        "Número de NULLs gerados está fora da tolerância." ) ;

         } /* fim ativa: Testar CED  &Limitar com freqüência de geração de NULL */

      /* Testar: CED &Iterador: iniciar iterador de espaços */

         else if ( strcmp( ComandoTeste , IniciarIteradorEspacosCmd ) == 0 )
         {

            CED_InicializarIteradorEspacos(  ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Iterador: iniciar iterador de espaços */

      /* Testar: CED &Iterador: avançar para o próximo espaço */

         else if ( strcmp( ComandoTeste , AvancarProximoEspacoCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "i" ,
                               &valEsperado ) ;

            if ( numLidos != 1 )
            {
               return TST_CondRetParm ;
            } /* if */

            valObtido = CED_AvancarProximoEspaco( ) ;

            return TST_CompararInt( valEsperado , valObtido ,
                   "Condição de avanço errada." ) ;

         } /* fim ativa: Testar: CED &Iterador: avançar para o próximo espaço */

      /* Testar: CED &Iterador: obter referência para o espaço corrente */

         else if ( strcmp( ComandoTeste , ObterEspacoCorrenteCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "i" ,
                               &inxEspaco ) ;

            if ( ( numLidos != 1 )
              || !VerificarInxEspaco( inxEspaco , FALSE ))
            {
               return TST_CondRetParm ;
            } /* if */

            vtEspaco[ inxEspaco ] = CED_ObterPonteiroEspacoCorrente( ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Iterador: obter referência para o espaço corrente */

      /* Testar: CED &Iterador: existe espaço corrente */

         else if ( strcmp( ComandoTeste , ExisteEspacoCorrenteCmd ) == 0 )
         {

            numLidos = LER_LerParametros( "i" ,
                               &valEsperado ) ;

            if ( numLidos != 1 )
            {
               return TST_CondRetParm ;
            } /* if */

            valObtido = CED_ExisteEspacoCorrente( ) ;

            return TST_CompararInt( valEsperado , valObtido ,
                   "Condição de existência de iterador errada." ) ; {

            } /* fim repete: Testar: CED &Iterador: existe espaço corrente */

         } /* fim ativa: Testar: CED &Iterador: existe espaço corrente */

      /* Testar: CED &Iterador: terminar iterador */

         else if ( strcmp( ComandoTeste , TerminarIteradorEspacoCmd ) == 0 )
         {

            CED_TerminarIteradorEspacos(  ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Iterador: terminar iterador */

      /* Testar: CED &Iterador: excluir espaço corrente */

         else if ( strcmp( ComandoTeste , ExcluirEspacoCorrenteCmd ) == 0 )
         {

            CED_ExcluirEspacoCorrente( ) ;

            return TST_CondRetOK ;

         } /* fim ativa: Testar: CED &Iterador: excluir espaço corrente */

      return TST_CondRetNaoConhec ;

   } /* Fim função: TCED &Efetuar comando de teste do controle de espaço dinâmico */