xref: /unit/src/test/nxt_term_parse_test.c (revision 384:8f86d3ff3e29)
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