1 // 2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #ifndef DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN 7 #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN 8 #endif 9 #include <doctest/doctest.h> 10 11 #include "UnitTests.hpp" 12 13 struct ConfigureLoggingFixture 14 { ConfigureLoggingFixtureConfigureLoggingFixture15 ConfigureLoggingFixture() 16 { 17 ConfigureLoggingTest(); 18 } 19 }; 20 21 22 23 TEST_SUITE("LoggerSuite") 24 { 25 TEST_CASE_FIXTURE(ConfigureLoggingFixture, "LoggerTest") 26 { 27 std::stringstream ss; 28 { 29 struct StreamRedirector 30 { 31 public: StreamRedirectorStreamRedirector32 StreamRedirector(std::ostream& stream, std::streambuf* newStreamBuffer) 33 : m_Stream(stream) 34 , m_BackupBuffer(m_Stream.rdbuf(newStreamBuffer)) 35 {} ~StreamRedirectorStreamRedirector36 ~StreamRedirector() { m_Stream.rdbuf(m_BackupBuffer); } 37 38 private: 39 std::ostream& m_Stream; 40 std::streambuf* m_BackupBuffer; 41 }; 42 43 StreamRedirector redirect(std::cout, ss.rdbuf()); 44 45 using namespace armnn; 46 SetLogFilter(LogSeverity::Trace); 47 SetAllLoggingSinks(true, false, false); 48 49 ARMNN_LOG(trace) << "My trace message; " << -2; 50 ARMNN_LOG(debug) << "My debug message; " << -1; 51 ARMNN_LOG(info) << "My info message; " << 0; 52 ARMNN_LOG(warning) << "My warning message; " << 1; 53 ARMNN_LOG(error) << "My error message; " << 2; 54 ARMNN_LOG(fatal) << "My fatal message; " << 3; 55 56 SetLogFilter(LogSeverity::Fatal); 57 } 58 59 CHECK(ss.str().find("Trace: My trace message; -2") != std::string::npos); 60 CHECK(ss.str().find("Debug: My debug message; -1") != std::string::npos); 61 CHECK(ss.str().find("Info: My info message; 0") != std::string::npos); 62 CHECK(ss.str().find("Warning: My warning message; 1") != std::string::npos); 63 CHECK(ss.str().find("Error: My error message; 2") != std::string::npos); 64 CHECK(ss.str().find("Fatal: My fatal message; 3") != std::string::npos); 65 } 66 67 }