int LER_InicializarLeitura( void ) { #ifdef _DEBUG TST_ASSERT( ! Inicializado ) ; #endif NomeArqScript[ 0 ] = 0 ; pArqScript = NULL ; AcabouScript = 1 ; ContaLinhas = 0 ; LER_Buffer[ 0 ] = 0 ; LER_TamBuffer = 0 ; pTabela = TBS_CriarTabela( DIM_TABELA , ObterSimbolo , NULL ) ; if ( pTabela == NULL ) { return FALSE ; } /* if */ Inicializado = 1 ; return TRUE ; } /* Fim função: LER &Inicializar módulo LerParm */
TST_tpCondRet TST_EfetuarComando( char * ComandoTeste ) { int inxTabela = -1 , idTipo = -1 , numLidos = -1 , CondRetEsp = -1 ; TST_tpCondRet CondRet ; char StringDado[ DIM_SIMB ] ; char StringValor[ DIM_SIMB ] ; int i ; int tamTabela = -1 ; int ValInt = -1 ; tpTipo1 * pDado1 ; char ValChar = '\0' ; tpTipo2 * pDado2 ; tpTipo3 * pDado3 ; int ValIntEsp = -1 ; char ValCharEsp = '*' ; StringDado[ 0 ] = 0 ; /* Efetuar reset de teste de tabela */ if ( strcmp( ComandoTeste , RESET_TAB_CMD ) == 0 ) { for( i = 0 ; i < DIM_VT_TABELAS ; i++ ) { vtTabelas[ i ] = NULL ; } /* for */ return TST_CondRetOK ; } /* fim ativa: Efetuar reset de teste de tabela */ /* Testar CriarTabela */ else if ( strcmp( ComandoTeste , CRIAR_TAB_CMD ) == 0 ) { numLidos = LER_LerParametros( "iii" , &inxTabela , &tamTabela , &idTipo ) ; if ( ( numLidos != 3 ) || ( ! ValidarInxTabela( inxTabela , VAZIO )) || ( ! ValidarIdTipo( idTipo )) || ( tamTabela <= 1 )) { return TST_CondRetParm ; } /* if */ if ( idTipo == ID_TIPO_1 ) { vtTabelas[ inxTabela ] = TBS_CriarTabela( tamTabela , ObterSimboloTipoUm , NULL ) ; } else if ( idTipo == ID_TIPO_2 ) { vtTabelas[ inxTabela ] = TBS_CriarTabela( tamTabela , ObterSimboloTipoDois , NULL ) ; } else { vtTabelas[ inxTabela ] = TBS_CriarTabela( tamTabela , ObterSimboloTipoTres , LiberarDadoTipoTres ) ; } /* if */ return TST_CompararPonteiroNulo( 1 , vtTabelas[ inxTabela ] , "Erro em ponteiro de nova tabela." ) ; } /* fim ativa: Testar CriarTabela */ /* Testar Destruir tabela */ else if ( strcmp( ComandoTeste , DESTRUIR_TAB_CMD ) == 0 ) { numLidos = LER_LerParametros( "i" , &inxTabela ) ; if ( ( numLidos != 1 ) || ( ! ValidarInxTabela( inxTabela , NAO_VAZIO ))) { return TST_CondRetParm ; } /* if */ TBS_DestruirTabela( vtTabelas[ inxTabela ] ) ; vtTabelas[ inxTabela ] = NULL ; return TST_CondRetOK ; } /* fim ativa: Testar Destruir tabela */ /* Testar Inserir simbolo tipo um */ else if ( strcmp( ComandoTeste , INS_SIMB_UM_CMD ) == 0 ) { numLidos = LER_LerParametros( "iisi" , &inxTabela , &ValInt , StringDado , &CondRetEsp ) ; if ( ( numLidos != 4 ) || ( ! ValidarInxTabela( inxTabela , NAO_VAZIO )) ) { return TST_CondRetParm ; } /* if */ pDado1 = ( tpTipo1 * ) malloc( sizeof( tpTipo1 )) ; if ( pDado1 == NULL ) { return TST_CondRetMemoria ; } /* if */ pDado1->Conta = ValInt ; strcpy( pDado1->SimboloUm , StringDado ) ; CondRet = (TST_tpCondRet) TBS_InserirSimbolo( vtTabelas[ inxTabela ] , pDado1 ) ; if ( CondRet != TBS_CondRetOK ) { free( pDado1 ) ; } /* if */ return TST_CompararInt( CondRetEsp , CondRet , "Condição de retorno errada em símbolo tipo um." ) ; } /* fim ativa: Testar Inserir simbolo tipo um */ /* Testar Inserir simbolo tipo dois */ else if ( strcmp( ComandoTeste , INS_SIMB_DOIS_CMD ) == 0 ) { numLidos = LER_LerParametros( "icsi" , &inxTabela , &ValChar , StringDado , &CondRetEsp ) ; if ( ( numLidos != 4 ) || ( ! ValidarInxTabela( inxTabela , NAO_VAZIO )) ) { return TST_CondRetParm ; } /* if */ pDado2 = ( tpTipo2 * ) malloc( sizeof( tpTipo2 )) ; if ( pDado2 == NULL ) { return TST_CondRetMemoria ; } /* if */ pDado2->Id = ValChar ; strcpy( pDado2->SimboloDois , StringDado ) ; return TST_CompararInt( CondRetEsp , TBS_InserirSimbolo( vtTabelas[ inxTabela ] , pDado2 ) , "Condição de retorno errada em símbolo tipo dois." ) ; } /* fim ativa: Testar Inserir simbolo tipo dois */ /* Testar Inserir simbolo tipo tres */ else if ( strcmp( ComandoTeste , INS_SIMB_TRES_CMD ) == 0 ) { numLidos = LER_LerParametros( "issi" , &inxTabela , StringDado , StringValor , &CondRetEsp ) ; if ( ( numLidos != 4 ) || ( ! ValidarInxTabela( inxTabela , NAO_VAZIO )) ) { return TST_CondRetParm ; } /* if */ pDado3 = ( tpTipo3 * ) malloc( sizeof( tpTipo3 )) ; if ( pDado3 == NULL ) { return TST_CondRetMemoria ; } /* if */ pDado3->pString = (char*) malloc( strlen( StringValor ) + 1 ) ; strcpy( pDado3->pString , StringValor ) ; strcpy( pDado3->SimboloTres , StringDado ) ; return TST_CompararInt( CondRetEsp , TBS_InserirSimbolo( vtTabelas[ inxTabela ] , pDado3 ) , "Condição de retorno errada em símbolo tipo dois." ) ; } /* fim ativa: Testar Inserir simbolo tipo tres */ /* Testar excluir simbolo */ else if ( strcmp( ComandoTeste , EXC_SIMB_CMD ) == 0 ) { numLidos = LER_LerParametros( (char*) "isi" , (char*) &inxTabela , (char*) StringDado , (char*) &CondRetEsp ) ; if ( ( numLidos != 3 ) || ( ! ValidarInxTabela( inxTabela , NAO_VAZIO )) ) { return TST_CondRetParm ; } /* if */ return TST_CompararInt( CondRetEsp , TBS_ExcluirSimbolo( vtTabelas[ inxTabela ] , StringDado ) , "Condição de retorno errada ao excluir." ) ; } /* fim ativa: Testar excluir simbolo */ /* Testar procurar símbolo tipo 1 */ else if ( strcmp( ComandoTeste , PROCURAR_SIMB_UM_CMD ) == 0 ) { numLidos = LER_LerParametros( "isi" , &inxTabela , StringDado , &ValIntEsp ) ; if ( ( numLidos != 3 ) || ( ! ValidarInxTabela( inxTabela , NAO_VAZIO )) ) { return TST_CondRetParm ; } /* if */ pDado1 = ( tpTipo1 * ) TBS_ProcurarSimbolo( vtTabelas[ inxTabela ] , StringDado ) ; if ( ValIntEsp == -1 ) { return TST_CompararPonteiroNulo( 0 , pDado1 , "Dado tipo um não deveria existir." ) ; } /* if */ if ( pDado1 == NULL ) { return TST_CompararPonteiroNulo( 1 , pDado1 , "Dado tipo um deveria existir." ) ; } /* if */ return TST_CompararInt( ValIntEsp , pDado1->Conta , "Valor tipo um errado." ) ; } /* fim ativa: Testar procurar símbolo tipo 1 */ /* Testar procurar símbolo tipo 2 */ else if ( strcmp( ComandoTeste , PROCURAR_SIMB_DOIS_CMD ) == 0 ) { numLidos = LER_LerParametros( "isc" , &inxTabela , StringDado , &ValCharEsp ) ; if ( ( numLidos != 3 ) || ( ! ValidarInxTabela( inxTabela , NAO_VAZIO )) ) { return TST_CondRetParm ; } /* if */ pDado2 = ( tpTipo2 * ) TBS_ProcurarSimbolo( vtTabelas[ inxTabela ] , StringDado ) ; if ( ValCharEsp == '*' ) { return TST_CompararPonteiroNulo( 0 , pDado2 , "Dado tipo dois não deveria existir." ) ; } /* if */ if ( pDado2 == NULL ) { return TST_CompararPonteiroNulo( 1 , pDado2 , "Dado tipo dois deveria existir." ) ; } /* if */ return TST_CompararChar( ValCharEsp , pDado2->Id , "Valor tipo dois errado." ) ; } /* fim ativa: Testar procurar símbolo tipo 2 */ /* Testar procurar símbolo tipo 3 */ else if ( strcmp( ComandoTeste , PROCURAR_SIMB_TRES_CMD ) == 0 ) { numLidos = LER_LerParametros( "iss" , &inxTabela , StringDado , StringValor ) ; if ( ( numLidos != 3 ) || ( ! ValidarInxTabela( inxTabela , NAO_VAZIO )) ) { return TST_CondRetParm ; } /* if */ pDado3 = ( tpTipo3 * ) TBS_ProcurarSimbolo( vtTabelas[ inxTabela ] , StringDado ) ; if ( pDado3 == NULL ) { return TST_CompararPonteiroNulo( 1 , pDado3 , "Dado tipo três deveria existir." ) ; } /* if */ return TST_CompararString( StringValor , pDado3->pString , "Valor tipo três errado." ) ; } /* fim ativa: Testar procurar símbolo tipo 3 */ /* Testar validar Tabela de símbolos */ #ifdef _DEBUG else if ( strcmp( ComandoTeste , VALIDAR_TAB_CMD ) == 0 ) { numLidos = LER_LerParametros( "i" , &inxTabela ) ; if ( ( numLidos != 1 ) || ( ! ValidarInxTabela( inxTabela , NAO_VAZIO ))) { return TST_CondRetParm ; } /* if */ return TBS_ValidarTabela( vtTabelas[ inxTabela ] ) ; } /* fim ativa: Testar validar Tabela de símbolos */ #endif return TST_CondRetNaoConhec ; } /* Fim função: TTBS &Testar tabela de símbolos */