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

            Line data    Source code
       1              : #include "../inc/lexicalAnalysis/token.h"
       2              : #include <catch2/catch_test_macros.hpp>
       3              : 
       4           36 : TEST_CASE("Pruebas de la clase Token", "[token]") {
       5           36 :   using nicole::Location;
       6           36 :   using nicole::Token;
       7           36 :   using nicole::TokenType;
       8           36 :   using std::filesystem::path;
       9              : 
      10           36 :   SECTION("Constructor y métodos de acceso") {
      11            9 :     const Token token{TokenType::NUMBER_INT, "123", Location{"archivo.cpp", 10, 5}};
      12            9 :     REQUIRE(token.type() == TokenType::NUMBER_INT);
      13            9 :     REQUIRE(token.raw() == "123");
      14            9 :     REQUIRE(token.location().file() == path{"archivo.cpp"});
      15            9 :     REQUIRE(token.location().row() == 10);
      16            9 :     REQUIRE(token.location().col() == 5);
      17            9 :   }
      18              : 
      19           36 :   SECTION("Información de ubicación formateada") {
      20            9 :     const Token token{TokenType::STRING, "\"hola\"", Location{"main.cpp", 20, 15}};
      21            9 :     REQUIRE(token.locInfo() == "main.cpp 20:15");
      22            9 :   }
      23              : 
      24           36 :   SECTION("Tokens con diferentes tipos y valores") {
      25            9 :     const Token tokenFloat{TokenType::NUMBER_FLOAT, "3.14",
      26            9 :                      Location{"math.cpp", 5, 10}};
      27            9 :     REQUIRE(tokenFloat.type() == TokenType::NUMBER_FLOAT);
      28            9 :     REQUIRE(tokenFloat.raw() == "3.14");
      29              : 
      30            9 :     const Token tokenId{TokenType::ID, "variable", Location{"vars.cpp", 8, 2}};
      31            9 :     REQUIRE(tokenId.type() == TokenType::ID);
      32            9 :     REQUIRE(tokenId.raw() == "variable");
      33            9 :   }
      34              : 
      35           36 :   SECTION("Comparación de tokens") {
      36            9 :     const Token token1{TokenType::LET, "let", Location{"script.nic", 1, 1}};
      37            9 :     const Token token2{TokenType::LET, "let", Location{"script.nic", 1, 1}};
      38            9 :     const Token token3{TokenType::CONST, "const", Location{"script.nic", 1, 5}};
      39              : 
      40            9 :     REQUIRE(token1.type() == token2.type());
      41            9 :     REQUIRE(token1.raw() == token2.raw());
      42            9 :     REQUIRE(token1.location().file() == token2.location().file());
      43            9 :     REQUIRE(token1.location().row() == token2.location().row());
      44            9 :     REQUIRE(token1.location().col() == token2.location().col());
      45              : 
      46            9 :     REQUIRE(token1.type() != token3.type());
      47            9 :     REQUIRE(token1.raw() != token3.raw());
      48            9 :     REQUIRE(token1.location().col() != token3.location().col());
      49            9 :   }
      50           36 : }
        

Generated by: LCOV version 2.0-1