#include <SimCore/UtilFunctions.hpp>
#include <string>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
#include <loguru.hpp>




SCENARIO("Testing the SimCorePositionClass")
{
  GIVEN("different position in different forms")
  {
   
    std::string s1 = "hello.world.guy";
    std::string s2 = "my;Name;is;henry";

    std::string ownIP = SimCore::UtilFunctions::getOwnIP();
    LOG_S(INFO)<<ownIP;
    auto ip = SimCore::UtilFunctions::explode(ownIP, '.');
    ip[3] = "255";
    LOG_S(INFO)<< ip[0]+"."+ip[1]+"."+ip[2]+"."+ip[3];

    LOG_S(INFO)<<SimCore::UtilFunctions::implode(ip, '.');


    WHEN("constructing Position Object with data")
    {
        auto v1 = SimCore::UtilFunctions::explode(s1, '.');
        auto v2 = SimCore::UtilFunctions::explode(s2, ';');
        auto v3 = SimCore::UtilFunctions::explode(s2, '.');

        
      THEN("positions attributes are correct")
      {
        REQUIRE(v1.size() == 3);
        REQUIRE(v1.begin()->compare("hello") == 0);

        REQUIRE(v2.size() == 4);
        REQUIRE(v2[1].compare("Name") == 0);
        REQUIRE(ownIP.size() > 0);
        REQUIRE(ip.size() == 4);

    

      } //THEN
    } // WHEN
  } // GIVEN
} //SCENARIO