00001 
00013 #ifndef EPDF_HARNESS_H
00014 #define EPDF_HARNESS_H
00015 
00016 #define BDMLIB // not an ideal way to prevent double registration of UI factories...
00017 
00018 #include "bdmroot.h"
00019 #include "itpp_ext.h"
00020 #include "shared_ptr.h"
00021 #include "base/bdmbase.h"
00022 #include "base/user_info.h"
00023 
00024 namespace bdm
00025 {
00026 
00027 class epdf_harness : public root
00028 {
00029 private:
00030     shared_ptr<epdf> hepdf;
00031     vec mean;
00032     vec variance;
00033     mat support;
00034     vec nbins;
00035     int nsamples;
00036     mat R;
00037     shared_ptr<RV> mrv;
00038     double tolerance;
00039 
00040 public:
00041     static void test_config(const char *config_file_name);
00042 
00043     epdf_harness():nsamples(1000), tolerance(0.1) { }
00044 
00045     virtual void test(const char *config_name, int idx);
00046 
00047     void from_setting(const Setting &set);
00048 
00049 protected:
00050     epdf *get_epdf() { return hepdf.get(); }
00051 
00052     double get_tolerance() const { return tolerance; }
00053 };
00054 
00055 }
00056 
00057 #endif