00001
00004 #ifndef _CLIMATETEST_H
00005 #define _CLIMATETEST_H
00006
00007 #include "gridlabd.h"
00008 #include "test_framework.h"
00009 extern "C"
00010 {
00011 #include "timestamp.h"
00012 }
00013 #include "test_callbacks.h"
00014 #include "climate.h"
00015
00029 class climate_module_test : public test_helper
00030 {
00031 OBJECT *obj;
00032 public:
00033 climate_module_test(){}
00034
00039 void setup()
00040 {
00041
00042 }
00043
00053 void test_create()
00054 {
00055 CLASS *cl = get_class_by_name("climate");
00056 CPPUNIT_ASSERT(cl != NULL);
00057 obj = gl_create_object(cl);
00058 CPPUNIT_ASSERT(obj != NULL);
00059
00060
00061
00062
00063 double *pTout;
00064 double *pRhout;
00065 double *pSolar;
00066
00067
00068 pTout = (double*)GETADDR(obj,gl_get_property(obj,"temperature"));
00069 pRhout = (double*)GETADDR(obj,gl_get_property(obj,"humidity"));
00070 pSolar = (double*)GETADDR(obj,gl_get_property(obj,"solar_flux"));
00071 }
00072
00073 void test_tmy2(){
00074
00075 CLASS *cl = get_class_by_name("climate");
00076 CPPUNIT_ASSERT(cl != NULL);
00077 obj = gl_create_object(cl);
00078 CPPUNIT_ASSERT(obj != NULL);
00079
00080 double test_data[9] = {33.70209,36.79533,29,35.32216,29,30.14556,29,29,30.38584};
00081
00082 strcpy(OBJECTDATA(obj,climate)->tmyfile,"ca.los_angeles.23174");
00083
00084
00085 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00086 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00087
00088 DATETIME dt;
00089 dt.day = 1;
00090 dt.month = 1;
00091 dt.year = 2007;
00092 dt.hour = 7;
00093 dt.minute = 0;
00094 dt.second = 0;
00095 strcpy(dt.tz,"PST");
00096
00097 gl_convert("W/m^2", "W/sf", &(test_data[0]));
00098 gl_convert("W/m^2", "W/sf", &(test_data[1]));
00099 gl_convert("W/m^2", "W/sf", &(test_data[2]));
00100 gl_convert("W/m^2", "W/sf", &(test_data[3]));
00101 gl_convert("W/m^2", "W/sf", &(test_data[4]));
00102 gl_convert("W/m^2", "W/sf", &(test_data[5]));
00103 gl_convert("W/m^2", "W/sf", &(test_data[6]));
00104 gl_convert("W/m^2", "W/sf", &(test_data[7]));
00105 gl_convert("W/m^2", "W/sf", &(test_data[8]));
00106
00107 TIMESTAMP tstamp = gl_mktime(&dt);
00108 TIMESTAMP newtime;
00109
00110 newtime = local_callbacks->myobject_sync(obj,tstamp,PC_BOTTOMUP);
00111 for(COMPASS_PTS c_point = CP_S; c_point < CP_LAST;c_point=COMPASS_PTS(c_point+1)){
00112 double data = OBJECTDATA(obj,climate)->solar_flux[c_point];
00113 double test_diff = data < test_data[c_point] ? test_data[c_point] - data : data - test_data[c_point];
00114 CPPUNIT_ASSERT(test_diff < .1);
00115 }
00116 newtime = local_callbacks->myobject_sync(obj,tstamp,PC_BOTTOMUP);
00117 tstamp = tstamp - 3600;
00118 newtime = local_callbacks->myobject_sync(obj,tstamp,PC_BOTTOMUP);
00119 tstamp = tstamp - 3600;
00120 newtime = local_callbacks->myobject_sync(obj,tstamp,PC_BOTTOMUP);
00121 tstamp = tstamp - 3600;
00122 newtime = local_callbacks->myobject_sync(obj,tstamp,PC_BOTTOMUP);
00123 tstamp = tstamp - 3600;
00124 newtime = local_callbacks->myobject_sync(obj,tstamp,PC_BOTTOMUP);
00125
00126
00127 }
00128
00129
00130
00131
00132
00133
00134 CPPUNIT_TEST_SUITE(climate_module_test);
00135
00136
00137
00138
00139
00140 CPPUNIT_TEST(test_tmy2);
00141 CPPUNIT_TEST_SUITE_END();
00142 };
00143
00144
00145
00146
00147
00148
00149
00150
00151 CPPUNIT_TEST_SUITE_REGISTRATION(climate_module_test);
00152
00153 #endif
00154