You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
4.6 KiB
C
114 lines
4.6 KiB
C
2 years ago
|
#include <tau/tau.h>
|
||
|
#include <libmseed.h>
|
||
|
|
||
|
TEST (time, nstime)
|
||
|
{
|
||
|
char timestr[50];
|
||
|
nstime_t nstime;
|
||
|
|
||
|
/* Suppress error and warning messages by accumulating them */
|
||
|
ms_rloginit (NULL, NULL, NULL, NULL, 10);
|
||
|
|
||
|
/* General parsing test to nstime_t */
|
||
|
nstime = ms_timestr2nstime ("2004-05-12T7:8:9.123456788Z");
|
||
|
CHECK (nstime == 1084345689123456788, "Failed to convert time string: '2004-05-12T7:8:9.123456788Z'");
|
||
|
|
||
|
/* Format variations */
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY, NANO_MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.123456788");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, NANO_MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.123456788Z");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_DOY, NANO_MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.123456788 (133)");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_DOY_Z, NANO_MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.123456788Z (133)");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, SEEDORDINAL, NANO_MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "2004,133,07:08:09.123456788");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, UNIXEPOCH, NANO_MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "1084345689.123456788");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, NANOSECONDEPOCH, NANO_MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "1084345689123456788");
|
||
|
|
||
|
/* Subsecond variations */
|
||
|
|
||
|
/* Nano subseconds */
|
||
|
nstime = ms_timestr2nstime ("2004-05-12T7:8:9.123456788Z");
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, NANO);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.123456788Z");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, MICRO);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.123456Z");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, NONE);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09Z");
|
||
|
|
||
|
/* Micro subseconds */
|
||
|
nstime = ms_timestr2nstime ("2004-05-12T7:8:9.1234Z");
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, NANO_MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.123400Z");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, NANO_MICRO);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.123400Z");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.123400Z");
|
||
|
|
||
|
/* No subseconds */
|
||
|
nstime = ms_timestr2nstime ("2004-05-12T7:8:9Z");
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, NANO_MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09Z");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, NANO_MICRO);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09.000000Z");
|
||
|
|
||
|
ms_nstime2timestr (nstime, timestr, ISOMONTHDAY_Z, MICRO_NONE);
|
||
|
CHECK_STREQ (timestr, "2004-05-12T07:08:09Z");
|
||
|
|
||
|
/* Time string variations */
|
||
|
|
||
|
nstime = ms_timestr2nstime ("2004");
|
||
|
CHECK (nstime == 1072915200000000000, "Failed to convert time string: '2004'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("2004-2-9");
|
||
|
CHECK (nstime == 1076284800000000000, "Failed to convert time string: '2004-2-9'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("2004-05-12T7:8:9.12345Z");
|
||
|
CHECK (nstime == 1084345689123450000, "Failed to convert time string: '2004-05-12T7:8:9.12345Z'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("2004-05-12T7:8:9.12345");
|
||
|
CHECK (nstime == 1084345689123450000, "Failed to convert time string: '2004-05-12T7:8:9.12345'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("2004-05-12T7:8:9.123456788");
|
||
|
CHECK (nstime == 1084345689123456788, "Failed to convert time string: '2004-05-12T7:8:9.123456788'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("1084345689.123456788");
|
||
|
CHECK (nstime == 1084345689123456788, "Failed to convert time string: '1084345689.123456788'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("1969,201,20,17,40.98");
|
||
|
CHECK (nstime == -14182939020000000, "Failed to convert time string: '1969,201,20,17,40.98'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("1969-201T20:17:40.987654321");
|
||
|
CHECK (nstime == -14182939012345679, "Failed to convert time string: '1969-201T20:17:40.987654321'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("-14182939.012345679");
|
||
|
CHECK (nstime == -14182939012345679, "Failed to convert time string: '-14182939.012345679'");
|
||
|
|
||
|
/* Parsing error tests */
|
||
|
nstime = ms_timestr2nstime ("this is not a time string");
|
||
|
CHECK (nstime == NSTERROR, "Failed to produce error for time string: 'this is not a time string'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("0000-00-00");
|
||
|
CHECK (nstime == NSTERROR, "Failed to produce error for time string: '0000-00-00'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("5000-00-00");
|
||
|
CHECK (nstime == NSTERROR, "Failed to produce error for time string: '5000-00-00'");
|
||
|
|
||
|
nstime = ms_timestr2nstime ("20040512T000000");
|
||
|
CHECK (nstime == NSTERROR, "Failed to produce error for time string: '20040512T000000'");
|
||
|
}
|