File: time.c

package info (click to toggle)
c2go 0.26.11-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,052 kB
  • sloc: ansic: 6,037; sh: 82; makefile: 5
file content (100 lines) | stat: -rw-r--r-- 2,147 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <stdio.h>
#include <time.h>

#include "tests.h"

#define START_TEST(t) \
    diag(#t);         \
    test_##t();

void test_time()
{
    time_t now;
    time_t tloc;

    now = time(NULL);
    is_not_eq(now, 0);

    now = time(&tloc);
    is_not_eq(now, 0);
    is_eq(now, tloc);
}

void test_ctime()
{
    char* s;

    // 1999-12-31 11:59:58
    time_t now = 946670398;
    s = ctime(&now);
    is_not_null(s);

    // Hours/minutes will vary based on local time. Ignore them.
    s[11] = 'H';
    s[12] = 'H';
    s[14] = 'm';
    s[15] = 'm';
    is_streq(s, "Fri Dec 31 HH:mm:58 1999\n");
}

void test_gmtime()
{
	struct tm * timeinfo;
	time_t      rawtime = 80000;
	timeinfo = gmtime ( &rawtime );
	is_eq( timeinfo-> tm_sec	,  20 );
	is_eq( timeinfo-> tm_min	,  13 );
	is_eq( timeinfo-> tm_hour	,  22 );
	is_eq( timeinfo-> tm_mday	,  1  );
	is_eq( timeinfo-> tm_mon	,  0  );
	is_eq( timeinfo-> tm_year	,  70 );
	is_eq( timeinfo-> tm_wday	,  4  );
	is_eq( timeinfo-> tm_yday	,  0  );
	is_eq( timeinfo-> tm_isdst	,  0  );
}

void test_mktime()
{
	struct tm  timeinfo;
	
	timeinfo.tm_year = 2000  - 1900;
	timeinfo.tm_mon  = 5     - 1   ;
	timeinfo.tm_mday = 20          ;
	timeinfo.tm_sec  = 0           ;
	timeinfo.tm_min  = 0           ;
	timeinfo.tm_hour = 0           ;
	
	mktime ( &timeinfo );
	
	is_eq(timeinfo.tm_wday  , 6           );
	is_eq(timeinfo.tm_year  , 100         );
	is_eq(timeinfo.tm_mon   , 4           );
	is_eq(timeinfo.tm_mday  , 20          );
}

void test_asctime()
{
	time_t rawtime = 80000;
	struct tm * timeinfo;
	timeinfo = gmtime ( &rawtime );
	is_streq(asctime(timeinfo) , "Thu Jan  1 22:13:20 1970\n" );
}

int main()
{
	plan(19);

	// sorting in according to :
	// http://www.cplusplus.com/reference/ctime/clock/
	START_TEST(asctime   );
	// TODO : START_TEST(clock     );
	START_TEST(ctime     );
	// TODO : START_TEST(difftime  );
	START_TEST(gmtime    );
	// TODO : START_TEST(localtime );
	START_TEST(mktime    );
	// TODO : START_TEST(strftime  );
	START_TEST(time      );
	
	done_testing();
}