Skip to content
Snippets Groups Projects
Commit 2ba5e0fe authored by Christian Hovy's avatar Christian Hovy
Browse files

[check] Added test for timeDeltaToJulianDelta to mtime_timedelta_test.

parent 5c3c1046
No related branches found
No related tags found
No related merge requests found
......@@ -3,8 +3,12 @@
#include <stdio.h>
#include <stdlib.h>
#include "mtime_calendar.h"
#include "mtime_datetime.h"
#include "mtime_julianDay.h"
typedef struct _timedelta* TimeDelta;
typedef struct _datetime* DateTime;
typedef struct _juliandelta* JulianDelta;
START_TEST(test_create_timedelta_from_valid_strings)
{
......@@ -80,7 +84,7 @@ START_TEST(test_invalid_strings)
}
END_TEST
START_TEST(test_constructAndCopyDateTime)
START_TEST(test_constructAndCopyTimeDelta)
{
int64_t year = 504;
int month = 4;
......@@ -138,7 +142,7 @@ START_TEST(test_constructAndCopyDateTime)
}
END_TEST
START_TEST(test_replaceDatetime)
START_TEST(test_replaceTimeDelta)
{
int64_t year = 504;
int month = 4;
......@@ -188,20 +192,263 @@ START_TEST(test_replaceDatetime)
ck_assert_int_eq(0, timedelta_dest_nonstd->second);
ck_assert_int_eq(0, timedelta_dest_nonstd->ms);
deallocateDateTime(timedelta_src);
deallocateDateTime(timedelta_dest);
deallocateDateTime(timedelta_src_neg);
deallocateDateTime(timedelta_dest_neg);
deallocateTimeDelta(timedelta_src);
deallocateTimeDelta(timedelta_dest);
deallocateTimeDelta(timedelta_src_neg);
deallocateTimeDelta(timedelta_dest_neg);
deallocateTimeDelta(timedelta_src_nonstd);
deallocateTimeDelta(timedelta_dest_nonstd);
}
END_TEST
static void setup(void)
START_TEST(test_timeDeltaToJulianDelta_ProlepticGregorian_1)
{
assertTimeDeltaToJulianDelta("P0Y", "0-01-01T00:00:00.000", '+', 0, 0);
assertTimeDeltaToJulianDelta("P1Y", "-1-01-01T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "-1-01-01T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "-1-02-28T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "-1-03-01T00:00:00.000", '+', 366, 0);
assertTimeDeltaToJulianDelta("P1Y", "-1-12-31T00:00:00.000", '+', 366, 0);
assertTimeDeltaToJulianDelta("P1Y", "0-01-01T00:00:00.000", '+', 366, 0);
assertTimeDeltaToJulianDelta("P1Y", "0-02-28T00:00:00.000", '+', 366, 0);
assertTimeDeltaToJulianDelta("P1Y", "0-02-29T00:00:00.000", '+', 366, 0);
assertTimeDeltaToJulianDelta("P1Y", "0-03-01T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "0-12-31T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "1-01-01T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "1-01-01T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "1-02-28T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "1-03-01T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "1-12-31T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "-1-01-01T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "-1-01-01T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "-1-02-28T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "-1-03-01T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "-1-12-31T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "0-01-01T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "0-02-28T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "0-02-29T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "0-03-01T00:00:00.000", '-', -366, 0);
assertTimeDeltaToJulianDelta("-P1Y", "0-12-31T00:00:00.000", '-', -366, 0);
assertTimeDeltaToJulianDelta("-P1Y", "1-01-01T00:00:00.000", '-', -366, 0);
assertTimeDeltaToJulianDelta("-P1Y", "1-01-01T00:00:00.000", '-', -366, 0);
assertTimeDeltaToJulianDelta("-P1Y", "1-02-28T00:00:00.000", '-', -366, 0);
assertTimeDeltaToJulianDelta("-P1Y", "1-03-01T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "1-12-31T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("P2Y", "0-01-01T00:00:00.000", '+', 731, 0);
assertTimeDeltaToJulianDelta("P6Y", "0-01-01T00:00:00.000", '+', 2192, 0);
assertTimeDeltaToJulianDelta("P26Y", "0-01-01T00:00:00.000", '+', 9497, 0);
assertTimeDeltaToJulianDelta("P126Y", "0-01-01T00:00:00.000", '+', 46021, 0);
assertTimeDeltaToJulianDelta("P406Y", "0-01-01T00:00:00.000", '+', 148289, 0);
assertTimeDeltaToJulianDelta("P10406Y", "0-01-01T00:00:00.000", '+', 3800714, 0);
assertTimeDeltaToJulianDelta("P10407Y", "0-01-01T00:00:00.000", '+', 3801079, 0);
assertTimeDeltaToJulianDelta("P10408Y", "0-01-01T00:00:00.000", '+', 3801444, 0);
assertTimeDeltaToJulianDelta("P10409Y", "0-01-01T00:00:00.000", '+', 3801810, 0);
assertTimeDeltaToJulianDelta("P10409Y", "0-03-01T00:00:00.000", '+', 3801809, 0);
assertTimeDeltaToJulianDelta("P10409Y", "1-01-01T00:00:00.000", '+', 3801809, 0);
assertTimeDeltaToJulianDelta("-P10409Y", "1-01-01T00:00:00.000", '-', -3801810, 0);
assertTimeDeltaToJulianDelta("-P10409Y", "0-01-01T00:00:00.000", '-', -3801809, 0);
//Runs to long, see test_timeDeltaToJulianDelta_highDeltas
// assertTimeDeltaToJulianDeltaWithoutExpactations("-P2147483648Y", "0-01-01T00:00:00.000", '-');
// assertTimeDeltaToJulianDeltaWithoutExpactations("P2147483647Y", "0-01-01T00:00:00.000", '+');
// assertTimeDeltaToJulianDeltaWithoutExpactations("-P2147483648Y", "2147483647-01-01T00:00:00.000", '-');
// assertTimeDeltaToJulianDeltaWithoutExpactations("P2147483647Y", "-2147483648-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDelta("-P1Y", "2147483647-01-01T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("P1Y", "-2147483648-01-01T00:00:00.000", '+', 366, 0);
}
END_TEST
START_TEST(test_timeDeltaToJulianDelta_ProlepticGregorian_2)
{
assertTimeDeltaToJulianDelta("P01M", "1-01-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-02-01T00:00:00.000", '+', 28, 0);
assertTimeDeltaToJulianDelta("P01M", "0-02-01T00:00:00.000", '+', 29, 0);
assertTimeDeltaToJulianDelta("P01M", "0-03-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-04-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-05-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-06-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-07-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-08-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-09-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-10-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-11-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-12-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-01-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-02-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-03-01T00:00:00.000", '-', -28, 0);
assertTimeDeltaToJulianDelta("-P01M", "0-03-01T00:00:00.000", '-', -29, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-04-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-05-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-06-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-07-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-08-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-09-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-10-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-11-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-12-01T00:00:00.000", '-', -30, 0);
}
END_TEST
START_TEST(test_timeDeltaToJulianDelta_ProlepticGregorian_3)
{
assertTimeDeltaToJulianDelta("P01D", "1-01-01T00:00:00.000", '+', 1, 0);
assertTimeDeltaToJulianDelta("PT01H", "1-01-01T00:00:00.000", '+', 0, 3600000);
assertTimeDeltaToJulianDelta("PT01M", "1-01-01T00:00:00.000", '+', 0, 60000);
assertTimeDeltaToJulianDelta("PT01S", "1-01-01T00:00:00.000", '+', 0, 1000);
assertTimeDeltaToJulianDelta("PT00.001S", "1-01-01T00:00:00.000", '+', 0, 1);
assertTimeDeltaToJulianDelta("-P01D", "1-01-01T00:00:00.000", '-', -1, 0);
assertTimeDeltaToJulianDelta("-PT01H", "1-01-01T00:00:00.000", '-', 0, -3600000);
assertTimeDeltaToJulianDelta("-PT01M", "1-01-01T00:00:00.000", '-', 0, -60000);
assertTimeDeltaToJulianDelta("-PT01S", "1-01-01T00:00:00.000", '-', 0, -1000);
assertTimeDeltaToJulianDelta("-PT00.001S", "1-01-01T00:00:00.000", '-', 0, -1);
assertTimeDeltaToJulianDelta("P25Y", "1-01-01T00:00:00.000", '+', 9131, 0);
assertTimeDeltaToJulianDelta("P25Y4M", "1-01-01T00:00:00.000", '+', 9251, 0);
assertTimeDeltaToJulianDelta("P25Y4M12D", "1-01-01T00:00:00.000", '+', 9263, 0);
assertTimeDeltaToJulianDelta("P25Y4M12DT06H23M", "1-01-01T00:00:00.000", '+', 9263, 22980000);
assertTimeDeltaToJulianDelta("P25Y4M12DT06H23M56S", "1-01-01T00:00:00.000", '+', 9263, 23036000);
assertTimeDeltaToJulianDelta("P25Y4M12DT06H23M56.132S", "0-01-01T00:00:00.000", '+', 9264, 23036132);
assertTimeDeltaToJulianDelta("P25Y4M12DT06H23M56.132S", "0-03-01T00:00:00.000", '+', 9265, 23036132);
assertTimeDeltaToJulianDelta("-P25Y4M12DT06H23M56.132S", "0-03-01T00:00:00.000", '-', -9264, -23036132);
assertTimeDeltaToJulianDelta("P366D", "0-01-01T00:00:00.000", '+', 366, 0);
assertTimeDeltaToJulianDelta("P366D", "0-03-01T00:00:00.000", '+', 366, 0);
assertTimeDeltaToJulianDelta("P366D", "1-01-01T00:00:00.000", '+', 366, 0);
assertTimeDeltaToJulianDelta("-P366D", "0-01-01T00:00:00.000", '-', -366, 0);
assertTimeDeltaToJulianDelta("-P366D", "0-03-01T00:00:00.000", '-', -366, 0);
assertTimeDeltaToJulianDelta("-P366D", "1-01-01T00:00:00.000", '-', -366, 0);
assertTimeDeltaToJulianDelta("PT24H", "1-01-01T00:00:00.000", '+', 1, 0);
assertTimeDeltaToJulianDelta("PT30H", "1-01-01T00:00:00.000", '+', 1, 21600000);
assertTimeDeltaToJulianDelta("PT1440M", "1-01-01T00:00:00.000", '+', 1, 0);
assertTimeDeltaToJulianDelta("PT4335M", "1-01-01T00:00:00.000", '+', 3, 900000);
assertTimeDeltaToJulianDelta("PT86400S", "1-01-01T00:00:00.000", '+', 1, 0);
assertTimeDeltaToJulianDelta("PT3653389.498S", "1-01-01T00:00:00.000", '+', 42, 24589498);
assertTimeDeltaToJulianDelta("-PT24H", "1-01-01T00:00:00.000", '-', -1, 0);
assertTimeDeltaToJulianDelta("-PT30H", "1-01-01T00:00:00.000", '-', -1, -21600000);
assertTimeDeltaToJulianDelta("-PT1440M", "1-01-01T00:00:00.000", '-', -1, 0);
assertTimeDeltaToJulianDelta("-PT4335M", "1-01-01T00:00:00.000", '-', -3, -900000);
assertTimeDeltaToJulianDelta("-PT86400S", "1-01-01T00:00:00.000", '-', -1, 0);
assertTimeDeltaToJulianDelta("-PT3653389.498S", "1-01-01T00:00:00.000", '-', -42, -24589498);
}
END_TEST
START_TEST(test_timeDeltaToJulianDelta_YearOf365Days)
{
assertTimeDeltaToJulianDelta("P0Y", "0-01-01T00:00:00.000", '+', 0, 0);
assertTimeDeltaToJulianDelta("P1Y", "0-01-01T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("P1Y", "1-01-01T00:00:00.000", '+', 365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "0-01-01T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("-P1Y", "1-01-01T00:00:00.000", '-', -365, 0);
assertTimeDeltaToJulianDelta("P01M", "1-01-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-02-01T00:00:00.000", '+', 28, 0);
assertTimeDeltaToJulianDelta("P01M", "0-02-01T00:00:00.000", '+', 28, 0);
assertTimeDeltaToJulianDelta("P01M", "0-03-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-04-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-05-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-06-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-07-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-08-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-09-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-10-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("P01M", "1-11-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-12-01T00:00:00.000", '+', 31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-01-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-02-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-03-01T00:00:00.000", '-', -28, 0);
assertTimeDeltaToJulianDelta("-P01M", "0-03-01T00:00:00.000", '-', -28, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-04-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-05-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-06-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-07-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-08-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-09-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-10-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-11-01T00:00:00.000", '-', -31, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-12-01T00:00:00.000", '-', -30, 0);
}
END_TEST
START_TEST(test_timeDeltaToJulianDelta_YearOf360Days)
{
assertTimeDeltaToJulianDelta("P0Y", "0-01-01T00:00:00.000", '+', 0, 0);
assertTimeDeltaToJulianDelta("P1Y", "0-01-01T00:00:00.000", '+', 360, 0);
assertTimeDeltaToJulianDelta("P1Y", "1-01-01T00:00:00.000", '+', 360, 0);
assertTimeDeltaToJulianDelta("-P1Y", "0-01-01T00:00:00.000", '-', -360, 0);
assertTimeDeltaToJulianDelta("-P1Y", "1-01-01T00:00:00.000", '-', -360, 0);
assertTimeDeltaToJulianDelta("P01M", "1-01-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-02-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "0-02-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "0-03-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-04-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-05-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-06-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-07-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-08-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-09-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-10-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-11-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("P01M", "1-12-01T00:00:00.000", '+', 30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-01-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-02-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-03-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "0-03-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-04-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-05-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-06-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-07-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-08-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-09-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-10-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-11-01T00:00:00.000", '-', -30, 0);
assertTimeDeltaToJulianDelta("-P01M", "1-12-01T00:00:00.000", '-', -30, 0);
}
END_TEST
START_TEST(test_timeDeltaToJulianDelta_highDeltas)
{
assertTimeDeltaToJulianDeltaWithoutExpactations("P0Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P1Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P9Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P99Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P999Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P9999Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P99999Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P999999Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P9999999Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P99999999Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P999999999Y", "0-01-01T00:00:00.000", '+');
assertTimeDeltaToJulianDeltaWithoutExpactations("P2147483647Y", "0-01-01T00:00:00.000", '+');
}
END_TEST
static void setup_ProlepticGregorian(void)
{
initCalendar(PROLEPTIC_GREGORIAN);
}
static void setup_YearOf365Days(void)
{
initCalendar(YEAR_OF_365_DAYS);
}
static void setup_YearOf360Days(void)
{
initCalendar(YEAR_OF_360_DAYS);
}
static void teardown(void)
{
freeCalendar();
......@@ -209,13 +456,29 @@ static void teardown(void)
void add_mtime_timedelta_test_to_suite(Suite* suite)
{
TCase *tcase = tcase_create("mtime_time_test");
suite_add_tcase(suite, tcase);
tcase_add_checked_fixture(tcase, setup, teardown);
tcase_add_test(tcase, test_create_timedelta_from_valid_strings);
tcase_add_test(tcase, test_invalid_strings);
tcase_add_test(tcase, test_constructAndCopyDateTime);
tcase_add_test(tcase, test_replaceDatetime);
TCase *tcase_ProlepticGregorian = tcase_create("mtime_time_test_ProlepticGregorian");
suite_add_tcase(suite, tcase_ProlepticGregorian);
tcase_add_checked_fixture(tcase_ProlepticGregorian, setup_ProlepticGregorian, teardown);
tcase_add_test(tcase_ProlepticGregorian, test_create_timedelta_from_valid_strings);
tcase_add_test(tcase_ProlepticGregorian, test_invalid_strings);
tcase_add_test(tcase_ProlepticGregorian, test_constructAndCopyTimeDelta);
tcase_add_test(tcase_ProlepticGregorian, test_replaceTimeDelta);
tcase_add_test(tcase_ProlepticGregorian, test_timeDeltaToJulianDelta_ProlepticGregorian_1);
tcase_add_test(tcase_ProlepticGregorian, test_timeDeltaToJulianDelta_ProlepticGregorian_2);
tcase_add_test(tcase_ProlepticGregorian, test_timeDeltaToJulianDelta_ProlepticGregorian_3);
tcase_add_test(tcase_ProlepticGregorian, test_timeDeltaToJulianDelta_highDeltas);
// Uncomment and adapt to your needs, if you want test_timeDeltaToJulianDelta_highDeltas to terminate
//tcase_set_timeout(tcase_ProlepticGregorian, 30); // Testcase Timeout = 30 sec.
TCase *tcase_YearOf365Days = tcase_create("mtime_time_test_YearOf365Days");
suite_add_tcase(suite, tcase_YearOf365Days);
tcase_add_checked_fixture(tcase_YearOf365Days, setup_YearOf365Days, teardown);
tcase_add_test(tcase_YearOf365Days, test_timeDeltaToJulianDelta_YearOf365Days);
TCase *tcase_YearOf360Days = tcase_create("mtime_time_test_YearOf360Days");
suite_add_tcase(suite, tcase_YearOf360Days);
tcase_add_checked_fixture(tcase_YearOf360Days, setup_YearOf360Days, teardown);
tcase_add_test(tcase_YearOf360Days, test_timeDeltaToJulianDelta_YearOf360Days);
}
/*** SPECIAL ASSERT FUNCTIONS ***/
......@@ -283,3 +546,50 @@ void assertInvalidTimeDelta(const char* input_string)
free(msg); //Never executed?
}
}
void assertTimeDeltaToJulianDelta(const char* timedelta_string, const char* base_datetime_string, char expected_jd_sign, int64_t expected_jd_day, int64_t expected_jd_ms)
{
TimeDelta timedelta = newTimeDelta(timedelta_string);
ck_assert(timedelta != NULL);
DateTime datetime = newDateTime(base_datetime_string);
ck_assert(datetime != NULL);
JulianDelta juliandeltaTemp = newJulianDelta('+', 0, 0);
JulianDelta juliandelta = timeDeltaToJulianDelta(timedelta, datetime, juliandeltaTemp);
ck_assert(datetime != NULL);
ck_assert(juliandeltaTemp == juliandelta);
const char* format = "timeDeltaToJulianDelta failed for \"%s\" + \"%s\": expected:(%c, %lld, %lld) actual:(%c, %lld, %lld).";
size_t length = snprintf(NULL, 0, format, base_datetime_string, timedelta_string, expected_jd_sign, expected_jd_day, expected_jd_ms, juliandelta->sign, juliandelta->day, juliandelta->ms) + 1;
char* msg = malloc(length);
snprintf(msg, length, format, base_datetime_string, timedelta_string, expected_jd_sign, expected_jd_day, expected_jd_ms, juliandelta->sign, juliandelta->day, juliandelta->ms);
ck_assert_msg(expected_jd_sign == juliandelta->sign, msg);
ck_assert_msg(expected_jd_day == juliandelta->day, msg);
ck_assert_msg(expected_jd_ms == juliandelta->ms, msg);
deallocateTimeDelta(timedelta);
deallocateDateTime(datetime);
deallocateJulianDelta(juliandelta);
}
void assertTimeDeltaToJulianDeltaWithoutExpactations(const char* timedelta_string, const char* base_datetime_string, char expected_jd_sign)
{
TimeDelta timedelta = newTimeDelta(timedelta_string);
ck_assert(timedelta != NULL);
DateTime datetime = newDateTime(base_datetime_string);
ck_assert(datetime != NULL);
JulianDelta juliandeltaTemp = newJulianDelta('+', 0, 0);
JulianDelta juliandelta = timeDeltaToJulianDelta(timedelta, datetime, juliandeltaTemp);
ck_assert(datetime != NULL);
ck_assert(juliandeltaTemp == juliandelta);
ck_assert(expected_jd_sign == juliandelta->sign);
deallocateTimeDelta(timedelta);
deallocateDateTime(datetime);
deallocateJulianDelta(juliandelta);
}
......@@ -10,5 +10,7 @@ void add_mtime_timedelta_test_to_suite(Suite* suite);
/*** SPECIAL ASSERT FUNCTIONS ***/
void assertTimeDelta(const char* input_string, bool std_form, char sign, int64_t year, int month, int day, int hour, int minute, int second, int ms, const char* expected_output_string);
void assertInvalidTimeDelta(const char* input_string);
void assertTimeDeltaToJulianDelta(const char* timedelta_string, const char* base_datetime_string, char expected_jd_sign, int64_t expected_jd_day, int64_t expected_jd_ms);
void assertTimeDeltaToJulianDeltaWithoutExpactations(const char* timedelta_string, const char* base_datetime_string, char expected_jd_sign);
#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