• Logging.cpp
  • #define CATCH_CONFIG_MAIN
    
    #define WINDOWS_LEAN_AND_MEAN
    
    #include <catch.h>
    #include <thread>
    #include <chrono>
    #include <iostream>
    
    #include <Gorgon/Utils/Logging.h>
    
    TEST_CASE( "Console test", "[Logger]") {
    	
    	Gorgon::Utils::Logger logger("Test module", true, true);
    	
    	std::stringstream ss;
    	logger.InitializeStream(ss);
    	
    	logger<<"Hello "<<5;
    	
    	std::this_thread::sleep_for(std::chrono::seconds(1));
    	
    	logger<<"t"<<std::endl<<"a";
        
        logger.SetSection("Changed");
        logger.SetMarkDate(false);
    	logger.Log("One more log! ");
    	
    	ss.seekg(0, std::ios::beg);
    	
    	std::string s1, s2;
    	ss>>s1; //date
    	ss>>s2; //time
    	
    	Gorgon::Time::Date d(s1+"T"+s2), now = Gorgon::Time::Date::Now();
    	
    	REQUIRE( (now - d) < 2);
    	
    	ss>>s1; //section-1
    	REQUIRE(s1 == "Test");
    	ss>>s1; //section-2
    	REQUIRE(s1 == "module");
    	
    	ss>>s1; //message-1
    	REQUIRE(s1 == "Hello");
    	ss>>s1; //message-2
    	REQUIRE(s1 == "5");
    	
    	ss>>s1>>s1>>s1>>s1>>s1;
    	REQUIRE(s1 == "t");
    	char c;
    	ss.read(&c, 1);
    	REQUIRE( (c=='\n' || c=='\r') );
        
        ss>>s1; //a
        
        ss>>s1>>s1;
        REQUIRE(s1 == "Changed");
        ss>>s1;
        REQUIRE(s1 == "Error!");
        
        ss.str("");
        
        logger.SetMarkTime(false);
        logger<<"Test2";
    
        ss>>s1;
        REQUIRE(s1 == "Changed");
        ss>>s1;
        REQUIRE(s1 == "Test2");
        
        logger.DisableColor();
        REQUIRE(logger.IsColorEnabled() == false);
        
        
        logger.Log("Finally", Gorgon::Utils::Logger::Success);
    
        ss>>s1;
        REQUIRE(s1 == "Changed");
        ss>>s1;
        REQUIRE(s1 == "Success:");
        ss>>s1;
        REQUIRE(s1 == "Finally");
    }