#include "silk.h" RCSIDENT("$SiLK: options-date-parse-test.c 5718 2006-11-16 17:06:17Z mthomas $"); #include "utils.h" int main(int UNUSED(argc), char UNUSED(**argv)) { int result; uint32_t time; uint32_t time2; int precision; int precision2; skAppRegister( argv[0] ); printf( "Testing skStringParseDatetime()\n" ); result = skStringParseDatetime( &time, "2004/12/16", &precision ); if( result != 0 || time != 1103155200 || precision != 3 ) { printf( "Error test 1\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } result = skStringParseDatetime( &time, "1998/02/23:15", &precision ); if( result != 0 || time != 888246000 || precision != 4 ) { printf( "Error test 2\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } result = skStringParseDatetime( &time, "1998/02/23:15:30", &precision ); if( result != 0 || time != 888247800 || precision != 5 ) { printf( "Error test 3\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } result = skStringParseDatetime( &time, "2001/09/19:23:30:50", &precision ); if( result != 0 || time != 1000942250 || precision != 6 ) { printf( "Error test 4\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } /* wrong delimiter */ printf( "Should find error...\n" ); result = skStringParseDatetime( &time, "2001.09.24", NULL ); if( result != -1 ) { printf( "Error test 5\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } /* date too short */ printf( "Should find error...\n" ); result = skStringParseDatetime( &time, "2001/09", NULL ); if( result != -1 ) { printf( "Error test 6\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } /* one too many precisions... */ printf( "Should find error...\n" ); result = skStringParseDatetime( &time, "2001/09/19:23:30:50:19", NULL ); if( result != -1 ) { printf( "Error test 7\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } /* a great many seconds */ printf( "Should find error...\n" ); result = skStringParseDatetime( &time, "2001/09/19:23:30:400", NULL ); if( result != -1 ) { printf( "Error test 8\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } printf( "Done testing\n\n" ); printf( "Testing skStringParseDatetimeRange()\n" ); result = skStringParseDatetimeRange( &time, &time2, "2004/12/16", &precision, &precision2 ); if( result != 0 || time != 1103155200 || precision != 3 ) { printf( "Error test 1\n" ); printf( " err code: %d\n", result ); printf( " stime: %u\n", time ); printf( " etime: %u\n", time2 ); printf( " sprecision: %u\n", precision ); printf( " eprecision: %u\n", precision2 ); } result = skStringParseDatetimeRange( &time, &time2, "2004/12/16-2004/12/17", &precision, &precision2 ); if( result != 0 || time != 1103155200 || precision != 3 || time2 != 1103241600 || precision2 != 3 ) { printf( "Error test 2\n" ); printf( " err code: %d\n", result ); printf( " stime: %u\n", time ); printf( " etime: %u\n", time2 ); printf( " sprecision: %u\n", precision ); printf( " eprecision: %u\n", precision2 ); } result = skStringParseDatetimeRange( &time, &time2, "2004/12/16:00:00-2004/12/16:00:00:02", &precision, &precision2 ); if( result != 0 || time != 1103155200 || precision != 5 || time2 != 1103155202 || precision2 != 6 ) { printf( "Error test 3\n" ); printf( " err code: %d\n", result ); printf( " stime: %u\n", time ); printf( " etime: %u\n", time2 ); printf( " sprecision: %u\n", precision ); printf( " eprecision: %u\n", precision2 ); } /* end time before start time */ printf( "Should find error...\n" ); result = skStringParseDatetimeRange( &time, &time2, "2004/12/16:05-2004/12/16:01", &precision, &precision2 ); if( result != 1 || time != 1103173200 || precision != 4 || time2 != 1103158800 || precision2 != 4 ) { printf( "Error test 4\n" ); printf( " err code: %d\n", result ); printf( " stime: %u\n", time ); printf( " etime: %u\n", time2 ); printf( " sprecision: %u\n", precision ); printf( " eprecision: %u\n", precision2 ); } /* dot instead of colon, parse error */ printf( "Should find error...\n" ); result = skStringParseDatetimeRange( &time, &time2, "2004/12/16:05-2004/12/16.01", &precision, &precision2 ); if( result != -1 || time != 1103173200 || precision != 4 || time2 != 1103158800 || precision2 != 4 ) { printf( "Error test 5\n" ); printf( " err code: %d\n", result ); printf( " stime: %u\n", time ); printf( " etime: %u\n", time2 ); printf( " sprecision: %u\n", precision ); printf( " eprecision: %u\n", precision2 ); } printf( "Done testing\n\n" ); printf( "Testing skDatetimeCeiling()\n" ); result = skDatetimeCeiling( &time, 1103155200, 3 ); if( result != 0 || time != 1103241599 ) { printf( "Error test 1\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } result = skDatetimeCeiling( &time, 888246000, 4 ); if( result != 0 || time != 888249599 ) { printf( "Error test 2\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } result = skDatetimeCeiling( &time, 888247800, 5 ); if( result != 0 || time != 888247859 ) { printf( "Error test 3\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } result = skDatetimeCeiling( &time, 888247830, 6 ); if( result != -1 ) { printf( "Error test 4\n" ); printf( " err code: %d\n", result ); printf( " time: %u\n", time ); } printf( "Done testing\n\n" ); return 0; }