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

Revision 727, 2.1 kB (checked in by smidl, 15 years ago)

Logger change. Loggers can now store settings.

Unit Tests and fixes.

  • 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 ) {
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        }
23
[722]24        int sz = static_cast<int> ( st.st_size );
[548]25        if ( sz != st.st_size ) {
26                std::string msg = fname;
27                msg += " too big";
28                throw std::runtime_error ( msg );
29        }
30
31        return sz;
32}
33
[689]34TEST ( memlog_test ) {
[548]35        RV th = RV ( "{alog blog }" );
36        RV r = RV ( "{r }", "2" );
37
38        string ls ( "test_log.bin" );
39        remove_all ( ls.c_str() );
40
41        memlog logger ( 100, ls );
42
[727]43        int pol = 11;
44       
45        int rid = logger.add_vector ( r, "" );
46        int thid = logger.add_vector ( th, "th" );
47        int polid = logger.add_setting("pols");
[548]48
49        logger.init();
50
51        for ( int i = 0; i < 10; i++ ) {
[727]52                logger.log_vector ( rid, vec_2 ( ( double ) i, ( double ) ( i + 1 ) ) );
53                logger.log_vector ( thid, vec_2 ( ( double ) ( 100 - i ), ( double ) ( i - 50 ) ) );
54                UI::save(pol, logger.log_to_setting(polid), "polozka");
[548]55                logger.step();
56        }
57
58        logger.finalize();
59
[721]60        CHECK_EQUAL ( get_file_size ( "logger_test.matrix" ), get_file_size ( ls.c_str() ) );
[727]61        CHECK_EQUAL ( get_file_size ( "memlog_setting.cfg.check" ), get_file_size ( "memlog_setting.cfg" ) );
[548]62}
63
[689]64TEST ( dirfilelog_test ) {
[477]65        RV th = RV ( "{alog blog }" );
66        RV r = RV ( "{r }", "2" );
[87]67
[477]68        string ls ( "exp" );
69        remove_all ( ls.c_str() );
70        makedir ( ls, false );
[723]71        remove_all ( "dirfilelog_files" );
[87]72
[723]73        dirfilelog L ( "dirfilelog_files", 10 );
[425]74
[727]75        int rid = L.add_vector ( r, "" );
76        int thid = L.add_vector ( th, "th" );
[425]77
[477]78        L.init();
[425]79
[477]80        for ( int i = 0; i < 150; i++ ) {
[727]81                L.log_vector ( rid, vec_2 ( ( double ) i, ( double ) ( i + 1 ) ) );
82                L.log_vector ( thid, vec_2 ( ( double ) ( 100 - i ), ( double ) ( i - 50 ) ) );
[477]83                L.step();
84        }
[425]85
[477]86        L.finalize();
[425]87
[721]88        std::string expected ( load_test_file ( "logger_test_dirfile_format.matrix" ) );
[723]89        std::string actual ( load_test_file ( "dirfilelog_files/format" ) );
[477]90        CHECK_EQUAL ( expected, actual );
[87]91}
Note: See TracBrowser for help on using the browser.