You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.3 KiB
111 lines
2.3 KiB
// License: Apache 2.0. See LICENSE file in root directory.
|
|
// Copyright(c) 2021 Intel Corporation. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#ifdef LIBCI_DEPENDENCY_realsense2
|
|
#include <librealsense2/rs.hpp>
|
|
#endif
|
|
#include "catch.h"
|
|
#include <sstream>
|
|
|
|
|
|
namespace test {
|
|
|
|
|
|
// This is the context in which the test is running -- the same --context passed to
|
|
// run-unit-tests.py
|
|
extern std::string context;
|
|
|
|
|
|
// True if --debug was passed to the test executable
|
|
extern bool debug;
|
|
|
|
|
|
class log_message
|
|
{
|
|
public:
|
|
enum message_type : char
|
|
{
|
|
debug = 'D',
|
|
info = 'I',
|
|
warning = 'W',
|
|
error = 'E',
|
|
fatal = 'F'
|
|
};
|
|
|
|
private:
|
|
std::ostringstream _line;
|
|
message_type _type;
|
|
bool _empty = true;
|
|
|
|
public:
|
|
log_message( message_type type ) : _type( type ) {}
|
|
~log_message();
|
|
|
|
message_type type() const { return _type; }
|
|
|
|
void print() {}
|
|
|
|
// Usage equivalent to Python's log.d(...) -- including spaces in-between arguments:
|
|
// test::log.d( "This", "one" );
|
|
template< typename T, typename... Types >
|
|
void print( T const & arg, Types... args )
|
|
{
|
|
if( _line.tellp() )
|
|
_line << ' ';
|
|
_line << arg;
|
|
print( args... );
|
|
}
|
|
|
|
// Allow this usage (without Python-like space separators):
|
|
// log_message( debug ) << "This " << std::setw(5) << "one";
|
|
template< typename T >
|
|
log_message & operator<<( T const & t )
|
|
{
|
|
_line << t;
|
|
return *this;
|
|
}
|
|
|
|
};
|
|
class debug_logger
|
|
{
|
|
public:
|
|
template< typename... Types >
|
|
void d( Types... args ) const
|
|
{
|
|
if( ! test::debug )
|
|
return;
|
|
log_message msg( log_message::debug );
|
|
msg.print( args... );
|
|
}
|
|
template< typename... Types >
|
|
void i( Types... args ) const
|
|
{
|
|
log_message msg( log_message::info );
|
|
msg.print( args... );
|
|
}
|
|
template< typename... Types >
|
|
void w( Types... args ) const
|
|
{
|
|
log_message msg( log_message::warning );
|
|
msg.print( args... );
|
|
}
|
|
template< typename... Types >
|
|
void e( Types... args ) const
|
|
{
|
|
log_message msg( log_message::error );
|
|
msg.print( args... );
|
|
}
|
|
template< typename... Types >
|
|
void f( Types... args ) const
|
|
{
|
|
log_message msg( log_message::fatal );
|
|
msg.print( args... );
|
|
}
|
|
};
|
|
extern debug_logger log;
|
|
|
|
|
|
}
|