Untitled
unknown
plain_text
7 months ago
3.1 kB
9
Indexable
#include <CUnit/CUnit.h>
#include <CUnit/Basic.h>
#include <stdio.h>
#include <ctype.h>
// Função a ser testada (com correções aplicadas)
int coordenada_para_indices(char *coord, int *linha, int *coluna) {
// Verifica se o caractere da coluna é válido ('a'-'z')
if (coord[0] < 'a' || coord[0] > 'z') return 1;
// Verifica se o caractere da linha é válido ('1'-'5')
if (coord[1] < '1' || coord[1] > '5') return 1;
// Converte as coordenadas para índices
*coluna = coord[0] - 'a';
*linha = coord[1] - '1';
return 0;
}
// teste 1: Coordenadas válidas
void teste_coordenadas_validas(void) {
int linha, coluna;
char coord[] = "a1";
CU_ASSERT_EQUAL(coordenada_para_indices(coord, &linha, &coluna), 0);
CU_ASSERT_EQUAL(linha, 0);
CU_ASSERT_EQUAL(coluna, 0);
}
// teste 2: Caractere de coluna inválido
void teste_coluna_invalida(void) {
int linha, coluna;
char coord[] = "A1"; // 'A' não é uma coluna válida
CU_ASSERT_EQUAL(coordenada_para_indices(coord, &linha, &coluna), 1);
}
// teste 3: Caractere de linha inválido
void teste_linha_invalida(void) {
int linha, coluna;
char coord[] = "a0"; // '0' não é uma linha válida
CU_ASSERT_EQUAL(coordenada_para_indices(coord, &linha, &coluna), 1);
}
// teste 4: Coluna fora dos limites
void teste_coluna_fora_dos_limites(void) {
int linha, coluna;
char coord[] = "{1"; // '{' está fora dos limites para as colunas ('a'-'z')
CU_ASSERT_EQUAL(coordenada_para_indices(coord, &linha, &coluna), 1);
}
// teste 5: Linha fora dos limites
void teste_linha_fora_dos_limites(void) {
int linha, coluna;
char coord[] = "a6"; // '6' está fora dos limites para as linhas ('1'-'5')
CU_ASSERT_EQUAL(coordenada_para_indices(coord, &linha, &coluna), 1);
}
// Função principal para configurar e rodar os testes
int main() {
// Inicializa o registro de testes do CUnit
if (CUE_SUCCESS != CU_initialize_registry())
return CU_get_error();
// Adiciona um conjunto de testes ao registro
CU_pSuite suite = CU_add_suite("TesteCoordenadaParaIndices", NULL, NULL);
if (NULL == suite) {
CU_cleanup_registry();
return CU_get_error();
}
// Adiciona os casos de teste ao conjunto
if (
(NULL == CU_add_test(suite, "teste_coordenadas_validas", teste_coordenadas_validas)) ||
(NULL == CU_add_test(suite, "teste_coluna_invalida", teste_coluna_invalida)) ||
(NULL == CU_add_test(suite, "teste_linha_invalida", teste_linha_invalida)) ||
(NULL == CU_add_test(suite, "teste_coluna_fora_dos_limites", teste_coluna_fora_dos_limites)) ||
(NULL == CU_add_test(suite, "teste_linha_fora_dos_limites", teste_linha_fora_dos_limites))
) {
CU_cleanup_registry();
return CU_get_error();
}
// Roda todos os testes usando a interface básica
CU_basic_set_mode(CU_BRM_VERBOSE); // Modo verbose
CU_basic_run_tests();
// Limpeza e retorno
CU_cleanup_registry();
return CU_get_error();
}Editor is loading...
Leave a Comment