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