summaryrefslogtreecommitdiff
path: root/lib/mlibc/tests/ansi/timegm.c
blob: f5af03ea430a967cdb9e98ca04905ad31846aba9 (plain)
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
#include <time.h>
#include <stdio.h>
#include <assert.h>

int main() {
	struct tm soon = {};
	soon.tm_sec = 0;
	soon.tm_min = 0;
	soon.tm_hour = 0;
	soon.tm_mday = 1;
	soon.tm_mon = 0;
	soon.tm_year = 70;
	time_t result;
	time_t expected_result = 0;
	// This should be epoch.
	result = timegm(&soon);
	printf("epoch: %ld\n", result);
	assert(result == expected_result);

	soon.tm_sec = 12;
	soon.tm_min = 8;
	soon.tm_hour = 16;
	soon.tm_mday = 17;
	soon.tm_mon = 4;
	soon.tm_year = 122;
	expected_result = 1652803692;
	result = timegm(&soon);
	// On my host, this returned 1652803692, verify this.
	printf("epoch: %ld\n", result);
	assert(result == expected_result);

	soon.tm_sec = 45;
	soon.tm_min = 42;
	soon.tm_hour = 17;
	soon.tm_mday = 16;
	soon.tm_mon = 8;
	soon.tm_year = 69;
	expected_result = -9181035;
	result = timegm(&soon);
	// On my host, this returned -9181035, verify this.
	printf("epoch: %ld\n", result);
	assert(result == expected_result);

	return 0;
}