LCOV - code coverage report
Current view: top level - test/errors - test_error.cc (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 59 59
Test Date: 2025-04-18 15:53:49 Functions: 100.0 % 1 1

            Line data    Source code
       1              : #include "../inc/errors.h"
       2              : #include <catch2/catch_test_macros.hpp>
       3              : #include <sstream>
       4              : 
       5           36 : TEST_CASE("Pruebas de la clase Error", "[error]") {
       6           36 :   using nicole::Error;
       7           36 :   using nicole::ERROR_TYPE;
       8              : 
       9           36 :   SECTION("Constructor y atributos") {
      10            9 :     const Error error{ERROR_TYPE::MISSING_ARGUMENTS,
      11            9 :                       "Se necesitan más argumentos"};
      12            9 :     std::ostringstream oss;
      13            9 :     oss << error;
      14              : 
      15            9 :     REQUIRE(error.info() == "Se necesitan más argumentos");
      16            9 :     REQUIRE(oss.str() ==
      17            9 :             "Error MISSING_ARGUMENTS: Se necesitan más argumentos");
      18            9 :   }
      19              : 
      20           36 :   SECTION("Tipos de errores y mensajes asociados") {
      21            9 :     const Error errorBinaryName{ERROR_TYPE::MISSING_BINARY_NAME,
      22            9 :                                 "Nombre de binario no proporcionado"};
      23            9 :     std::ostringstream ossBinaryName;
      24            9 :     ossBinaryName << errorBinaryName;
      25              : 
      26            9 :     REQUIRE(errorBinaryName.info() == "Nombre de binario no proporcionado");
      27            9 :     REQUIRE(ossBinaryName.str() ==
      28            9 :             "Error MISSING_BINARY_NAME: Nombre de binario no proporcionado");
      29              : 
      30            9 :     const Error errorFileNotFound{ERROR_TYPE::ENTRY_FILE_NOT_FOUND,
      31            9 :                                   "Archivo de entrada no encontrado"};
      32            9 :     std::ostringstream ossFileNotFound;
      33            9 :     ossFileNotFound << errorFileNotFound;
      34              : 
      35            9 :     REQUIRE(errorFileNotFound.info() == "Archivo de entrada no encontrado");
      36            9 :     REQUIRE(ossFileNotFound.str() ==
      37            9 :             "Error ENTRY_FILE_NOT_FOUND: Archivo de entrada no encontrado");
      38            9 :   }
      39              : 
      40           36 :   SECTION("Errores de lexer") {
      41            9 :     const Error errorUnmatched{ERROR_TYPE::CHECK_UNMATCHED,
      42            9 :                                "Token no reconocido"};
      43            9 :     std::ostringstream ossUnmatched;
      44            9 :     ossUnmatched << errorUnmatched;
      45              : 
      46            9 :     REQUIRE(errorUnmatched.info() == "Token no reconocido");
      47            9 :     REQUIRE(ossUnmatched.str() == "Error CHECK_UNMATCHED: Token no reconocido");
      48              : 
      49            9 :     const Error errorFileExtension{ERROR_TYPE::FILE_EXTENSION,
      50            9 :                                    "Extensión de archivo no válida"};
      51            9 :     std::ostringstream ossFileExtension;
      52            9 :     ossFileExtension << errorFileExtension;
      53              : 
      54            9 :     REQUIRE(errorFileExtension.info() == "Extensión de archivo no válida");
      55            9 :     REQUIRE(ossFileExtension.str() ==
      56            9 :             "Error FILE_EXTENSION: Extensión de archivo no válida");
      57            9 :   }
      58              : 
      59           36 :   SECTION("Errores de flujo de tokens") {
      60            9 :     const Error errorEat{ERROR_TYPE::EAT,
      61            9 :                          "No se puede consumir el token actual"};
      62            9 :     std::ostringstream ossEat;
      63            9 :     ossEat << errorEat;
      64              : 
      65            9 :     REQUIRE(errorEat.info() == "No se puede consumir el token actual");
      66            9 :     REQUIRE(ossEat.str() == "Error EAT: No se puede consumir el token actual");
      67              : 
      68            9 :     const Error errorLookAhead{ERROR_TYPE::LOOK_AHEAD,
      69            9 :                                "No se puede mirar más allá en el flujo"};
      70            9 :     std::ostringstream ossLookAhead;
      71            9 :     ossLookAhead << errorLookAhead;
      72              : 
      73            9 :     REQUIRE(errorLookAhead.info() == "No se puede mirar más allá en el flujo");
      74            9 :     REQUIRE(ossLookAhead.str() ==
      75            9 :             "Error LOOK_AHEAD: No se puede mirar más allá en el flujo");
      76            9 :   }
      77           36 : }
        

Generated by: LCOV version 2.0-1