View | Details | Raw Unified | Return to bug 3468 | Differences between
and this patch

Collapse All | Expand All

(-)test_convtime.c (+62 lines)
Lines 16-21 Link Here
16
16
17
#include "log.h"
17
#include "log.h"
18
#include "misc.h"
18
#include "misc.h"
19
#include "ssherr.h"
19
20
20
void test_convtime(void);
21
void test_convtime(void);
21
22
Lines 23-28 void Link Here
23
test_convtime(void)
24
test_convtime(void)
24
{
25
{
25
	char buf[1024];
26
	char buf[1024];
27
	uint64_t t;
26
28
27
	TEST_START("misc_convtime");
29
	TEST_START("misc_convtime");
28
	ASSERT_INT_EQ(convtime("0"), 0);
30
	ASSERT_INT_EQ(convtime("0"), 0);
Lines 51-55 test_convtime(void) Link Here
51
#if INT_MAX == 2147483647
53
#if INT_MAX == 2147483647
52
	ASSERT_INT_EQ(convtime("3550w5d3h14m8s"), -1);
54
	ASSERT_INT_EQ(convtime("3550w5d3h14m8s"), -1);
53
#endif
55
#endif
56
	TEST_DONE();
57
58
	/* XXX timezones/DST make verification of this tricky */
59
	/* XXX maybe setenv TZ and tzset() to make it unambiguous? */
60
	TEST_START("misc_parse_absolute_time");
61
	ASSERT_INT_EQ(parse_absolute_time("20000101", &t), 0);
62
	ASSERT_INT_EQ(parse_absolute_time("200001011223", &t), 0);
63
	ASSERT_INT_EQ(parse_absolute_time("20000101122345", &t), 0);
64
65
	/* forced UTC TZ */
66
	ASSERT_INT_EQ(parse_absolute_time("20000101Z", &t), 0);
67
	ASSERT_U64_EQ(t, 946684800);
68
	ASSERT_INT_EQ(parse_absolute_time("200001011223Z", &t), 0);
69
	ASSERT_U64_EQ(t, 946729380);
70
	ASSERT_INT_EQ(parse_absolute_time("20000101122345Z", &t), 0);
71
	ASSERT_U64_EQ(t, 946729425);
72
	ASSERT_INT_EQ(parse_absolute_time("20000101UTC", &t), 0);
73
	ASSERT_U64_EQ(t, 946684800);
74
	ASSERT_INT_EQ(parse_absolute_time("200001011223UTC", &t), 0);
75
	ASSERT_U64_EQ(t, 946729380);
76
	ASSERT_INT_EQ(parse_absolute_time("20000101122345UTC", &t), 0);
77
	ASSERT_U64_EQ(t, 946729425);
78
79
	/* Bad month */
80
	ASSERT_INT_EQ(parse_absolute_time("20001301", &t),
81
	    SSH_ERR_INVALID_FORMAT);
82
	ASSERT_INT_EQ(parse_absolute_time("20000001", &t),
83
	    SSH_ERR_INVALID_FORMAT);
84
	/* Incomplete */
85
	ASSERT_INT_EQ(parse_absolute_time("2", &t),
86
	    SSH_ERR_INVALID_FORMAT);
87
	ASSERT_INT_EQ(parse_absolute_time("2000", &t),
88
	    SSH_ERR_INVALID_FORMAT);
89
	ASSERT_INT_EQ(parse_absolute_time("20000", &t),
90
	    SSH_ERR_INVALID_FORMAT);
91
	ASSERT_INT_EQ(parse_absolute_time("200001", &t),
92
	    SSH_ERR_INVALID_FORMAT);
93
	ASSERT_INT_EQ(parse_absolute_time("2000010", &t),
94
	    SSH_ERR_INVALID_FORMAT);
95
	ASSERT_INT_EQ(parse_absolute_time("200001010", &t),
96
	    SSH_ERR_INVALID_FORMAT);
97
	/* Bad day, hour, minute, second */
98
	ASSERT_INT_EQ(parse_absolute_time("20000199", &t),
99
	    SSH_ERR_INVALID_FORMAT);
100
	ASSERT_INT_EQ(parse_absolute_time("200001019900", &t),
101
	    SSH_ERR_INVALID_FORMAT);
102
	ASSERT_INT_EQ(parse_absolute_time("200001010099", &t),
103
	    SSH_ERR_INVALID_FORMAT);
104
	ASSERT_INT_EQ(parse_absolute_time("20000101000099", &t),
105
	    SSH_ERR_INVALID_FORMAT);
106
	/* Invalid TZ specifier */
107
	ASSERT_INT_EQ(parse_absolute_time("20000101ZZ", &t),
108
	    SSH_ERR_INVALID_FORMAT);
109
	ASSERT_INT_EQ(parse_absolute_time("20000101PDT", &t),
110
	    SSH_ERR_INVALID_FORMAT);
111
	ASSERT_INT_EQ(parse_absolute_time("20000101U", &t),
112
	    SSH_ERR_INVALID_FORMAT);
113
	ASSERT_INT_EQ(parse_absolute_time("20000101UTCUTC", &t),
114
	    SSH_ERR_INVALID_FORMAT);
115
54
	TEST_DONE();
116
	TEST_DONE();
55
}
117
}

Return to bug 3468