Untitled

 avatar
unknown
plain_text
18 days ago
3.1 kB
4
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