time_utils-release/testbench.c

229 lines
6.0 KiB
C
Raw Normal View History

2024-04-02 05:01:30 +00:00
/* SPDX-License-Identifier: Apache-2.0 */
/**
* @file testbench.c
*
* @brief Testbench code file for Time Utils library
*
* @copyright Copyright (C) 2024 Jackrabbit Founders LLC. All rights reserved.
*
* @date Mar 2024
* @author Barrett Edwards <code@jrlabs.io>
*
*/
/* INCLUDES ==================================================================*/
/* printf()
*/
#include <stdio.h>
/* timespec
*/
#include <time.h>
2024-04-08 05:48:35 +00:00
#include "main.h"
2024-04-02 05:01:30 +00:00
/* MACROS ====================================================================*/
/* ENUMERATIONS ==============================================================*/
/* STRUCTS ===================================================================*/
/* GLOBAL VARIABLES ==========================================================*/
/* PROTOTYPES ================================================================*/
/* FUNCTIONS =================================================================*/
int main()
{
struct timespec a, b, c;
int rv;
printf("Add two time specs-------------------\n");
timespec_set(&a, 10, 17);
timespec_set(&b, 23, 11);
timespec_add(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nAdd two time specs-------------------\n");
timespec_set(&a, -10, 17);
timespec_set(&b, 23, -11);
timespec_add(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nAdd two time specs-------------------\n");
timespec_set(&a, -10, -17);
timespec_set(&b, 23, -11);
timespec_add(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nAdd two time specs-------------------\n");
timespec_set(&a, 10, 999999999);
timespec_set(&b, 23, 11);
timespec_add(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nAdd two time specs-------------------\n");
timespec_set(&a, 10, 1000000001);
timespec_set(&b, 23, 1000000001);
timespec_add(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nAdd two time specs-------------------\n");
timespec_set(&a, 10, -1000000001);
timespec_set(&b, 23, -1000000001);
timespec_add(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nAdd two time specs-------------------\n");
timespec_set(&a, 10, 4000000001);
timespec_set(&b, 23, 4000000001);
timespec_add(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\ncmp two time specs-------------------\n");
timespec_set(&a, 10, 1);
timespec_set(&b, 10, 1);
rv = timespec_cmp(&a, &b);
timespec_print(&a);
timespec_print(&b);
printf("rv = %d\n", rv);
printf("\ncmp two time specs-------------------\n");
timespec_set(&a, 10, 1);
timespec_set(&b, 11, 1);
rv = timespec_cmp(&a, &b);
timespec_print(&a);
timespec_print(&b);
printf("rv = %d\n", rv);
printf("\ncmp two time specs-------------------\n");
timespec_set(&a, 11, 1);
timespec_set(&b, 10, 1);
rv = timespec_cmp(&a, &b);
timespec_print(&a);
timespec_print(&b);
printf("rv = %d\n", rv);
printf("\ncmp two time specs-------------------\n");
timespec_set(&a, 10, 1);
timespec_set(&b, 10, 2);
rv = timespec_cmp(&a, &b);
timespec_print(&a);
timespec_print(&b);
printf("rv = %d\n", rv);
printf("\ncmp two time specs-------------------\n");
timespec_set(&a, 10, 2);
timespec_set(&b, 10, 1);
rv = timespec_cmp(&a, &b);
timespec_print(&a);
timespec_print(&b);
printf("rv = %d\n", rv);
printf("\ncmp two time specs-------------------\n");
timespec_set(&a, 11, 1);
timespec_set(&b, 10, 1000000002);
rv = timespec_cmp(&a, &b);
timespec_print(&a);
timespec_print(&b);
printf("rv = %d\n", rv);
printf("\nDiff two time specs-------------------\n");
timespec_set(&a, 23, 1);
timespec_set(&b, 10, 1);
timespec_diff(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nDiff two time specs-------------------\n");
timespec_set(&a, 23, 1);
//timespec_set(&b, 10, 1000000001);
b.tv_sec = 10; b.tv_nsec = 1000000001;
timespec_diff(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nDiff two time specs-------------------\n");
//timespec_set(&a, 23, 1);
a.tv_sec = 23; a.tv_nsec = 2000000001;
//timespec_set(&b, 10, 1000000001);
b.tv_sec = 10; b.tv_nsec = 1000000001;
timespec_diff(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nDiff two time specs-------------------\n");
timespec_set(&a, 0, 0);
//timespec_set(&b, 10, 1000000001);
b.tv_sec = 10; b.tv_nsec = 1000000001;
timespec_diff(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nDiff two time specs-------------------\n");
timespec_set(&a, 0, 0);
//timespec_set(&b, 10, 1000000001);
b.tv_sec = 10; b.tv_nsec = 2000000001;
timespec_diff(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nDiff two time specs-------------------\n");
timespec_set(&a, -1, 0);
timespec_set(&b, -10, 2000000001);
//b.tv_sec = -10; b.tv_nsec = 2000000001;
timespec_diff(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nDiff two time specs-------------------\n");
timespec_set(&a, -1, 0);
timespec_set(&b, -10, -2000000001);
//b.tv_sec = -10; b.tv_nsec = 2000000001;
timespec_diff(&a, &b, &c);
timespec_print(&a);
timespec_print(&b);
timespec_print(&c);
printf("\nCompare two time specs-------------------\n");
clock_gettime(CLOCK_MONOTONIC, &a);
clock_gettime(CLOCK_MONOTONIC, &b);
printf("timespec_cmp(a,b): %d\n", timespec_cmp(&a,&b));
printf("timespec_cmp(b,a): %d\n", timespec_cmp(&b,&a));
printf("timespec_cmp(a,a): %d\n", timespec_cmp(&a,&a));
printf("\nTest if time has elapsed ----------------\n");
clock_gettime(CLOCK_MONOTONIC, &a);
a.tv_sec += 5;
printf("timespec_elapsed(a): %d\n", timespec_elapsed(&a,-1));
printf("\nTest if time has elapsed ----------------\n");
clock_gettime(CLOCK_MONOTONIC, &a);
a.tv_sec -= 5;
printf("timespec_elapsed(a): %d\n", timespec_elapsed(&a,-1));
return 0;
}