살군의 보조기억 장치

Another memory device…

TS – ts.hpp

leave a comment »

BaseTest 와  ts.hpp 를 거쳐서 다시 돌어온 부분이 바로 TS class 다. 이제 unit test 와 관련된 기본 구조는 이걸로 정리가 대충 다된 것 이라고 기대하며 같다. 이번에 살펴볼 클래스는 TS 다. BaseTest 안에 있으면서 test 와 관련된 가장 기본적인 작업을 하는 클래스다.

class CV_EXPORTS TS
{
public:
    TS();
    virtual ~TS();
    static TS* ptr();

    virtual void init( const string& modulename );                                               // initialize test system before running the first test
    virtual void update_context( BaseTest* test, int test_case_idx, bool update_ts_context );    // updates the context: current test, test case, rng state
    virtual void set_failed_test_info( int fail_code );                                          // sets information about a failed test
    virtual void printf( int streams, const char* fmt, ... );                                    // low-level printing functions that are used by individual tests and by the system itself
    virtual void vprintf( int streams, const char* fmt, va_list arglist );
    const TestInfo* get_current_test_info() { return &current_test_info; }
    virtual void set_gtest_status();

    enum { /* ... */ };
    enum { /* ... */ };    // test error codes

    CvFileStorage* get_file_storage();                     // get file storage
    RNG& get_rng() { return rng; }                         // get RNG to generate random input data for a test
    int get_err_code() { return current_test_info.code; }                          // returns the current error code
    double get_test_case_count_scale() { return params.test_case_count_scale; }    // returns the test extensivity scale
    const string& get_data_path() const { return data_path; }
    static string str_from_code( int code );               // returns textual description of failure code

protected:
    RNG rng;                       // these are allocated within a test to try keep them valid in case of stack corruption
    TestInfo current_test_info;    // information about the current test
    string data_path;              // the path to data files used by tests
    TSParams params;
    std::string output_buf[MAX_IDX];
};

Ahhhhhh~ 막상 다 까볼려고 했더니 이거 끝이 없구나. 대충 로직은 이해가 되는데, 하나하나 따라갈려니 원래 테스트코드 작성자가 무슨 용도로 만든 코드인지를 다 알아야 되는데 지금 나는 거기까지 알아낼 능력이 없구나. 위의 코드는 별다른 설명 없이도 주석으로 대강의 역할을 알 수 있다. 다만, get_current_test_info() 같은 함수가 실제로 어떤 상황에서 필요한 것인지는 테스트케이스를 생각하고 만들면서 알아내야겠다.

Advertisements

Written by gomiski

2014/03/03 at 7:42 am

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: