macros.c 968 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include <assert.h>
  2. #include <sys/time.h>
  3. int main(void) {
  4. struct timeval x = { .tv_usec = 15 };
  5. struct timeval y = { 0 };
  6. struct timeval z = { 0 };
  7. struct timeval one_usec = { .tv_usec = 1 };
  8. struct timeval max_usec = { .tv_usec = 999999 };
  9. struct timeval one_sec = { .tv_sec = 1 };
  10. assert(!timerisset(&y));
  11. assert(timerisset(&x));
  12. timerclear(&x);
  13. assert(!timerisset(&x));
  14. assert(timercmp(&x, &y, ==));
  15. timeradd(&y, &one_usec, &z);
  16. assert(!timercmp(&x, &z, ==));
  17. assert(timercmp(&x, &z, <));
  18. timeradd(&z, &max_usec, &y);
  19. assert(y.tv_sec == 1);
  20. assert(y.tv_usec == 0);
  21. timersub(&y, &one_usec, &z);
  22. assert(z.tv_sec == 0);
  23. assert(z.tv_usec == 999999);
  24. timeradd(&z, &one_sec, &y);
  25. assert(y.tv_sec == 1);
  26. assert(y.tv_usec == 999999);
  27. for (int i = 0; i < 3; i += 1) {
  28. timersub(&y, &one_sec, &y);
  29. }
  30. assert(y.tv_sec == -2);
  31. assert(y.tv_usec == 999999);
  32. }