|
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 |
} |