Show
Ignore:
Timestamp:
07/31/09 08:38:18 (15 years ago)
Author:
vbarta
Message:

custom test location for harness tests (extended UnitTest?++), configurable tolerance - all tests pass (most of the time)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/tests/mpdf_harness.cpp

    r447 r456  
    11#include "mpdf_harness.h" 
     2#include "base/bdmbase.h" 
     3#include "base/user_info.h" 
    24#include "stat/exp_family.h" 
    35#include "mat_checks.h" 
    46#include "test_util.h" 
    57#include "UnitTest++.h" 
    6  
    7 const double epsilon = 0.00001; 
    8  
    9 namespace UnitTest 
    10 { 
    11  
    12 inline void CheckClose(TestResults &results, const itpp::vec &expected, 
    13                        const itpp::vec &actual, double tolerance, 
    14                        TestDetails const &details) { 
    15     if (!AreClose(expected, actual, tolerance)) {  
    16         MemoryOutStream stream; 
    17         stream << "Expected " << expected << " +/- " << tolerance << " but was " << actual; 
    18  
    19         results.OnTestFailure(details, stream.GetText()); 
    20     } 
    21 } 
    22  
    23 inline void CheckClose(TestResults &results, const itpp::mat &expected, 
    24                        const itpp::mat &actual, double tolerance, 
    25                        TestDetails const &details) { 
    26     if (!AreClose(expected, actual, tolerance)) {  
    27         MemoryOutStream stream; 
    28         stream << "Expected " << expected << " +/- " << tolerance << " but was " << actual; 
    29  
    30         results.OnTestFailure(details, stream.GetText()); 
    31     } 
    32 } 
    33  
    34 } 
    358 
    369namespace bdm { 
     
    3912const ParticularUI<mpdf_harness> &ParticularUI<mpdf_harness>::factory( 
    4013    ParticularUI<mpdf_harness>("mpdf_harness")); 
     14 
     15void mpdf_harness::test_config(const char *config_file_name) { 
     16    RV::clear_all(); 
     17 
     18    UIFile in(config_file_name); 
     19    Array<mpdf_harness *> input; 
     20    UI::get(input, in, "data"); 
     21    int sz = input.size(); 
     22    CHECK(sz > 0); 
     23    for (int i = 0; i < sz; ++i) { 
     24        input(i)->test(config_file_name, i); 
     25    } 
     26} 
    4127 
    4228void mpdf_harness::from_setting(const Setting &set) { 
     
    5036 
    5137    UI::get(R, set, "R"); 
     38 
     39    if (set.exists("tolerance")) { 
     40        UI::get(tolerance, set, "tolerance"); 
     41    } 
    5242} 
    5343 
    54 void mpdf_harness::test() 
     44void mpdf_harness::test(const char *config_name, int idx) 
    5545{ 
     46    CurrentContext cc(config_name, idx); 
     47 
    5648    mat smp = hmpdf->samplecond_m(cond, nsamples); 
    5749    int n = smp.cols(); 
    58     vec Emu = smp * ones(n) / n; 
    59     mat Er = (smp*smp.transpose())/n - outer_product(Emu,Emu); 
    60     CHECK_CLOSE(mean, Emu, 0.1); 
    61     CHECK_CLOSE(R, Er, 0.1); 
     50    vec emu = smp * ones(n) / n; 
     51    mat er = (smp * smp.T()) / n - outer_product(emu, emu); 
     52    CHECK_CLOSE_EX(mean, emu, tolerance); 
     53    CHECK_CLOSE_EX(R, er, tolerance); 
    6254} 
    6355