Skip to content
Snippets Groups Projects
Commit ce3d5c59 authored by Jan Frederik Engels's avatar Jan Frederik Engels :new_moon:
Browse files

Added more testing for timedelta functionality

* Some tests do fail (reflecting problems with events for restarts in
  ICON, affecting the atm_amip experiment).
parent b8da2a95
No related branches found
No related tags found
No related merge requests found
......@@ -692,14 +692,32 @@ END_TEST
START_TEST(test_getTimeDeltaFromDateTime)
{
// These test are taken from ac66aeaef2dde828aa31b63f88076070a8282b49
// These tests are taken from ac66aeaef2dde828aa31b63f88076070a8282b49
assertGetTimeDeltaFromDateTime("1979-03-01T00:00:00.000", "1979-01-01T01:00:00.000", "P01M27DT23H");
assertGetTimeDeltaFromDateTime("1979-07-01T00:00:00.000", "1979-01-01T01:00:00.000", "P05M29DT23H");
assertGetTimeDeltaFromDateTime("1979-12-01T00:00:00.000", "1979-01-01T01:00:00.000", "P10M29DT23H");
assertGetTimeDeltaFromDateTime("1980-01-01T00:00:00.000", "1979-01-01T01:00:00.000", "P11M30DT23H");
// These tests are taken from 5bcba6591c38fbb9f7a3a5f63c86963d8a066595
assertGetTimeDeltaFromDateTime("2017-07-31T00:00:00.000", "2017-07-01T00:00:00.000", "P30D");
assertGetTimeDeltaFromDateTime("2017-08-01T00:00:00.000", "2017-07-01T00:00:00.000", "P1M");
// FIXME: This needs to be fulfilled for amip restart to work fine.
assertGetTimeDeltaFromDateTime("1981-01-01T00:00:00.000", "1980-01-01T00:10:00.000", "P11M30DT23H50M");
}
END_TEST
START_TEST(test_timeDeltaToJulianDeltaToTimeDelta)
{
assertTimeDeltaToJulianDeltaToTimeDelta("1979-01-01T01:00:00.000", "P01M27DT23H");
assertTimeDeltaToJulianDeltaToTimeDelta("1980-01-01T00:10:00.000", "P11M30DT23H50M");
assertTimeDeltaToJulianDeltaToTimeDelta("1981-01-01T00:00:00.000", "P11M30DT23H50M");
}
END_TEST
static void setup_ProlepticGregorian(void)
{
initCalendar(PROLEPTIC_GREGORIAN);
......@@ -734,6 +752,7 @@ void add_mtime_timedelta_test_to_suite(Suite* suite)
tcase_add_test(tcase_ProlepticGregorian, test_timeDeltaToJulianDelta_ProlepticGregorian_3);
tcase_add_test(tcase_ProlepticGregorian, test_timeDeltaToJulianDelta_highDeltas);
tcase_add_test(tcase_ProlepticGregorian, test_getTimeDeltaFromDateTime);
tcase_add_test(tcase_ProlepticGregorian, test_timeDeltaToJulianDeltaToTimeDelta);
TCase *tcase_YearOf365Days = tcase_create("mtime_time_test_YearOf365Days");
suite_add_tcase(suite, tcase_YearOf365Days);
......@@ -869,12 +888,6 @@ void assertTimeDeltaToJulianDeltaWithoutExpectations(const char* timedelta_strin
deallocateJulianDelta(juliandelta);
}
// FIXME: Fill with content
void assertJulianDeltaToTimeDelta ()
{
}
// It seems we need this tested too.
void assertGetTimeDeltaFromDateTime (const char* dt1_string, const char* dt2_string, const char* expected_td_string)
......@@ -892,10 +905,44 @@ void assertGetTimeDeltaFromDateTime (const char* dt1_string, const char* dt2_str
struct _timedelta* expected_td = newTimeDelta(expected_td_string);
ck_assert(expected_td != NULL);
ck_assert(compareTimeDelta(&td, expected_td) == equal_to);
char str[MAX_TIMEDELTA_STR_LEN];
timedeltaToString(&td, str);
ck_assert_msg(compareTimeDelta(&td, expected_td) == equal_to, "expected %s != %s returned", expected_td_string, str);
deallocateDateTime(dt1);
deallocateDateTime(dt2);
deallocateTimeDelta(expected_td);
}
void assertTimeDeltaToJulianDeltaToTimeDelta (const char* base_dt_string, const char* td_string)
{
void* err;
struct _datetime* base_dt = newDateTime(base_dt_string);
ck_assert(base_dt != NULL);
struct _timedelta* td = newTimeDelta(td_string);
ck_assert(td != NULL);
struct _juliandelta jd;
err = timeDeltaToJulianDelta(td, base_dt, &jd);
ck_assert(err != NULL);
struct _timedelta res_td;
err = julianDeltaToTimeDelta(&jd, base_dt, &res_td);
ck_assert(err != NULL);
char str[MAX_TIMEDELTA_STR_LEN];
timedeltaToString(&res_td, str);
ck_assert_msg(compareTimeDelta(td, &res_td) == equal_to, "base datetime %s\n original %s != %s returned",
base_dt_string, td_string, str);
//FIXME: Deallocate.
}
// FIXME: Fill with content
void assertJulianDeltaToTimeDelta ()
{
}
......@@ -14,4 +14,5 @@ void assertTimeDeltaToJulianDelta(const char* timedelta_string, const char* base
void assertTimeDeltaToJulianDeltaWithoutExpectations(const char* timedelta_string, const char* base_datetime_string, char expected_jd_sign);
void assertGetTimeDeltaFromDateTime (const char* dt1_string, const char* dt2_string, const char* expected_td_string);
void assertTimeDeltaToJulianDeltaToTimeDelta (const char* base_dt_string, const char* td_string);
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment