00001
00002
00003 #ifndef METER_TEST_H
00004 #define METER_TEST_H
00005
00006 #include "line.h"
00007 #include "node.h"
00008 #include "meter.h"
00009 #include "triplex_meter.h"
00010
00011 #ifndef _NO_CPPUNIT
00012
00013 class meter_tests : public test_helper
00014 {
00015 public:
00016 void setUp(){
00017 }
00018
00019 void tearDown(){
00020 local_callbacks->remove_objects();
00021 }
00022
00023 void test_meter_singlephase(){
00024 OBJECT *node1,*node2,*node3;
00025 OBJECT *ohl1,*ohl2;
00026
00027
00028 complex* node1_phA_I_test = new complex(6.0638,-3.0419);
00029 complex* node3_phA_V_test = new complex(115.27,-0.29);
00030 complex* node3_phB_V_test = new complex(122.37,-2.5);
00031 complex* node3_phC_V_test = new complex(0.0,0.0);
00032
00033 double meter_power_test = 43076.9024312;
00034
00035 CLASS *cl = get_class_by_name("node");
00036 node1 = gl_create_object(cl);
00037 OBJECTDATA(node1,node)->create();
00038
00039 cl = get_class_by_name("triplex_node");
00040 node2 = gl_create_object(cl);
00041 OBJECTDATA(node2,triplex_node)->create();
00042
00043 cl = get_class_by_name("triplex_meter");
00044 node3 = gl_create_object(cl);
00045 OBJECTDATA(node3,meter)->create();
00046
00047 cl = get_class_by_name("transformer");
00048 ohl1 = gl_create_object(cl);
00049 OBJECTDATA(ohl1,transformer)->create();
00050
00051 cl = get_class_by_name("triplex_line");
00052 ohl2 = gl_create_object(cl);
00053 OBJECTDATA(ohl2,triplex_line)->create();
00054
00055 OBJECTDATA(ohl1,transformer)->from = node1;
00056 OBJECTDATA(ohl1,transformer)->to = node2;
00057
00058 OBJECTDATA(ohl1,transformer)->phases = PHASE_A|PHASE_S;
00059
00060 OBJECTDATA(node1,node)->voltageA = complex(7200,0);
00061 OBJECTDATA(node1,node)->voltageB = complex(-3600,-6235.4);
00062 OBJECTDATA(node1,node)->voltageC = complex(-3600,6235.4);
00063
00064 OBJECTDATA(node2,triplex_node)->voltageA = complex(120.0,0.0);
00065 OBJECTDATA(node2,triplex_node)->voltageB = complex(120.0,0.0);
00066 OBJECTDATA(node2,triplex_node)->voltageC = complex(0.0,0.0);
00067
00068 OBJECTDATA(node3,triplex_meter)->voltageA = complex(120.0,0.0);
00069 OBJECTDATA(node3,triplex_meter)->voltageB = complex(120.0,0.0);
00070 OBJECTDATA(node3,triplex_meter)->voltageC = complex(0.0,0.0);
00071
00072 cl = get_class_by_name("transformer_configuration");
00073 OBJECT *trans_config = gl_create_object(cl);
00074 OBJECTDATA(trans_config,transformer_configuration)->V_primary = 7.2 * 1000;
00075 OBJECTDATA(trans_config,transformer_configuration)->V_secondary = 0.120 * 1000;
00076 OBJECTDATA(trans_config,transformer_configuration)->kVA_rating = 50;
00077 OBJECTDATA(trans_config,transformer_configuration)->phaseA_kVA_rating = 50;
00078
00079 OBJECTDATA(trans_config,transformer_configuration)->impedance.SetReal(0.011);
00080
00081 OBJECTDATA(trans_config,transformer_configuration)->impedance.SetImag(0.018);
00082 OBJECTDATA(trans_config,transformer_configuration)->connect_type = transformer_configuration::SINGLE_PHASE_CENTER_TAPPED;
00083 OBJECTDATA(ohl1,transformer)->configuration = trans_config;
00084
00086
00087 OBJECTDATA(ohl2,triplex_line)->from = node2;
00088 OBJECTDATA(ohl2,triplex_line)->to = node3;
00089 OBJECTDATA(ohl2,triplex_line)->length = 100;
00090
00091
00092 OBJECTDATA(ohl2,triplex_line)->phases = OBJECTDATA(node2,node)->phases = OBJECTDATA(node3,load)->phases = PHASE_A;
00093
00094
00095 cl = get_class_by_name("triplex_line_conductor");
00096 OBJECT *ulc_a = gl_create_object(cl);
00097 OBJECTDATA(ulc_a,triplex_line_conductor)->geometric_mean_radius = 0.0111;
00098 OBJECTDATA(ulc_a,triplex_line_conductor)->resistance = 0.97;
00099
00100 cl = get_class_by_name("triplex_line_configuration");
00101 OBJECT *line_config = gl_create_object(cl);
00102 triplex_line_configuration *lc = OBJECTDATA(line_config,triplex_line_configuration);
00103 lc->ins_thickness=0.08;
00104 lc->diameter=0.368;
00105 lc->phaseA_conductor = ulc_a;
00106 lc->phaseB_conductor = ulc_a;
00107 lc->phaseC_conductor = ulc_a;
00108 lc->phaseN_conductor = 0;
00109
00110 OBJECTDATA(ohl2,triplex_line)->configuration = line_config;
00111
00112
00113 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00114
00115
00116 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00117
00118
00119 local_callbacks->sync_all(PC_PRETOPDOWN);
00120 OBJECTDATA(node3,node)->currentA = complex(164.25,-80.09);
00121 OBJECTDATA(node3,node)->currentB = complex(-199.58,102.43);
00122 OBJECTDATA(node3,node)->currentC = complex(35.32,-22.34);
00123
00124 local_callbacks->sync_all(PC_BOTTOMUP);
00125
00126
00127 double rI_1 = OBJECTDATA(node1,node)->currentA.Re();
00128 double iI_1 = OBJECTDATA(node1,node)->currentA.Im();
00129 #ifdef _TESTING
00130 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node1,node)->currentA.Re(), OBJECTDATA(node1,node)->currentA.Im());
00131 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node1,node)->currentB.Re(), OBJECTDATA(node1,node)->currentB.Im());
00132 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node1,node)->currentC.Re(), OBJECTDATA(node1,node)->currentC.Im());
00133 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node2,triplex_node)->currentA.Re(), OBJECTDATA(node2,triplex_node)->currentA.Im());
00134 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node2,triplex_node)->currentB.Re(), OBJECTDATA(node2,triplex_node)->currentB.Im());
00135 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node2,triplex_node)->currentC.Re(), OBJECTDATA(node2,triplex_node)->currentC.Im());
00136 #endif
00137
00138
00139 double validate_re = 1 - (rI_1 <= node1_phA_I_test->Re() ? rI_1 / node1_phA_I_test->Re() : node1_phA_I_test->Re() /rI_1);
00140 double validate_im = 1 - (iI_1 <= node1_phA_I_test->Im() ? iI_1 / node1_phA_I_test->Im() : node1_phA_I_test->Im() /iI_1);
00141
00142 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00143 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00144
00145
00146 OBJECTDATA(node1,node)->voltageA = complex(7200,0);
00147 OBJECTDATA(node1,node)->voltageB = complex(-3600,-6235.4);
00148 OBJECTDATA(node1,node)->voltageC = complex(-3600,6235.4);
00149 local_callbacks->sync_all(PC_POSTTOPDOWN);
00150
00151 double rV_3 = OBJECTDATA(node2,triplex_node)->voltageA.Re();
00152 double iV_3 = OBJECTDATA(node2,triplex_node)->voltageA.Im();
00153 #ifdef _TESTING
00154 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node2,triplex_node)->voltageA.Re(), OBJECTDATA(node2,triplex_node)->voltageA.Im());
00155 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node2,triplex_node)->voltageB.Re(), OBJECTDATA(node2,triplex_node)->voltageB.Im());
00156 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node2,triplex_node)->voltageC.Re(), OBJECTDATA(node2,triplex_node)->voltageC.Im());
00157 #endif
00158
00159 double rV_2 = OBJECTDATA(node3,meter)->voltageA.Re();
00160 double iV_2 = OBJECTDATA(node3,meter)->voltageA.Im();
00161 #ifdef _TESTING
00162 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node3,meter)->voltageA.Re(), OBJECTDATA(node3,meter)->voltageA.Im());
00163 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node3,meter)->voltageB.Re(), OBJECTDATA(node3,meter)->voltageB.Im());
00164 printf(" %10.6f+%+10.6f\n", OBJECTDATA(node3,meter)->voltageC.Re(), OBJECTDATA(node3,meter)->voltageC.Im());
00165 #endif
00166
00167 validate_re = 1 - (rV_2 <= node3_phA_V_test->Re() ? rV_2 / node3_phA_V_test->Re() : node3_phA_V_test->Re() /rV_2);
00168 validate_im = 1 - (iV_2 <= node3_phA_V_test->Im() ? iV_2 / node3_phA_V_test->Im() : node3_phA_V_test->Im() /iV_2);
00169 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00170 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00171
00172
00173
00174 double mP_3 = OBJECTDATA(node3,meter)->measured_power.Mag()*1000;
00175 validate_re = 1 - (mP_3 <= meter_power_test ? mP_3 / meter_power_test : meter_power_test /mP_3);
00176
00177 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00178
00179 }
00180
00181 void test_meter_polyphase(){
00182 OBJECT *node1,*node2,*node3;
00183 OBJECT *ohl1,*ohl2;
00184
00185
00186 complex* node1_phA_I_test = new complex(204.5,-18.431);
00187 complex* node1_phB_I_test = new complex(39.716,-57.144);
00188 complex* node1_phC_I_test = new complex(-46.035,115.21);
00189
00190 complex* node3_phA_V_test = new complex(2334.5449,-237.6837);
00191 complex* node3_phB_V_test = new complex(-1372.186896,-2138.1349);
00192 complex* node3_phC_V_test = new complex(-1027.44395,2102.13);
00193
00194
00195
00196 double meter_power_test1 = 855101.786;
00197
00198 double meter_power_test2 = 855418.845;
00199
00200 CLASS *cl = get_class_by_name("node");
00201 node1 = gl_create_object(cl);
00202 OBJECTDATA(node1,node)->create();
00203
00204 cl = get_class_by_name("meter");
00205 node2 = gl_create_object(cl);
00206 OBJECTDATA(node2,meter)->create();
00207 OBJECTDATA(node2,meter)->nominal_voltage = 4200;
00208
00209
00210
00211
00212
00213 cl = get_class_by_name("load");
00214 node3 = gl_create_object(cl);
00215 OBJECTDATA(node3,load)->create();
00216
00217 cl = get_class_by_name("underground_line");
00218 ohl1 = gl_create_object(cl);
00219 OBJECTDATA(ohl1,underground_line)->create();
00220
00221 OBJECTDATA(ohl1,underground_line)->from = node1;
00222 OBJECTDATA(ohl1,underground_line)->to = node2;
00223 OBJECTDATA(ohl1,underground_line)->length = 500;
00224
00225
00226 OBJECTDATA(ohl1,underground_line)->phases = PHASE_A|PHASE_B|PHASE_C;
00227 OBJECTDATA(node1,node)->phases = PHASE_A|PHASE_B|PHASE_C;
00228 OBJECTDATA(node2,meter)->phases = PHASE_A|PHASE_B|PHASE_C;
00229
00230 cl = get_class_by_name("underground_line");
00231 ohl2 = gl_create_object(cl);
00232 OBJECTDATA(ohl2,underground_line)->create();
00233
00234 OBJECTDATA(ohl2,underground_line)->from = node2;
00235 OBJECTDATA(ohl2,underground_line)->to = node3;
00236 OBJECTDATA(ohl2,underground_line)->length = 500;
00237
00238
00239 OBJECTDATA(ohl2,underground_line)->phases = PHASE_A|PHASE_B|PHASE_C;
00240
00241 OBJECTDATA(node3,load)->phases = PHASE_A|PHASE_B|PHASE_C;
00242
00243
00244
00245
00246 cl = get_class_by_name("underground_line_conductor");
00247 OBJECT *ulc_a = gl_create_object(cl);
00248 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_diameter = 0.567;
00249 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_gmr = 0.0171;
00250 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_resistance = 0.41;
00251 OBJECTDATA(ulc_a,underground_line_conductor)->outer_diameter = 1.29;
00252 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_gmr = 0.00208;
00253 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_diameter = 0.0641;
00254 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_resistance = 14.8722;
00255 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_strands = 13;
00256
00257 cl = get_class_by_name("underground_line_conductor");
00258 OBJECT *ulc_b = gl_create_object(cl);
00259 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_diameter = 0.567;
00260 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_gmr = 0.0171;
00261 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_resistance = 0.41;
00262 OBJECTDATA(ulc_b,underground_line_conductor)->outer_diameter = 1.29;
00263 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_gmr = 0.00208;
00264 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_diameter = 0.0641;
00265 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_resistance = 14.8722;
00266 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_strands = 13;
00267
00268 cl = get_class_by_name("underground_line_conductor");
00269 OBJECT *ulc_c = gl_create_object(cl);
00270 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_diameter = 0.567;
00271 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_gmr = 0.0171;
00272 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_resistance = 0.41;
00273 OBJECTDATA(ulc_c,underground_line_conductor)->outer_diameter = 1.29;
00274 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_gmr = 0.00208;
00275 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_diameter = 0.0641;
00276 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_resistance = 14.8722;
00277 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_strands = 13;
00278
00279
00280 cl = get_class_by_name("line_spacing");
00281 OBJECT *ls = gl_create_object(cl);
00282 OBJECTDATA(ls,line_spacing)->distance_AtoN = 0.0;
00283 OBJECTDATA(ls,line_spacing)->distance_AtoB = 0.5;
00284 OBJECTDATA(ls,line_spacing)->distance_AtoC = 1;
00285 OBJECTDATA(ls,line_spacing)->distance_BtoC = 0.5;
00286
00287 cl = get_class_by_name("line_configuration");
00288 OBJECT *line_config = gl_create_object(cl);
00289 line_configuration *lc = OBJECTDATA(line_config,line_configuration);
00290 lc->line_spacing = ls;
00291 lc->phaseA_conductor = ulc_a;
00292 lc->phaseB_conductor = ulc_b;
00293 lc->phaseC_conductor = ulc_c;
00294 lc->phaseN_conductor = 0;
00295
00296 OBJECTDATA(ohl1,underground_line)->configuration = line_config;
00297 OBJECTDATA(ohl2,underground_line)->configuration = line_config;
00298
00299 OBJECTDATA(node1,node)->voltageA = complex(2349.8,-228.75);
00300 OBJECTDATA(node1,node)->voltageB = complex(-1362,-2136.6);
00301 OBJECTDATA(node1,node)->voltageC = complex(-1028.7,2106.4);
00302
00303 OBJECTDATA(node2,meter)->voltageA = complex(2349.8,-228.75);
00304 OBJECTDATA(node2,meter)->voltageB = complex(-1362,-2136.6);
00305 OBJECTDATA(node2,meter)->voltageC = complex(-1028.7,2106.4);
00306
00307
00308
00309
00310
00311 OBJECTDATA(node3,load)->voltageA = complex(2349.8,-228.75);
00312 OBJECTDATA(node3,load)->voltageB = complex(-1362,-2136.6);
00313 OBJECTDATA(node3,load)->voltageC = complex(-1028.7,2106.4);
00314
00315
00317
00318
00319 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00320
00321
00322 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00323
00324
00325 local_callbacks->sync_all(PC_PRETOPDOWN);
00326 OBJECTDATA(node3,load)->currentA = complex(204.5,-18.431);
00327 OBJECTDATA(node3,load)->currentB = complex(39.716,-57.144);
00328 OBJECTDATA(node3,load)->currentC = complex(-46.035,115.21);
00329 local_callbacks->sync_all(PC_BOTTOMUP);
00330
00331
00332 double rI_1 = OBJECTDATA(node1,node)->currentA.Re();
00333 double iI_1 = OBJECTDATA(node1,node)->currentA.Im();
00334 printf(" \nI1: %10.6f+%+10.6f\n", OBJECTDATA(node1,node)->currentA.Re(), OBJECTDATA(node1,node)->currentA.Im());
00335 printf(" I1: %10.6f+%+10.6f\n", OBJECTDATA(node1,node)->currentB.Re(), OBJECTDATA(node1,node)->currentB.Im());
00336 printf(" I1: %10.6f+%+10.6f\n", OBJECTDATA(node1,node)->currentC.Re(), OBJECTDATA(node1,node)->currentC.Im());
00337
00338 printf(" I2: %10.6f+%+10.6f\n", OBJECTDATA(node2,meter)->currentA.Re(), OBJECTDATA(node2,meter)->currentA.Im());
00339 printf(" I2: %10.6f+%+10.6f\n", OBJECTDATA(node2,meter)->currentB.Re(), OBJECTDATA(node2,meter)->currentB.Im());
00340 printf(" I2: %10.6f+%+10.6f\n", OBJECTDATA(node2,meter)->currentC.Re(), OBJECTDATA(node2,meter)->currentC.Im());
00341
00342
00343
00344
00345
00346
00347 printf(" I3: %10.6f+%+10.6f\n", OBJECTDATA(node3,load)->currentA.Re(), OBJECTDATA(node3,load)->currentA.Im());
00348 printf(" I3: %10.6f+%+10.6f\n", OBJECTDATA(node3,load)->currentB.Re(), OBJECTDATA(node3,load)->currentB.Im());
00349 printf(" I3: %10.6f+%+10.6f\n", OBJECTDATA(node3,load)->currentC.Re(), OBJECTDATA(node3,load)->currentC.Im());
00350
00351
00352 printf(" Power: %10.6f\n", OBJECTDATA(node2,meter)->power);
00353
00354
00355 double validate_re = 1 - (rI_1 <= node1_phA_I_test->Re() ? rI_1 / node1_phA_I_test->Re() : node1_phA_I_test->Re() /rI_1);
00356 double validate_im = 1 - (iI_1 <= node1_phA_I_test->Im() ? iI_1 / node1_phA_I_test->Im() : node1_phA_I_test->Im() /iI_1);
00357 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00358 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00359
00360
00361 double mP_1=OBJECTDATA(node2,meter)->measured_power.Mag()*1000;
00362 validate_re = 1 - (mP_1 <= meter_power_test1 ? mP_1 / meter_power_test1 : meter_power_test1 /mP_1);
00363
00364
00365
00366 OBJECTDATA(node1,node)->voltageA = complex(2367.6,-220.050);
00367 OBJECTDATA(node1,node)->voltageB = complex(-1352.9,-2136.8);
00368 OBJECTDATA(node1,node)->voltageC = complex(-1030.4,2110.9);
00369
00370 local_callbacks->sync_all(PC_POSTTOPDOWN);
00371
00372 double rV_3 = OBJECTDATA(node3,load)->voltageA.Re();
00373 double iV_3 = OBJECTDATA(node3,load)->voltageA.Im();
00374 printf(" V1: %10.6f+%+10.6f\n", OBJECTDATA(node1,node)->voltageA.Re(), OBJECTDATA(node1,node)->voltageA.Im());
00375 printf(" V1: %10.6f+%+10.6f\n", OBJECTDATA(node1,node)->voltageB.Re(), OBJECTDATA(node1,node)->voltageB.Im());
00376 printf(" V1: %10.6f+%+10.6f\n", OBJECTDATA(node1,node)->voltageC.Re(), OBJECTDATA(node1,node)->voltageC.Im());
00377
00378 printf(" V2: %10.6f+%+10.6f\n", OBJECTDATA(node2,meter)->voltageA.Re(), OBJECTDATA(node2,meter)->voltageA.Im());
00379 printf(" V2: %10.6f+%+10.6f\n", OBJECTDATA(node2,meter)->voltageB.Re(), OBJECTDATA(node2,meter)->voltageB.Im());
00380 printf(" V2: %10.6f+%+10.6f\n", OBJECTDATA(node2,meter)->voltageC.Re(), OBJECTDATA(node2,meter)->voltageC.Im());
00381
00382
00383
00384
00385
00386 printf(" V3: %10.6f+%+10.6f\n", OBJECTDATA(node3,load)->voltageA.Re(), OBJECTDATA(node3,load)->voltageA.Im());
00387 printf(" V3: %10.6f+%+10.6f\n", OBJECTDATA(node3,load)->voltageB.Re(), OBJECTDATA(node3,load)->voltageB.Im());
00388 printf(" V3: %10.6f+%+10.6f\n", OBJECTDATA(node3,load)->voltageC.Re(), OBJECTDATA(node3,load)->voltageC.Im());
00389
00390
00391 printf(" Power: %10.6f\n", OBJECTDATA(node2,meter)->power);
00392
00393 double rV_2 = OBJECTDATA(node3,load)->voltageA.Re();
00394 double iV_2 = OBJECTDATA(node3,load)->voltageA.Im();
00395 validate_re = 1 - (rV_2 <= node3_phA_V_test->Re() ? rV_2 / node3_phA_V_test->Re() : node3_phA_V_test->Re() /rV_2);
00396 validate_im = 1 - (iV_2 <= node3_phA_V_test->Im() ? iV_2 / node3_phA_V_test->Im() : node3_phA_V_test->Im() /iV_2);
00397 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00398 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00399
00400
00401
00402 mP_1=OBJECTDATA(node2,meter)->measured_power.Mag()*1000;
00403 validate_re = 1 - (mP_1 <= meter_power_test2 ? mP_1 / meter_power_test2 : meter_power_test2 /mP_1);
00404 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00405
00406 }
00407
00408
00409
00410
00411
00412
00413 CPPUNIT_TEST_SUITE(meter_tests);
00414
00415
00416
00417
00418
00419
00420 CPPUNIT_TEST(test_meter_singlephase);
00421 CPPUNIT_TEST(test_meter_polyphase);
00422
00423
00424 CPPUNIT_TEST_SUITE_END();
00425 };
00426
00427 #endif
00428 #endif