Merge commit 'a4163d8b1b2f6c012c0e1d26f90815879a743aa8' as 'vendor/spdlog'
This commit is contained in:
		
							
								
								
									
										19
									
								
								vendor/spdlog/tests/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/spdlog/tests/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| # | ||||
| # Tests | ||||
| # | ||||
|  | ||||
| enable_testing() | ||||
|  | ||||
| find_package(Threads) | ||||
|  | ||||
| # Build Catch unit tests | ||||
| add_library(catch INTERFACE) | ||||
| target_include_directories(catch INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) | ||||
|  | ||||
| file(GLOB catch_tests LIST_DIRECTORIES false RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp *.h *.hpp) | ||||
|  | ||||
| add_executable(catch_tests ${catch_tests}) | ||||
| target_link_libraries(catch_tests spdlog ${CMAKE_THREAD_LIBS_INIT}) | ||||
| add_test(NAME catch_tests COMMAND catch_tests) | ||||
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs") | ||||
|  | ||||
							
								
								
									
										28
									
								
								vendor/spdlog/tests/Makefile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vendor/spdlog/tests/Makefile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| CXX	?= g++ | ||||
| ifeq ($(STYLE),printf) | ||||
|     $(info *** PRINTF STYLE ***) | ||||
|     CXXFLAGS	=  -DSPDLOG_FMT_PRINTF -Wall  -pedantic -std=c++11 -pthread -O2 -I../include | ||||
| else | ||||
|     $(info *** FORMAT STYLE ***) | ||||
|     CXXFLAGS	=  -Wall  -pedantic -std=c++11 -pthread -O2 -I../include | ||||
| endif | ||||
| LDPFALGS = -pthread | ||||
|  | ||||
| CPP_FILES := $(wildcard *.cpp) | ||||
| OBJ_FILES := $(addprefix ./,$(notdir $(CPP_FILES:.cpp=.o))) | ||||
|  | ||||
|      | ||||
| tests: $(OBJ_FILES)     | ||||
| 	$(CXX) $(CXXFLAGS) $(LDPFALGS) -o $@ $^ | ||||
| 	mkdir -p logs | ||||
|  | ||||
| %.o: %.cpp | ||||
| 	$(CXX) $(CXXFLAGS) -c -o $@ $< | ||||
|  | ||||
| clean: | ||||
| 	rm -f tests *.o logs/*.txt      | ||||
|   | ||||
| rebuild: clean tests | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										9427
									
								
								vendor/spdlog/tests/catch.hpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9427
									
								
								vendor/spdlog/tests/catch.hpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										174
									
								
								vendor/spdlog/tests/cond_logging.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								vendor/spdlog/tests/cond_logging.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,174 @@ | ||||
|  | ||||
| #include "includes.h" | ||||
|  | ||||
| template<class T> | ||||
| std::string conditional_log(const bool flag, const T& what, spdlog::level::level_enum logger_level) | ||||
| { | ||||
|     std::ostringstream oss; | ||||
|     auto oss_sink = std::make_shared<spdlog::sinks::ostream_sink_mt>(oss); | ||||
|  | ||||
|     spdlog::logger oss_logger("oss", oss_sink); | ||||
|     oss_logger.set_level(logger_level); | ||||
|     oss_logger.set_pattern("%v"); | ||||
|  | ||||
|     switch (logger_level) | ||||
|     { | ||||
|     case spdlog::level::trace: | ||||
|         oss_logger.trace_if(flag, what); | ||||
|         break; | ||||
|     case spdlog::level::debug: | ||||
|         oss_logger.debug_if(flag, what); | ||||
|         break; | ||||
|     case spdlog::level::info: | ||||
|         oss_logger.info_if(flag, what); | ||||
|         break; | ||||
|     case spdlog::level::warn: | ||||
|         oss_logger.warn_if(flag, what); | ||||
|         break; | ||||
|     case spdlog::level::err: | ||||
|         oss_logger.error_if(flag, what); | ||||
|         break; | ||||
|     case spdlog::level::critical: | ||||
|         oss_logger.critical_if(flag, what); | ||||
|         break; | ||||
|     default: | ||||
|         break; | ||||
|     } | ||||
|  | ||||
|     return oss.str().substr(0, oss.str().length() - spdlog::details::os::eol_size); | ||||
| } | ||||
|  | ||||
| template <typename Arg1, typename... Args> | ||||
| std::string conditional_log_varags(spdlog::level::level_enum logger_level, const bool flag, const char* fmt, const Arg1& arg1, const Args&... args) | ||||
| { | ||||
|     std::ostringstream oss; | ||||
|     auto oss_sink = std::make_shared<spdlog::sinks::ostream_sink_mt>(oss); | ||||
|  | ||||
|     spdlog::logger oss_logger("oss", oss_sink); | ||||
|     oss_logger.set_level(logger_level); | ||||
|     oss_logger.set_pattern("%v"); | ||||
|  | ||||
|     switch (logger_level) | ||||
|     { | ||||
|     case spdlog::level::trace: | ||||
|         oss_logger.trace_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::debug: | ||||
|         oss_logger.debug_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::info: | ||||
|         oss_logger.info_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::warn: | ||||
|         oss_logger.warn_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::err: | ||||
|         oss_logger.error_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::critical: | ||||
|         oss_logger.critical_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     default: | ||||
|         break; | ||||
|     } | ||||
|  | ||||
|     return oss.str().substr(0, oss.str().length() - spdlog::details::os::eol_size); | ||||
| } | ||||
|  | ||||
| #ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT | ||||
|  | ||||
| template <typename Arg1, typename... Args> | ||||
| std::wstring conditional_log_varags(spdlog::level::level_enum logger_level, const bool flag, const wchar_t* fmt, const Arg1& arg1, const Args&... args) | ||||
| { | ||||
|     std::wstringstream oss; | ||||
|     auto oss_sink = std::make_shared<spdlog::sinks::ostream_sink_mt>(oss); | ||||
|  | ||||
|     spdlog::logger oss_logger("oss", oss_sink); | ||||
|     oss_logger.set_level(logger_level); | ||||
|     oss_logger.set_pattern("%v"); | ||||
|  | ||||
|     switch (logger_level) | ||||
|     { | ||||
|     case spdlog::level::trace: | ||||
|         oss_logger.trace_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::debug: | ||||
|         oss_logger.debug_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::info: | ||||
|         oss_logger.info_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::warn: | ||||
|         oss_logger.warn_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::err: | ||||
|         oss_logger.error_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     case spdlog::level::critical: | ||||
|         oss_logger.critical_if(flag, fmt, arg1, args...); | ||||
|         break; | ||||
|     default: | ||||
|         break; | ||||
|     } | ||||
|  | ||||
|     return oss.str().substr(0, oss.str().length() - spdlog::details::os::eol_size); | ||||
| } | ||||
|  | ||||
| #endif // SPDLOG_WCHAR_TO_UTF8_SUPPORT | ||||
|  | ||||
| TEST_CASE("conditional_trace_simple", "[conditional_trace_simple]") | ||||
| { | ||||
|     //const char | ||||
|     for (auto i = 0; i < 2; i++) | ||||
|     { | ||||
|         REQUIRE(conditional_log((i % 2 == 0), "Hello", spdlog::level::trace) == ( i % 2 == 0 ? "Hello" : "")); | ||||
|         REQUIRE(conditional_log((i % 2 == 0), "Hello", spdlog::level::debug) == (i % 2 == 0 ? "Hello" : "")); | ||||
|         REQUIRE(conditional_log((i % 2 == 0), "Hello", spdlog::level::info) == (i % 2 == 0 ? "Hello" : "")); | ||||
|         REQUIRE(conditional_log((i % 2 == 0), "Hello", spdlog::level::warn) == (i % 2 == 0 ? "Hello" : "")); | ||||
|         REQUIRE(conditional_log((i % 2 == 0), "Hello", spdlog::level::err) == (i % 2 == 0 ? "Hello" : "")); | ||||
|         REQUIRE(conditional_log((i % 2 == 0), "Hello", spdlog::level::critical) == (i % 2 == 0 ? "Hello" : "")); | ||||
|     } | ||||
| } | ||||
|  | ||||
| TEST_CASE("conditional_trace_varargs", "[conditional_trace_varargs]") | ||||
| { | ||||
|     //const char | ||||
|     for (auto i = 0; i < 2; i++) | ||||
|     { | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::trace, (i % 2 == 0), "Hello {}", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::debug, (i % 2 == 0), "Hello {}", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::info, (i % 2 == 0), "Hello {}", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::warn, (i % 2 == 0), "Hello {}", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::err, (i % 2 == 0), "Hello {}", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::critical, (i % 2 == 0), "Hello {}", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|  | ||||
| #ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::trace, (i % 2 == 0), L"Hello {}", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::debug, (i % 2 == 0), L"Hello {}", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::info, (i % 2 == 0), L"Hello {}", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::warn, (i % 2 == 0), L"Hello {}", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::err, (i % 2 == 0), L"Hello {}", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::critical, (i % 2 == 0), L"Hello {}", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
| #endif // SPDLOG_WCHAR_TO_UTF8_SUPPORT | ||||
|  | ||||
| #else | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::trace, (i % 2 == 0), "Hello %d", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::debug, (i % 2 == 0), "Hello %d", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::info, (i % 2 == 0), "Hello %d", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::warn, (i % 2 == 0), "Hello %d", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::err, (i % 2 == 0), "Hello %d", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::critical, (i % 2 == 0), "Hello %d", i) == (i % 2 == 0 ? "Hello " + std::to_string(i) : "")); | ||||
|  | ||||
| #ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::trace, (i % 2 == 0), L"Hello %d", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::debug, (i % 2 == 0), L"Hello %d", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::info, (i % 2 == 0), L"Hello %d", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::warn, (i % 2 == 0), L"Hello %d", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::err, (i % 2 == 0), L"Hello %d", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
|         REQUIRE(conditional_log_varags(spdlog::level::critical, (i % 2 == 0), L"Hello %d", i) == (i % 2 == 0 ? L"Hello " + std::to_wstring(i) : L"")); | ||||
| #endif // SPDLOG_WCHAR_TO_UTF8_SUPPORT | ||||
|  | ||||
| #endif // !defined(SPDLOG_FMT_PRINTF) | ||||
|     } | ||||
| } | ||||
							
								
								
									
										126
									
								
								vendor/spdlog/tests/errors.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								vendor/spdlog/tests/errors.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | ||||
| /* | ||||
| * This content is released under the MIT License as specified in https://raw.githubusercontent.com/gabime/spdlog/master/LICENSE | ||||
| */ | ||||
| #include "includes.h" | ||||
|  | ||||
| #include<iostream> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| class failing_sink: public spdlog::sinks::sink | ||||
| { | ||||
|     void log(const spdlog::details::log_msg& msg) override | ||||
|     { | ||||
|         throw std::runtime_error("some error happened during log"); | ||||
|     } | ||||
|  | ||||
|     void flush() | ||||
|     {} | ||||
| }; | ||||
|  | ||||
| TEST_CASE("default_error_handler", "[errors]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     std::string filename = "logs/simple_log.txt"; | ||||
|  | ||||
|     auto logger = spdlog::create<spdlog::sinks::simple_file_sink_mt>("logger", filename, true); | ||||
|     logger->set_pattern("%v"); | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|     logger->info("Test message {} {}", 1); | ||||
|     logger->info("Test message {}", 2); | ||||
| #else | ||||
|     logger->info("Test message %d %d", 1); | ||||
|     logger->info("Test message %d", 2); | ||||
| #endif | ||||
|     logger->flush(); | ||||
|  | ||||
|     REQUIRE(file_contents(filename) == std::string("Test message 2\n")); | ||||
|     REQUIRE(count_lines(filename) == 1); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| struct custom_ex | ||||
| {}; | ||||
| TEST_CASE("custom_error_handler", "[errors]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     std::string filename = "logs/simple_log.txt"; | ||||
|     auto logger = spdlog::create<spdlog::sinks::simple_file_sink_mt>("logger", filename, true); | ||||
|     logger->flush_on(spdlog::level::info); | ||||
|     logger->set_error_handler([=](const std::string& msg) | ||||
|     { | ||||
|         throw custom_ex(); | ||||
|     }); | ||||
|     logger->info("Good message #1"); | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|     REQUIRE_THROWS_AS(logger->info("Bad format msg {} {}", "xxx"), custom_ex); | ||||
| #else | ||||
|     REQUIRE_THROWS_AS(logger->info("Bad format msg %s %s", "xxx"), custom_ex); | ||||
| #endif | ||||
|     logger->info("Good message #2"); | ||||
|     REQUIRE(count_lines(filename) == 2); | ||||
| } | ||||
|  | ||||
| TEST_CASE("default_error_handler2", "[errors]]") | ||||
| { | ||||
|  | ||||
|     auto logger = spdlog::create<failing_sink>("failed_logger"); | ||||
|     logger->set_error_handler([=](const std::string& msg) | ||||
|     { | ||||
|         throw custom_ex(); | ||||
|     }); | ||||
|     REQUIRE_THROWS_AS(logger->info("Some message"), custom_ex); | ||||
| } | ||||
|  | ||||
| TEST_CASE("async_error_handler", "[errors]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     std::string err_msg("log failed with some msg"); | ||||
|     spdlog::set_async_mode(128); | ||||
|     std::string filename = "logs/simple_async_log.txt"; | ||||
|     { | ||||
|         auto logger = spdlog::create<spdlog::sinks::simple_file_sink_mt>("logger", filename, true); | ||||
|         logger->set_error_handler([=](const std::string& msg) | ||||
|         { | ||||
|             std::ofstream ofs("logs/custom_err.txt"); | ||||
|             if (!ofs) throw std::runtime_error("Failed open logs/custom_err.txt"); | ||||
|             ofs << err_msg; | ||||
|         }); | ||||
|         logger->info("Good message #1"); | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|         logger->info("Bad format msg {} {}", "xxx"); | ||||
| #else | ||||
|         logger->info("Bad format msg %s %s", "xxx"); | ||||
| #endif | ||||
|         logger->info("Good message #2"); | ||||
|         spdlog::drop("logger"); //force logger to drain the queue and shutdown | ||||
|         spdlog::set_sync_mode(); | ||||
|     } | ||||
|     REQUIRE(count_lines(filename) == 2); | ||||
|     REQUIRE(file_contents("logs/custom_err.txt") == err_msg); | ||||
| } | ||||
|  | ||||
| // Make sure async error handler is executed | ||||
| TEST_CASE("async_error_handler2", "[errors]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     std::string err_msg("This is async handler error message"); | ||||
|     spdlog::set_async_mode(128); | ||||
|     { | ||||
|         auto logger = spdlog::create<failing_sink>("failed_logger"); | ||||
|         logger->set_error_handler([=](const std::string& msg) | ||||
|         { | ||||
|             std::ofstream ofs("logs/custom_err2.txt"); | ||||
|             if (!ofs) throw std::runtime_error("Failed open logs/custom_err2.txt"); | ||||
|             ofs << err_msg; | ||||
|         }); | ||||
|         logger->info("Hello failure"); | ||||
|         spdlog::drop("failed_logger"); //force logger to drain the queue and shutdown | ||||
|         spdlog::set_sync_mode(); | ||||
|     } | ||||
|  | ||||
|     REQUIRE(file_contents("logs/custom_err2.txt") == err_msg); | ||||
| } | ||||
							
								
								
									
										78
									
								
								vendor/spdlog/tests/file_helper.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								vendor/spdlog/tests/file_helper.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| /* | ||||
| * This content is released under the MIT License as specified in https://raw.githubusercontent.com/gabime/spdlog/master/LICENSE | ||||
| */ | ||||
| #include "includes.h" | ||||
|  | ||||
| using namespace spdlog::details; | ||||
|  | ||||
| static const std::string target_filename = "logs/file_helper_test.txt"; | ||||
|  | ||||
| static void write_with_helper(file_helper &helper, size_t howmany) | ||||
| { | ||||
|     log_msg msg; | ||||
|     msg.formatted << std::string(howmany, '1'); | ||||
|     helper.write(msg); | ||||
|     helper.flush(); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("file_helper_filename", "[file_helper::filename()]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|  | ||||
|     file_helper helper; | ||||
|     helper.open(target_filename); | ||||
|     REQUIRE(helper.filename() == target_filename); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| TEST_CASE("file_helper_size", "[file_helper::size()]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     size_t expected_size = 123; | ||||
|     { | ||||
|         file_helper helper; | ||||
|         helper.open(target_filename); | ||||
|         write_with_helper(helper, expected_size); | ||||
|         REQUIRE(static_cast<size_t>(helper.size()) == expected_size); | ||||
|     } | ||||
|     REQUIRE(get_filesize(target_filename) == expected_size); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("file_helper_exists", "[file_helper::file_exists()]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     REQUIRE(!file_helper::file_exists(target_filename)); | ||||
|     file_helper helper; | ||||
|     helper.open(target_filename); | ||||
|     REQUIRE(file_helper::file_exists(target_filename)); | ||||
| } | ||||
|  | ||||
| TEST_CASE("file_helper_reopen", "[file_helper::reopen()]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     file_helper helper; | ||||
|     helper.open(target_filename); | ||||
|     write_with_helper(helper, 12); | ||||
|     REQUIRE(helper.size() == 12); | ||||
|     helper.reopen(true); | ||||
|     REQUIRE(helper.size() == 0); | ||||
| } | ||||
|  | ||||
| TEST_CASE("file_helper_reopen2", "[file_helper::reopen(false)]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     size_t expected_size = 14; | ||||
|     file_helper helper; | ||||
|     helper.open(target_filename); | ||||
|     write_with_helper(helper, expected_size); | ||||
|     REQUIRE(helper.size() == expected_size); | ||||
|     helper.reopen(false); | ||||
|     REQUIRE(helper.size() == expected_size); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										190
									
								
								vendor/spdlog/tests/file_log.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								vendor/spdlog/tests/file_log.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,190 @@ | ||||
| /* | ||||
|  * This content is released under the MIT License as specified in https://raw.githubusercontent.com/gabime/spdlog/master/LICENSE | ||||
|  */ | ||||
| #include "includes.h" | ||||
|  | ||||
|  | ||||
| TEST_CASE("simple_file_logger", "[simple_logger]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     std::string filename = "logs/simple_log"; | ||||
|  | ||||
|     auto logger = spdlog::create<spdlog::sinks::simple_file_sink_mt>("logger", filename); | ||||
|     logger->set_pattern("%v"); | ||||
|  | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|     logger->info("Test message {}", 1); | ||||
|     logger->info("Test message {}", 2); | ||||
| #else | ||||
|     logger->info("Test message %d", 1); | ||||
|     logger->info("Test message %d", 2); | ||||
| #endif | ||||
|     logger->flush(); | ||||
|     REQUIRE(file_contents(filename) == std::string("Test message 1\nTest message 2\n")); | ||||
|     REQUIRE(count_lines(filename) == 2); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("flush_on", "[flush_on]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     std::string filename = "logs/simple_log"; | ||||
|  | ||||
|     auto logger = spdlog::create<spdlog::sinks::simple_file_sink_mt>("logger", filename); | ||||
|     logger->set_pattern("%v"); | ||||
|     logger->set_level(spdlog::level::trace); | ||||
|     logger->flush_on(spdlog::level::info); | ||||
|     logger->trace("Should not be flushed"); | ||||
|     REQUIRE(count_lines(filename) == 0); | ||||
|  | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|     logger->info("Test message {}", 1); | ||||
|     logger->info("Test message {}", 2); | ||||
| #else | ||||
|     logger->info("Test message %d", 1); | ||||
|     logger->info("Test message %d", 2); | ||||
| #endif | ||||
|     logger->flush(); | ||||
|     REQUIRE(file_contents(filename) == std::string("Should not be flushed\nTest message 1\nTest message 2\n")); | ||||
|     REQUIRE(count_lines(filename) == 3); | ||||
| } | ||||
|  | ||||
| TEST_CASE("rotating_file_logger1", "[rotating_logger]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     std::string basename = "logs/rotating_log"; | ||||
|     auto logger = spdlog::rotating_logger_mt("logger", basename, 1024, 0); | ||||
|  | ||||
|     for (int i = 0; i < 10; ++i) | ||||
|     { | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|         logger->info("Test message {}", i); | ||||
| #else | ||||
|         logger->info("Test message %d", i); | ||||
| #endif | ||||
|     } | ||||
|  | ||||
|     logger->flush(); | ||||
|     auto filename = basename; | ||||
|     REQUIRE(count_lines(filename) == 10); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("rotating_file_logger2", "[rotating_logger]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     std::string basename = "logs/rotating_log"; | ||||
|     auto logger = spdlog::rotating_logger_mt("logger", basename, 1024, 1); | ||||
|     for (int i = 0; i < 10; ++i) | ||||
|         logger->info("Test message {}", i); | ||||
|  | ||||
|     logger->flush(); | ||||
|     auto filename = basename; | ||||
|     REQUIRE(count_lines(filename) == 10); | ||||
|     for (int i = 0; i < 1000; i++) | ||||
|     { | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|         logger->info("Test message {}", i); | ||||
| #else | ||||
|         logger->info("Test message %d", i); | ||||
| #endif | ||||
|     } | ||||
|  | ||||
|     logger->flush(); | ||||
|     REQUIRE(get_filesize(filename) <= 1024); | ||||
|     auto filename1 = basename + ".1"; | ||||
|     REQUIRE(get_filesize(filename1) <= 1024); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("daily_logger", "[daily_logger]]") | ||||
| { | ||||
|     prepare_logdir(); | ||||
|     //calculate filename (time based) | ||||
|     std::string basename = "logs/daily_log"; | ||||
|     std::tm tm = spdlog::details::os::localtime(); | ||||
|     fmt::MemoryWriter w; | ||||
|     w.write("{}_{:04d}-{:02d}-{:02d}_{:02d}-{:02d}", basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min); | ||||
|  | ||||
|     auto logger = spdlog::daily_logger_mt("logger", basename, 0, 0); | ||||
|     logger->flush_on(spdlog::level::info); | ||||
|     for (int i = 0; i < 10; ++i) | ||||
|     { | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|         logger->info("Test message {}", i); | ||||
| #else | ||||
|         logger->info("Test message %d", i); | ||||
| #endif | ||||
|     } | ||||
|  | ||||
|     auto filename = w.str(); | ||||
|     REQUIRE(count_lines(filename) == 10); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("daily_logger with dateonly calculator", "[daily_logger_dateonly]]") | ||||
| { | ||||
|     using sink_type = spdlog::sinks::daily_file_sink< | ||||
|                       std::mutex, | ||||
|                       spdlog::sinks::dateonly_daily_file_name_calculator>; | ||||
|  | ||||
|     prepare_logdir(); | ||||
|     //calculate filename (time based) | ||||
|     std::string basename = "logs/daily_dateonly"; | ||||
|     std::tm tm = spdlog::details::os::localtime(); | ||||
|     fmt::MemoryWriter w; | ||||
|     w.write("{}_{:04d}-{:02d}-{:02d}", basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); | ||||
|  | ||||
|     auto logger = spdlog::create<sink_type>("logger", basename, 0, 0); | ||||
|     for (int i = 0; i < 10; ++i) | ||||
|     { | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|         logger->info("Test message {}", i); | ||||
| #else | ||||
|         logger->info("Test message %d", i); | ||||
| #endif | ||||
|     } | ||||
|     logger->flush(); | ||||
|     auto filename = w.str(); | ||||
|     REQUIRE(count_lines(filename) == 10); | ||||
| } | ||||
|  | ||||
| struct custom_daily_file_name_calculator | ||||
| { | ||||
|     static spdlog::filename_t calc_filename(const spdlog::filename_t& basename) | ||||
|     { | ||||
|         std::tm tm = spdlog::details::os::localtime(); | ||||
|         fmt::MemoryWriter w; | ||||
|         w.write("{}{:04d}{:02d}{:02d}", basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); | ||||
|         return w.str(); | ||||
|     } | ||||
| }; | ||||
|  | ||||
| TEST_CASE("daily_logger with custom calculator", "[daily_logger_custom]]") | ||||
| { | ||||
|     using sink_type = spdlog::sinks::daily_file_sink< | ||||
|                       std::mutex, | ||||
|                       custom_daily_file_name_calculator>; | ||||
|  | ||||
|     prepare_logdir(); | ||||
|     //calculate filename (time based) | ||||
|     std::string basename = "logs/daily_dateonly"; | ||||
|     std::tm tm = spdlog::details::os::localtime(); | ||||
|     fmt::MemoryWriter w; | ||||
|     w.write("{}{:04d}{:02d}{:02d}", basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); | ||||
|  | ||||
|     auto logger = spdlog::create<sink_type>("logger", basename, 0, 0); | ||||
|     for (int i = 0; i < 10; ++i) | ||||
|     { | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
|         logger->info("Test message {}", i); | ||||
| #else | ||||
|         logger->info("Test message %d", i); | ||||
| #endif | ||||
|     } | ||||
|  | ||||
|     logger->flush(); | ||||
|     auto filename = w.str(); | ||||
|     REQUIRE(count_lines(filename) == 10); | ||||
| } | ||||
|  | ||||
							
								
								
									
										56
									
								
								vendor/spdlog/tests/format.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								vendor/spdlog/tests/format.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
|  | ||||
| #include "includes.h" | ||||
|  | ||||
| template<class T> | ||||
| std::string log_info(const T& what, spdlog::level::level_enum logger_level = spdlog::level::info) | ||||
| { | ||||
|  | ||||
|     std::ostringstream oss; | ||||
|     auto oss_sink = std::make_shared<spdlog::sinks::ostream_sink_mt>(oss); | ||||
|  | ||||
|     spdlog::logger oss_logger("oss", oss_sink); | ||||
|     oss_logger.set_level(logger_level); | ||||
|     oss_logger.set_pattern("%v"); | ||||
|     oss_logger.info(what); | ||||
|  | ||||
|     return oss.str().substr(0, oss.str().length() - spdlog::details::os::eol_size); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| TEST_CASE("basic_logging ", "[basic_logging]") | ||||
| { | ||||
|     //const char | ||||
|     REQUIRE(log_info("Hello") == "Hello"); | ||||
|     REQUIRE(log_info("") == ""); | ||||
|  | ||||
|     //std::string | ||||
|     REQUIRE(log_info(std::string("Hello")) == "Hello"); | ||||
|     REQUIRE(log_info(std::string()) == std::string()); | ||||
|  | ||||
|     //Numbers | ||||
|     REQUIRE(log_info(5) == "5"); | ||||
|     REQUIRE(log_info(5.6) == "5.6"); | ||||
|  | ||||
|     //User defined class | ||||
|     //REQUIRE(log_info(some_logged_class("some_val")) == "some_val"); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("log_levels", "[log_levels]") | ||||
| { | ||||
|     REQUIRE(log_info("Hello", spdlog::level::err) == ""); | ||||
|     REQUIRE(log_info("Hello", spdlog::level::critical) == ""); | ||||
|     REQUIRE(log_info("Hello", spdlog::level::info) == "Hello"); | ||||
|     REQUIRE(log_info("Hello", spdlog::level::debug) == "Hello"); | ||||
|     REQUIRE(log_info("Hello", spdlog::level::trace) == "Hello"); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										19
									
								
								vendor/spdlog/tests/includes.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/spdlog/tests/includes.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include <cstdio> | ||||
| #include <fstream> | ||||
| #include <string> | ||||
| #include <ostream> | ||||
| #include <chrono> | ||||
| #include <exception> | ||||
|  | ||||
| #include "catch.hpp" | ||||
| #include "utils.h" | ||||
|  | ||||
| #define SPDLOG_TRACE_ON | ||||
| #define SPDLOG_DEBUG_ON | ||||
|  | ||||
| #include "../include/spdlog/spdlog.h" | ||||
| #include "../include/spdlog/sinks/null_sink.h" | ||||
| #include "../include/spdlog/sinks/ostream_sink.h" | ||||
|  | ||||
							
								
								
									
										12
									
								
								vendor/spdlog/tests/install_libcxx.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								vendor/spdlog/tests/install_libcxx.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # Install libc++ under travis | ||||
|  | ||||
| svn --quiet co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx | ||||
| mkdir libcxx/build | ||||
| (cd libcxx/build && cmake .. -DLIBCXX_CXX_ABI=libstdc++ -DLIBCXX_CXX_ABI_INCLUDE_PATHS="/usr/include/c++/4.6;/usr/include/c++/4.6/x86_64-linux-gnu") | ||||
| make -C libcxx/build cxx -j2 | ||||
| sudo cp libcxx/build/lib/libc++.so.1.0 /usr/lib/ | ||||
| sudo cp -r libcxx/build/include/c++/v1 /usr/include/c++/v1/ | ||||
| sudo ln -sf /usr/lib/libc++.so.1.0 /usr/lib/libc++.so | ||||
| sudo ln -sf /usr/lib/libc++.so.1.0 /usr/lib/libc++.so.1 | ||||
							
								
								
									
										2
									
								
								vendor/spdlog/tests/main.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								vendor/spdlog/tests/main.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| #define CATCH_CONFIG_MAIN | ||||
| #include "catch.hpp" | ||||
							
								
								
									
										84
									
								
								vendor/spdlog/tests/registry.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								vendor/spdlog/tests/registry.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| #include "includes.h" | ||||
|  | ||||
| static const char *tested_logger_name = "null_logger"; | ||||
| static const char *tested_logger_name2 = "null_logger2"; | ||||
|  | ||||
| TEST_CASE("register_drop", "[registry]") | ||||
| { | ||||
|     spdlog::drop_all(); | ||||
|     spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name); | ||||
|     REQUIRE(spdlog::get(tested_logger_name)!=nullptr); | ||||
|     //Throw if registring existing name | ||||
|     REQUIRE_THROWS_AS(spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name), spdlog::spdlog_ex); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("explicit register" "[registry]") | ||||
| { | ||||
|     spdlog::drop_all(); | ||||
|     auto logger = std::make_shared<spdlog::logger>(tested_logger_name, std::make_shared<spdlog::sinks::null_sink_st>()); | ||||
|     spdlog::register_logger(logger); | ||||
|     REQUIRE(spdlog::get(tested_logger_name) != nullptr); | ||||
|     //Throw if registring existing name | ||||
|     REQUIRE_THROWS_AS(spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name), spdlog::spdlog_ex); | ||||
| } | ||||
|  | ||||
| TEST_CASE("apply_all" "[registry]") | ||||
| { | ||||
|     spdlog::drop_all(); | ||||
|     auto logger = std::make_shared<spdlog::logger>(tested_logger_name, std::make_shared<spdlog::sinks::null_sink_st>()); | ||||
|     spdlog::register_logger(logger); | ||||
|     auto logger2 = std::make_shared<spdlog::logger>(tested_logger_name2, std::make_shared<spdlog::sinks::null_sink_st>()); | ||||
|     spdlog::register_logger(logger2); | ||||
|  | ||||
|     int counter = 0; | ||||
|     spdlog::apply_all([&counter](std::shared_ptr<spdlog::logger> l) | ||||
|     { | ||||
|         counter++; | ||||
|     }); | ||||
|     REQUIRE(counter == 2); | ||||
|  | ||||
|     counter = 0; | ||||
|     spdlog::drop(tested_logger_name2); | ||||
|     spdlog::apply_all([&counter](std::shared_ptr<spdlog::logger> l) | ||||
|     { | ||||
|         REQUIRE(l->name() == tested_logger_name); | ||||
|         counter++; | ||||
|     } | ||||
|                      ); | ||||
|     REQUIRE(counter == 1); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| TEST_CASE("drop" "[registry]") | ||||
| { | ||||
|     spdlog::drop_all(); | ||||
|     spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name); | ||||
|     spdlog::drop(tested_logger_name); | ||||
|     REQUIRE_FALSE(spdlog::get(tested_logger_name)); | ||||
| } | ||||
|  | ||||
| TEST_CASE("drop_all" "[registry]") | ||||
| { | ||||
|     spdlog::drop_all(); | ||||
|     spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name); | ||||
|     spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name2); | ||||
|     spdlog::drop_all(); | ||||
|     REQUIRE_FALSE(spdlog::get(tested_logger_name)); | ||||
|     REQUIRE_FALSE(spdlog::get(tested_logger_name)); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("drop non existing" "[registry]") | ||||
| { | ||||
|     spdlog::drop_all(); | ||||
|     spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name); | ||||
|     spdlog::drop("some_name"); | ||||
|     REQUIRE_FALSE(spdlog::get("some_name")); | ||||
|     REQUIRE(spdlog::get(tested_logger_name)); | ||||
|     spdlog::drop_all(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										50
									
								
								vendor/spdlog/tests/test_macros.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								vendor/spdlog/tests/test_macros.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| /* | ||||
| * This content is released under the MIT License as specified in https://raw.githubusercontent.com/gabime/spdlog/master/LICENSE | ||||
| */ | ||||
|  | ||||
| #include "includes.h" | ||||
|  | ||||
| TEST_CASE("debug and trace w/o format string", "[macros]]") | ||||
| { | ||||
| 	prepare_logdir(); | ||||
| 	std::string filename = "logs/simple_log"; | ||||
|  | ||||
| 	auto logger = spdlog::create<spdlog::sinks::simple_file_sink_mt>("logger", filename); | ||||
| 	logger->set_pattern("%v"); | ||||
| 	logger->set_level(spdlog::level::trace);		 | ||||
| 	 | ||||
| 	SPDLOG_TRACE(logger, "Test message 1"); | ||||
| 	//SPDLOG_DEBUG(logger, "Test message 2");	 | ||||
| 	SPDLOG_DEBUG(logger, "Test message 2"); | ||||
| 	logger->flush(); | ||||
| 	 | ||||
| 	REQUIRE(ends_with(file_contents(filename), "Test message 2\n")); | ||||
| 	REQUIRE(count_lines(filename) == 2); | ||||
| } | ||||
|  | ||||
|  | ||||
| TEST_CASE("debug and trace with format strings", "[macros]]") | ||||
| { | ||||
| 	prepare_logdir(); | ||||
| 	std::string filename = "logs/simple_log"; | ||||
|  | ||||
| 	auto logger = spdlog::create<spdlog::sinks::simple_file_sink_mt>("logger", filename); | ||||
| 	logger->set_pattern("%v"); | ||||
| 	logger->set_level(spdlog::level::trace); | ||||
|  | ||||
| #if !defined(SPDLOG_FMT_PRINTF) | ||||
| 	SPDLOG_TRACE(logger, "Test message {}", 1); | ||||
| 	//SPDLOG_DEBUG(logger, "Test message 2");	 | ||||
| 	SPDLOG_DEBUG(logger, "Test message {}", 222); | ||||
| #else | ||||
| 	SPDLOG_TRACE(logger, "Test message %d", 1); | ||||
| 	//SPDLOG_DEBUG(logger, "Test message 2");	 | ||||
| 	SPDLOG_DEBUG(logger, "Test message %d", 222); | ||||
| #endif | ||||
|  | ||||
| 	logger->flush(); | ||||
|  | ||||
| 	REQUIRE(ends_with(file_contents(filename), "Test message 222\n")); | ||||
| 	REQUIRE(count_lines(filename) == 2); | ||||
| } | ||||
|  | ||||
							
								
								
									
										28
									
								
								vendor/spdlog/tests/tests.sln
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vendor/spdlog/tests/tests.sln
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
|  | ||||
| Microsoft Visual Studio Solution File, Format Version 12.00 | ||||
| # Visual Studio 2015 | ||||
| VisualStudioVersion = 14.0 | ||||
| MinimumVisualStudioVersion = 10.0.40219.1 | ||||
| Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tests", "tests.vcxproj", "{59A07559-5F38-4DD6-A7FA-DB4153690B42}" | ||||
| EndProject | ||||
| Global | ||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| 		Debug|Win32 = Debug|Win32 | ||||
| 		Debug|x64 = Debug|x64 | ||||
| 		Release|Win32 = Release|Win32 | ||||
| 		Release|x64 = Release|x64 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
| 		{59A07559-5F38-4DD6-A7FA-DB4153690B42}.Debug|Win32.ActiveCfg = Debug|Win32 | ||||
| 		{59A07559-5F38-4DD6-A7FA-DB4153690B42}.Debug|Win32.Build.0 = Debug|Win32 | ||||
| 		{59A07559-5F38-4DD6-A7FA-DB4153690B42}.Debug|x64.ActiveCfg = Debug|x64 | ||||
| 		{59A07559-5F38-4DD6-A7FA-DB4153690B42}.Debug|x64.Build.0 = Debug|x64 | ||||
| 		{59A07559-5F38-4DD6-A7FA-DB4153690B42}.Release|Win32.ActiveCfg = Release|Win32 | ||||
| 		{59A07559-5F38-4DD6-A7FA-DB4153690B42}.Release|Win32.Build.0 = Release|Win32 | ||||
| 		{59A07559-5F38-4DD6-A7FA-DB4153690B42}.Release|x64.ActiveCfg = Release|x64 | ||||
| 		{59A07559-5F38-4DD6-A7FA-DB4153690B42}.Release|x64.Build.0 = Release|x64 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(SolutionProperties) = preSolution | ||||
| 		HideSolutionNode = FALSE | ||||
| 	EndGlobalSection | ||||
| EndGlobal | ||||
							
								
								
									
										146
									
								
								vendor/spdlog/tests/tests.vcxproj
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								vendor/spdlog/tests/tests.vcxproj
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,146 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
|       <Platform>Win32</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="Debug|x64"> | ||||
|       <Configuration>Debug</Configuration> | ||||
|       <Platform>x64</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="Release|Win32"> | ||||
|       <Configuration>Release</Configuration> | ||||
|       <Platform>Win32</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="Release|x64"> | ||||
|       <Configuration>Release</Configuration> | ||||
|       <Platform>x64</Platform> | ||||
|     </ProjectConfiguration> | ||||
|   </ItemGroup> | ||||
|   <PropertyGroup Label="Globals"> | ||||
|     <ProjectGuid>{59A07559-5F38-4DD6-A7FA-DB4153690B42}</ProjectGuid> | ||||
|     <RootNamespace>tests</RootNamespace> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||
|     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> | ||||
|     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||
|     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> | ||||
|     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros" /> | ||||
|   <PropertyGroup /> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <SDLCheck>true</SDLCheck> | ||||
|       <AdditionalIncludeDirectories>$(SolutionDir)\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <SubSystem>Console</SubSystem> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <SDLCheck>true</SDLCheck> | ||||
|       <PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <SubSystem>Console</SubSystem> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <SDLCheck>true</SDLCheck> | ||||
|       <AdditionalIncludeDirectories>$(SolutionDir)\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||
|       <OptimizeReferences>true</OptimizeReferences> | ||||
|       <SubSystem>Console</SubSystem> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <SDLCheck>true</SDLCheck> | ||||
|       <PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||
|       <OptimizeReferences>true</OptimizeReferences> | ||||
|       <SubSystem>Console</SubSystem> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="cond_logging.cpp" /> | ||||
|     <ClCompile Include="errors.cpp" /> | ||||
|     <ClCompile Include="file_helper.cpp" /> | ||||
|     <ClCompile Include="file_log.cpp" /> | ||||
|     <ClCompile Include="format.cpp" /> | ||||
|     <ClCompile Include="main.cpp" /> | ||||
|     <ClCompile Include="registry.cpp" /> | ||||
|     <ClCompile Include="test_macros.cpp" /> | ||||
|     <ClCompile Include="utils.cpp" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClInclude Include="catch.hpp" /> | ||||
|     <ClInclude Include="includes.h" /> | ||||
|     <ClInclude Include="utils.h" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
							
								
								
									
										57
									
								
								vendor/spdlog/tests/tests.vcxproj.filters
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								vendor/spdlog/tests/tests.vcxproj.filters
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="Source Files"> | ||||
|       <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> | ||||
|       <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> | ||||
|     </Filter> | ||||
|     <Filter Include="Header Files"> | ||||
|       <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> | ||||
|       <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> | ||||
|     </Filter> | ||||
|     <Filter Include="Resource Files"> | ||||
|       <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> | ||||
|       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="file_log.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="format.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="main.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="registry.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="file_helper.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="utils.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="errors.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="cond_logging.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="test_macros.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClInclude Include="includes.h"> | ||||
|       <Filter>Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="catch.hpp"> | ||||
|       <Filter>Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="utils.h"> | ||||
|       <Filter>Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
							
								
								
									
										56
									
								
								vendor/spdlog/tests/utils.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								vendor/spdlog/tests/utils.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| #include "includes.h" | ||||
|  | ||||
|  | ||||
| void prepare_logdir() | ||||
| { | ||||
|     spdlog::drop_all(); | ||||
| #ifdef _WIN32 | ||||
|     system("if not exist logs mkdir logs"); | ||||
|     system("del /F /Q logs\\*"); | ||||
| #else | ||||
|     auto rv = system("mkdir -p logs"); | ||||
|     rv = system("rm -f logs/*"); | ||||
|     (void)rv; | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| std::string file_contents(const std::string& filename) | ||||
| { | ||||
|     std::ifstream ifs(filename); | ||||
|     if (!ifs) | ||||
|         throw std::runtime_error("Failed open file "); | ||||
|     return std::string((std::istreambuf_iterator<char>(ifs)), | ||||
|                        (std::istreambuf_iterator<char>())); | ||||
|  | ||||
| } | ||||
|  | ||||
| std::size_t count_lines(const std::string& filename) | ||||
| { | ||||
|     std::ifstream ifs(filename); | ||||
|     if (!ifs) | ||||
|         throw std::runtime_error("Failed open file "); | ||||
|  | ||||
|     std::string line; | ||||
|     size_t counter = 0; | ||||
|     while(std::getline(ifs, line)) | ||||
|         counter++; | ||||
|     return counter; | ||||
| } | ||||
|  | ||||
| std::size_t get_filesize(const std::string& filename) | ||||
| { | ||||
|     std::ifstream ifs(filename, std::ifstream::ate | std::ifstream::binary); | ||||
|     if (!ifs) | ||||
|         throw std::runtime_error("Failed open file "); | ||||
|  | ||||
|     return static_cast<std::size_t>(ifs.tellg()); | ||||
| } | ||||
|  | ||||
|  | ||||
| // source: https://stackoverflow.com/a/2072890/192001 | ||||
| bool ends_with(std::string const & value, std::string const & ending) | ||||
| { | ||||
| 	if (ending.size() > value.size()) return false; | ||||
| 	return std::equal(ending.rbegin(), ending.rend(), value.rbegin()); | ||||
| } | ||||
							
								
								
									
										16
									
								
								vendor/spdlog/tests/utils.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vendor/spdlog/tests/utils.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include <string> | ||||
| #include<cstddef> | ||||
|  | ||||
| std::size_t count_lines(const std::string& filename); | ||||
|  | ||||
| void prepare_logdir(); | ||||
|  | ||||
| std::string file_contents(const std::string& filename); | ||||
|  | ||||
| std::size_t count_lines(const std::string& filename); | ||||
|  | ||||
| std::size_t get_filesize(const std::string& filename); | ||||
|  | ||||
| bool ends_with(std::string const & value, std::string const & ending); | ||||
		Reference in New Issue
	
	Block a user