DES_tpCondRet DES_DestroiDesenho( void ) { int i; // Testa se o ponteiro desenho já foi iniciado; if( pDesenho == NULL ) return DES_CondRetDesenhoNaoIniciado; // Libera cada cabeça de lista for( i = 0; i < pDesenho->iLinhas; i++ ) LST_DestruirLista( pDesenho->pListasHorizontais[i], ExcluiValor ); // Libera o vetor de cabeças de lista free( pDesenho->pListasHorizontais ); // Libera cada cabeça de lista for( i = 0; i < pDesenho->iColunas; i++ ) LST_DestruirLista( pDesenho->pListasVerticais[i], ExcluiValor ); // Libera o vetor de cabeças de lista free( pDesenho->pListasVerticais ); // Libera a matriz de jogo MAT_DestruirMatriz( pDesenho->pMatrizJogo, ExcluiCelula ); // Libera o ponteiro para estrutura encapsulada Desenho free( pDesenho ); pDesenho = NULL; return DES_CondRetOk; }
TST_tpCondRet TST_EfetuarComando( char * ComandoTeste ) { int numLidos = -1, indexMat = -1, dimMatriz = -1, CondRetEsperada = -1, direcao = -1 ; char stringDada [ DIM_STR ] = {0}; char *stringObtida; LIS_tppLista listaAuxiliar ; TST_tpCondRet CondRetObtido ; /* Testar MAT Criar Matriz */ if ( strcmp( ComandoTeste , CRIAR_MAT_CMD ) == 0 ) { numLidos = LER_LerParametros( "iii" , &indexMat, &dimMatriz, &CondRetEsperada ) ; if ( numLidos != 3 ) { return TST_CondRetParm ; } /* if */ CondRetObtido = MAT_CriarMatriz( &(vtMatrizes[ indexMat ]), dimMatriz ) ; return TST_CompararInt( CondRetEsperada , CondRetObtido , "Condicao de retorno errada ao criar matriz." ) ; } /* fim ativa: Testar MAT Criar Matriz */ /* Testar MAT andar na matriz */ else if ( strcmp( ComandoTeste , ANDAR_DIR_CMD ) == 0 ) { numLidos = LER_LerParametros( "iii" , &indexMat, &direcao , &CondRetEsperada ) ; if ( numLidos != 3 ) { return TST_CondRetParm ; } /* if */ CondRetObtido = MAT_AndarCorrente( vtMatrizes[indexMat], (MAT_tpDirecao) direcao ) ; return TST_CompararInt( CondRetEsperada , CondRetObtido , "Retorno errado ao percorrer a matriz." ); } /* fim ativa: Testar MAT andar na matriz */ /* Testar MAT atribuir lista a célula corrente */ else if ( strcmp( ComandoTeste , ATRIBUIR_LIS_CMD ) == 0 ) { numLidos = LER_LerParametros( "isi" , &indexMat, stringDada, &CondRetEsperada ) ; if ( numLidos != 3 ) { return TST_CondRetParm ; } /* if */ listaAuxiliar = criarListaAPartirDeString(stringDada); CondRetObtido = MAT_AtribuirValorCorrente( vtMatrizes[ indexMat ], listaAuxiliar ) ; return TST_CompararInt( CondRetEsperada , CondRetObtido , "Retorno errado ao inserir lista no elemento corrente." ); } /* fim ativa: Testar MAT atribuir lista a célula corrente */ /* Testar MAT obter valor da célula corrente */ else if ( strcmp( ComandoTeste , OBTER_LIS_CMD ) == 0 ) { int pEsp; numLidos = LER_LerParametros( "isii" , &indexMat, stringDada, &pEsp, &CondRetEsperada ) ; if ( numLidos != 4 ) { return TST_CondRetParm ; } /* if */ CondRetObtido = MAT_ObterValorCorrente( vtMatrizes[ indexMat ], &listaAuxiliar ) ; if( CondRetObtido != CondRetEsperada || CondRetObtido == MAT_CondRetPonteiroNulo ){ return TST_CompararInt( CondRetEsperada , CondRetObtido , "Retorno errado ao obter lista no elemento corrente." ); } if ( pEsp == 0 ) { return TST_CompararPonteiroNulo( 0 , listaAuxiliar , "Valor não deveria existir." ) ; } /* if */ stringObtida = obterStringAPartirDeLista( listaAuxiliar ); return TST_CompararString(stringDada, stringObtida, "Representação em string da lista obtida diferente do esperado."); } /* fim ativa: Testar MAT obeter valor da célula corrente */ /* Testar MAT destruir matriz */ else if ( strcmp( ComandoTeste , DESTROI_CMD ) == 0 ) { numLidos = LER_LerParametros( "ii" , &indexMat, &CondRetEsperada ) ; if ( numLidos != 2 ) { return TST_CondRetParm ; } /* if */ CondRetObtido = MAT_DestruirMatriz( vtMatrizes[ indexMat ] ) ; return TST_CompararInt( CondRetEsperada , CondRetObtido , "Retorno errado ao destruir matriz" ); } /* fim ativa: Testar MAT destruir matriz */ /* Testar MAT esvaziar matriz */ else if ( strcmp( ComandoTeste , ESVAZIA_CMD ) == 0 ) { numLidos = LER_LerParametros( "ii" , &indexMat, &CondRetEsperada ) ; if ( numLidos != 2 ) { return TST_CondRetParm ; } /* if */ CondRetObtido = MAT_EsvaziarMatriz( vtMatrizes[ indexMat ] ) ; return TST_CompararInt( CondRetEsperada , CondRetObtido , "Retorno errado ao esvaziar matriz" ); } /* fim ativa: MAT esvaziar matriz */ return TST_CondRetNaoConhec ; } /* Fim função: TARV Efetuar operações de teste específicas para árvore */