root/library/tests/testsuite/logger_test.cpp @ 1064

Revision 1064, 2.8 kB (checked in by mido, 14 years ago)

astyle applied all over the library

  • Property svn:eol-style set to native
RevLine 
[386]1#include "base/loggers.h"
[717]2#include "../test_util.h"
[469]3#include "osutils.h"
[425]4#include "UnitTest++.h"
5#include <string>
[548]6#include <stdexcept>
[425]7#include <sys/stat.h>
8#include <sys/types.h>
[553]9
10#ifndef WIN32
[548]11#include <unistd.h>
[553]12#endif
[87]13
[254]14using namespace bdm;
[87]15
[548]16int get_file_size ( const char *fname ) {
[1064]17    struct stat st;
18    if ( stat ( fname, &st ) ) {
19        std::string msg = "can't stat ";
20        msg += fname;
21        throw std::runtime_error ( msg );
22    }
[548]23
[1064]24    int sz = static_cast<int> ( st.st_size );
25    if ( sz != st.st_size ) {
26        std::string msg = fname;
27        msg += " too big";
28        throw std::runtime_error ( msg );
29    }
[548]30
[1064]31    return sz;
[548]32}
33
[907]34class log_tester : public root
35{
[1064]36    LOG_LEVEL(log_tester,logr,logth,logpol);
[907]37public:
[1064]38    RV th, r;
39    int pol, i;
[907]40
[1064]41    log_tester() {
42        th = RV ( "{alog blog }" );
43        r = RV ( "{r }", "2" );
44        pol = 11;
[907]45
[1064]46        log_level[logr] = true;
47        log_level[logth] = true;
48        log_level[logpol] = true;
49    }
[907]50
[1064]51    void log_register( logger &L, const string prefix ) {
52        root::log_register( L, prefix );
53        L.add_vector( log_level, logr, r, prefix );
54        L.add_vector( log_level, logth, th, prefix );
55        L.add_setting( log_level, logpol, prefix, 0 );
56        L.add_setting( log_level, logpol, prefix, 1 );
57    }
[907]58
[1064]59    void log_write() const {
60        root::log_write();
61        log_level.store( logr, vec_2 ( ( double ) i, ( double ) ( i + 1 ) ) );
62        log_level.store( logth, vec_2 ( ( double ) ( 100 - i ), ( double ) ( i - 50 ) ) );
63        log_level.store( logpol, pol, 0 );
64        log_level.store( logpol, pol^2, 1 );
65    }
[907]66
67};
68
[689]69TEST ( memlog_test ) {
[1064]70    string ls ( "memlog_test" );
71    remove_all ( ls.c_str() );
[548]72
[1064]73    memlog logger ( 100, ls );
[548]74
[737]75
[1064]76    log_tester tester;
77    tester.log_register( logger, "memlog" );
[548]78
[1064]79    logger.init();
[548]80
[1064]81    for ( tester.i = 0; tester.i < 10; tester.i++ ) {
82        tester.log_write();
83        logger.step();
84    }
[548]85
[1064]86    logger.finalize();
87
88    CHECK_EQUAL ( get_file_size ( "logger_test.matrix" ), get_file_size ( ( ls + ".it" ).c_str() ) );
89    CHECK_EQUAL ( get_file_size ( ( ls + ".cfg.check" ).c_str() ), get_file_size ( ( ls + ".cfg" ).c_str() ) );
[548]90}
91
[689]92TEST ( dirfilelog_test ) {
[87]93
[907]94
[1064]95    string ls ( "exp" );
96    remove_all ( ls.c_str() );
97    makedir ( ls, false );
98    remove_all ( "dirfilelog_files" );
[87]99
[1064]100    dirfilelog logger ( "dirfilelog_files", 10 );
[425]101
[1064]102    log_tester tester;
103    tester.log_register( logger, "dirfilelog" );
[425]104
[1064]105    logger.init();
[425]106
[1064]107    for ( tester.i = 0; tester.i < 150; tester.i++ ) {
108        tester.log_write();
109        logger.step();
110    }
[425]111
[1064]112    logger.finalize();
[425]113
[1064]114    std::string expected ( load_test_file ( "logger_test_dirfile_format.matrix" ) );
115    std::string actual ( load_test_file ( "dirfilelog_files/format" ) );
116    CHECK_EQUAL ( expected, actual );
[87]117}
Note: See TracBrowser for help on using the browser.