X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fenvironment%2Ftest_metar.cxx;h=4193418823963078ef7362ae1cb3a6d80c7b782b;hb=a62f11c5509f8d7b2a4c3b587c0e7af8d4f5a39b;hp=bcdc772598d298ac23a54c6374338fd216587352;hpb=63a8209a839fcc142ab86ef16f323bb54c37521a;p=simgear.git diff --git a/simgear/environment/test_metar.cxx b/simgear/environment/test_metar.cxx index bcdc7725..41934188 100644 --- a/simgear/environment/test_metar.cxx +++ b/simgear/environment/test_metar.cxx @@ -30,12 +30,20 @@ using std::string; exit(1); \ } +#define FUZZY_COMPARE(a, b, epsilon) \ + if (fabs(a - b) > epsilon) { \ + cerr << "failed:" << #a << " != " << #b << endl; \ + cerr << "\tgot:" << a << endl; \ + cerr << "\tepsilon:" << epsilon << endl; \ + } + #define VERIFY(a) \ if (!(a)) { \ cerr << "failed:" << #a << endl; \ exit(1); \ } - + +const double TEST_EPSILON = 1e-9; void test_basic() { @@ -48,17 +56,50 @@ void test_basic() COMPARE(m1.getReportType(), -1); // should default to NIL? COMPARE(m1.getWindDir(), 270); - COMPARE(m1.getWindSpeed_kt(), 12); + FUZZY_COMPARE(m1.getWindSpeed_kt(), 12, TEST_EPSILON); - COMPARE(m1.getTemperature_C(), 10); - COMPARE(m1.getDewpoint_C(), 5); - COMPARE(m1.getPressure_hPa(), 1025); + COMPARE(m1.getWeather().size(), 1); + COMPARE(m1.getClouds().size(), 2); + + FUZZY_COMPARE(m1.getTemperature_C(), 10, TEST_EPSILON); + FUZZY_COMPARE(m1.getDewpoint_C(), 5, TEST_EPSILON); + FUZZY_COMPARE(m1.getPressure_hPa(), 1025, TEST_EPSILON); +} + +void test_sensor_failure_weather() +{ + SGMetar m1("2011/10/20 11:25 EHAM 201125Z 27012KT 240V300 9999 // FEW025CB SCT048 10/05 Q1025"); + COMPARE(m1.getWindDir(), 270); + FUZZY_COMPARE(m1.getWindSpeed_kt(), 12, TEST_EPSILON); + + COMPARE(m1.getWeather().size(), 0); + COMPARE(m1.getClouds().size(), 2); + + FUZZY_COMPARE(m1.getTemperature_C(), 10, TEST_EPSILON); + FUZZY_COMPARE(m1.getDewpoint_C(), 5, TEST_EPSILON); + FUZZY_COMPARE(m1.getPressure_hPa(), 1025, TEST_EPSILON); +} + +void test_sensor_failure_cloud() +{ + SGMetar m1("2011/10/20 11:25 EHAM 201125Z 27012KT 240V300 9999 FEW025CB/// SCT048/// 10/05 Q1025"); + COMPARE(m1.getWindDir(), 270); + FUZZY_COMPARE(m1.getWindSpeed_kt(), 12, TEST_EPSILON); + + COMPARE(m1.getWeather().size(), 0); + COMPARE(m1.getClouds().size(), 2); + + FUZZY_COMPARE(m1.getTemperature_C(), 10, TEST_EPSILON); + FUZZY_COMPARE(m1.getDewpoint_C(), 5, TEST_EPSILON); + FUZZY_COMPARE(m1.getPressure_hPa(), 1025, TEST_EPSILON); } int main(int argc, char* argv[]) { try { - test_basic(); + test_basic(); + test_sensor_failure_weather(); + test_sensor_failure_cloud(); } catch (sg_exception& e) { cerr << "got exception:" << e.getMessage() << endl; return -1;