1*384Szelenkov@nginx.com
2*384Szelenkov@nginx.com /*
3*384Szelenkov@nginx.com * Copyright (C) Igor Sysoev
4*384Szelenkov@nginx.com * Copyright (C) NGINX, Inc.
5*384Szelenkov@nginx.com */
6*384Szelenkov@nginx.com
7*384Szelenkov@nginx.com #include <nxt_main.h>
8*384Szelenkov@nginx.com #include "nxt_tests.h"
9*384Szelenkov@nginx.com
10*384Szelenkov@nginx.com
11*384Szelenkov@nginx.com typedef struct {
12*384Szelenkov@nginx.com nxt_str_t string;
13*384Szelenkov@nginx.com nxt_bool_t is_sec;
14*384Szelenkov@nginx.com nxt_int_t value;
15*384Szelenkov@nginx.com } nxt_term_parse_test_t;
16*384Szelenkov@nginx.com
17*384Szelenkov@nginx.com
18*384Szelenkov@nginx.com static const nxt_term_parse_test_t terms[] = {
19*384Szelenkov@nginx.com { nxt_string("1y"), 1, 365 * 24 * 60 * 60 },
20*384Szelenkov@nginx.com { nxt_string("1w"), 1, 7 * 24 * 60 * 60 },
21*384Szelenkov@nginx.com { nxt_string("1w"), 0, 7 * 24 * 60 * 60 * 1000 },
22*384Szelenkov@nginx.com { nxt_string("1w 1d"), 0, 8 * 24 * 60 * 60 * 1000 },
23*384Szelenkov@nginx.com { nxt_string("1w d"), 0, -1 },
24*384Szelenkov@nginx.com { nxt_string("w"), 0, -1 },
25*384Szelenkov@nginx.com { nxt_string("1d 1w"), 0, -1 },
26*384Szelenkov@nginx.com { nxt_string("25d"), 0, -2 },
27*384Szelenkov@nginx.com { nxt_string("300"), 1, 300 },
28*384Szelenkov@nginx.com { nxt_string("300"), 0, 300000 },
29*384Szelenkov@nginx.com { nxt_string("300s"), 1, 300 },
30*384Szelenkov@nginx.com { nxt_string("300ms"), 0, 300 },
31*384Szelenkov@nginx.com { nxt_string("1y 1M 1w1d1h1m1s"), 1,
32*384Szelenkov@nginx.com (((((365 + 30 + 7 + 1) * 24 + 1) * 60) + 1) * 60) + 1 },
33*384Szelenkov@nginx.com };
34*384Szelenkov@nginx.com
35*384Szelenkov@nginx.com
36*384Szelenkov@nginx.com nxt_int_t
nxt_term_parse_test(nxt_thread_t * thr)37*384Szelenkov@nginx.com nxt_term_parse_test(nxt_thread_t *thr)
38*384Szelenkov@nginx.com {
39*384Szelenkov@nginx.com nxt_int_t val;
40*384Szelenkov@nginx.com nxt_uint_t i;
41*384Szelenkov@nginx.com const nxt_str_t *s;
42*384Szelenkov@nginx.com
43*384Szelenkov@nginx.com nxt_thread_time_update(thr);
44*384Szelenkov@nginx.com
45*384Szelenkov@nginx.com for (i = 0; i < nxt_nitems(terms); i++) {
46*384Szelenkov@nginx.com
47*384Szelenkov@nginx.com s = &terms[i].string;
48*384Szelenkov@nginx.com val = nxt_term_parse(s->start, s->length, terms[i].is_sec);
49*384Szelenkov@nginx.com
50*384Szelenkov@nginx.com if (val != terms[i].value) {
51*384Szelenkov@nginx.com nxt_log_alert(thr->log,
52*384Szelenkov@nginx.com "term parse test failed: \"%V\": %i %i",
53*384Szelenkov@nginx.com s, terms[i].value, val);
54*384Szelenkov@nginx.com return NXT_ERROR;
55*384Szelenkov@nginx.com }
56*384Szelenkov@nginx.com }
57*384Szelenkov@nginx.com
58*384Szelenkov@nginx.com nxt_log_error(NXT_LOG_NOTICE, thr->log, "term parse test passed");
59*384Szelenkov@nginx.com return NXT_OK;
60*384Szelenkov@nginx.com }
61