Merge pull request #2517 from kugelfuhr/kugelfuhr/time-improvements
Improved/fixed the time() function
This commit is contained in:
61
test/val/time-test2.c
Normal file
61
test/val/time-test2.c
Normal file
@@ -0,0 +1,61 @@
|
||||
/* Another test for time() */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
static int failures = 0;
|
||||
#define INV_TIME ((time_t)-1)
|
||||
#define TEST_TIME ((time_t)0x78AB1234)
|
||||
|
||||
/* We supply our own clock_gettime function so we can control the values
|
||||
** supplied to time() internally.
|
||||
*/
|
||||
static time_t timeval;
|
||||
static int timeres;
|
||||
int __fastcall__ clock_gettime (clockid_t, struct timespec *tp)
|
||||
{
|
||||
/* Don't touch tp in case of an error */
|
||||
if (timeres != -1) {
|
||||
tp->tv_sec = timeval;
|
||||
tp->tv_nsec = 0;
|
||||
}
|
||||
return timeres;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
time_t res, pres;
|
||||
|
||||
/* First test: Force time() to return an error. Check that both, the
|
||||
** returned value and the value passed via pointer are (time_t)-1.
|
||||
*/
|
||||
timeval = 42;
|
||||
timeres = -1;
|
||||
res = time(&pres);
|
||||
if (res != INV_TIME || pres != INV_TIME) {
|
||||
printf("Error in test 1\n");
|
||||
++failures;
|
||||
}
|
||||
|
||||
/* Second test: Return a valid value and check both results */
|
||||
timeval = TEST_TIME;
|
||||
timeres = 0;
|
||||
res = time(&pres);
|
||||
if (res != TEST_TIME || pres != TEST_TIME) {
|
||||
printf("Error in test 2\n");
|
||||
++failures;
|
||||
}
|
||||
|
||||
/* Third test: Return no error but an invalid value and check both
|
||||
** results
|
||||
*/
|
||||
timeval = INV_TIME;
|
||||
timeres = 0;
|
||||
res = time(&pres);
|
||||
if (res != INV_TIME || pres != INV_TIME) {
|
||||
printf("Error in test 3\n");
|
||||
++failures;
|
||||
}
|
||||
|
||||
return failures;
|
||||
}
|
||||
Reference in New Issue
Block a user