root/library/tests/mpdf_harness.cpp @ 447

Revision 447, 1.6 kB (checked in by vbarta, 15 years ago)

mgamma configurable tests

Line 
1#include "mpdf_harness.h"
2#include "stat/exp_family.h"
3#include "mat_checks.h"
4#include "test_util.h"
5#include "UnitTest++.h"
6
7const double epsilon = 0.00001;
8
9namespace UnitTest
10{
11
12inline 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
23inline 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}
35
36namespace bdm {
37
38template<>
39const ParticularUI<mpdf_harness> &ParticularUI<mpdf_harness>::factory(
40    ParticularUI<mpdf_harness>("mpdf_harness"));
41
42void mpdf_harness::from_setting(const Setting &set) {
43    hmpdf = UI::build<mpdf>(set, "mpdf");
44    UI::get(cond, set, "cond");
45    UI::get(mean, set, "mean");
46
47    if (set.exists("nsamples")) {
48        UI::get(nsamples, set, "nsamples");
49    }
50
51    UI::get(R, set, "R");
52}
53
54void mpdf_harness::test()
55{
56    mat smp = hmpdf->samplecond_m(cond, nsamples);
57    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);
62}
63
64}
Note: See TracBrowser for help on using the browser.