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

            Line data    Source code
       1              : #include "../inc/lexicalAnalysis/nicoleSintax.h"
       2              : #include <catch2/catch_test_macros.hpp>
       3              : 
       4            9 : TEST_CASE("The lexer works", "[Lexer]") {
       5              :   // Instancia de NicoleSintax
       6            9 :   const nicole::NicoleSintax sintax;
       7              :   // Crear el Lexer
       8            9 :   const nicole::Lexer lexer{sintax.createLexer()};
       9              :   // Verificar que las categorías del Lexer no estén vacías
      10            9 :   REQUIRE_FALSE(lexer.categories().empty());
      11              :   // Ruta al archivo fuente de prueba
      12            9 :   std::filesystem::path testFile{"../examples/literals/literals.nc"};
      13              :   // Analizar el archivo fuente
      14            9 :   std::expected<nicole::TokenStream, nicole::Error> result{
      15            9 :       lexer.analyze(testFile)};
      16              :   // Verificar que el análisis fue exitoso
      17            9 :   REQUIRE(result.has_value());
      18              :   // Verificar que el TokenStream no esté vacío
      19            9 :   REQUIRE(result->size() == 99);
      20              : 
      21              :   // Ruta al archivo fuente de prueba
      22            9 :   testFile = std::filesystem::path{"../examples/loops/matrix.nc"};
      23              :   // Analizar el archivo fuente
      24            9 :   result = lexer.analyze(testFile);
      25              :   // Verificar que el análisis fue exitoso
      26            9 :   REQUIRE(result.has_value());
      27              :   // Verificar que el TokenStream no esté vacío
      28            9 :   REQUIRE(result->size() == 84);
      29              : 
      30              :   // Ruta al archivo fuente de prueba
      31            9 :   testFile = std::filesystem::path{"../examples/conditionals/conditionals.nc"};
      32              :   // Analizar el archivo fuente
      33            9 :   result = lexer.analyze(testFile);
      34              :   // Verificar que el análisis fue exitoso
      35            9 :   REQUIRE(result.has_value());
      36              :   // Verificar que el TokenStream no esté vacío
      37            9 :   REQUIRE(result->size() == 147);
      38              : 
      39              :   // Ruta al archivo fuente de prueba
      40            9 :   testFile = std::filesystem::path{"../examples/conditionals/switch.nc"};
      41              :   // Analizar el archivo fuente
      42            9 :   result = lexer.analyze(testFile);
      43              :   // Verificar que el análisis fue exitoso
      44            9 :   REQUIRE(result.has_value());
      45              :   // Verificar que el TokenStream no esté vacío
      46            9 :   REQUIRE(result->size() == 78);
      47              : 
      48              :   // Ruta al archivo fuente de prueba
      49            9 :   testFile = std::filesystem::path{"../examples/functions/functions.nc"};
      50              :   // Analizar el archivo fuente
      51            9 :   result = lexer.analyze(testFile);
      52              :   // Verificar que el análisis fue exitoso
      53            9 :   REQUIRE(result.has_value());
      54              :   // Verificar que el TokenStream no esté vacío
      55            9 :   REQUIRE(result->size() == 172);
      56              : 
      57              :   // Ruta al archivo fuente de prueba
      58            9 :   testFile = std::filesystem::path{"../examples/imports/import1.nc"};
      59              :   // Analizar el archivo fuente
      60            9 :   result = lexer.analyze(testFile);
      61              :   // Verificar que el análisis fue exitoso
      62            9 :   REQUIRE(result.has_value());
      63              :   // Verificar que el TokenStream no esté vacío
      64            9 :   REQUIRE(result->size() == 25);
      65              : 
      66              :   // Ruta al archivo fuente de prueba
      67            9 :   testFile = std::filesystem::path{"../examples/operations/opWithVariables.nc"};
      68              :   // Analizar el archivo fuente
      69            9 :   result = lexer.analyze(testFile);
      70              :   // Verificar que el análisis fue exitoso
      71            9 :   REQUIRE(result.has_value());
      72              :   // Verificar que el TokenStream no esté vacío
      73            9 :   REQUIRE(result->size() == 202);
      74              : 
      75              :   // Ruta al archivo fuente de prueba
      76            9 :   testFile = std::filesystem::path{"../examples/userTypes/classes.nc"};
      77              :   // Analizar el archivo fuente
      78            9 :   result = lexer.analyze(testFile);
      79              :   // Verificar que el análisis fue exitoso
      80            9 :   REQUIRE(result.has_value());
      81              :   // Verificar que el TokenStream no esté vacío
      82            9 :   REQUIRE(result->size() == 60);
      83              : 
      84              :   // Ruta al archivo fuente de prueba
      85            9 :   testFile = std::filesystem::path{"../examples/hsufhuhdf"};
      86              :   // Analizar el archivo fuente
      87            9 :   result = lexer.analyze(testFile);
      88              :   // Verificar que el análisis fue exitoso
      89            9 :   REQUIRE(result.error().type() == nicole::ERROR_TYPE::FILE_EXTENSION);
      90              : 
      91              :   // Ruta al archivo fuente de prueba
      92            9 :   testFile = std::filesystem::path{"../examples/unmatched/unmatched"};
      93              :   // Analizar el archivo fuente
      94            9 :   result = lexer.analyze(testFile);
      95              :   // Verificar que el análisis fue exitoso
      96            9 :   REQUIRE(result.error().type() == nicole::ERROR_TYPE::FILE_EXTENSION);
      97              : 
      98              :   // Ruta al archivo fuente de prueba
      99            9 :   testFile = std::filesystem::path{"../examples/unmatched/unmatched.nc"};
     100              :   // Analizar el archivo fuente
     101            9 :   result = lexer.analyze(testFile);
     102              :   // Verificar que el análisis fue exitoso
     103            9 :   REQUIRE(result.error().type() == nicole::ERROR_TYPE::CHECK_UNMATCHED);
     104            9 : }
        

Generated by: LCOV version 2.0-1