Age Owner Branch data TLA Line data Source code
1 : : #include <stdio.h>
2 : : #include <stdlib.h>
3 : : #include <pgtypes_error.h>
4 : : #include <sqltypes.h>
5 : :
6 : : /*
7 : : * This file tests various forms of date-input/output by means of
8 : : * rfmtdate / rdefmtdate / rstrdate
9 : : */
10 : :
11 : :
12 : : static void
13 : : check_return(int ret);
14 : :
15 : : static void
2357 peter_e@gmx.net 16 :CBC 2 : date_test_strdate(const char *input)
17 : : {
18 : : static int i;
19 : : date d;
20 : : int r, q;
21 : : char dbuf[11];
22 : :
6452 meskes@postgresql.or 23 : 2 : r = rstrdate(input, &d);
24 : 2 : printf("r: %d ", r);
25 [ + - ]: 2 : if (r == 0)
26 : : {
27 : 2 : q = rdatestr(d, dbuf);
28 : 2 : printf("q: %d ", q);
29 [ + - ]: 2 : if (q == 0)
30 : : {
31 : 2 : printf("date %d: %s\n", i++, dbuf);
32 : : }
33 : : else
6452 meskes@postgresql.or 34 :UBC 0 : printf("\n");
35 : : }
36 : : else
37 : 0 : check_return(r);
6452 meskes@postgresql.or 38 :CBC 2 : }
39 : :
40 : : static void
2357 peter_e@gmx.net 41 : 20 : date_test_defmt(const char *fmt, const char *input)
42 : : {
43 : : static int i;
44 : : char dbuf[11];
45 : : date d;
46 : : int q, r;
47 : :
6452 meskes@postgresql.or 48 : 20 : r = rdefmtdate(&d, fmt, input);
49 : 20 : printf("r: %d ", r);
50 [ + + ]: 20 : if (r == 0)
51 : : {
52 : 15 : q = rdatestr(d, dbuf);
53 : 15 : printf("q: %d ", q);
54 [ + - ]: 15 : if (q == 0)
55 : : {
56 : 15 : printf("date %d: %s\n", i++, dbuf);
57 : : }
58 : : else
6452 meskes@postgresql.or 59 :UBC 0 : printf("\n");
60 : : }
61 : : else
6452 meskes@postgresql.or 62 :CBC 5 : check_return(r);
63 : 20 : }
64 : :
65 : : static void
2357 peter_e@gmx.net 66 : 12 : date_test_fmt(date d, const char *fmt)
67 : : {
68 : : static int i;
69 : : char buf[200];
70 : : int r;
71 : :
6452 meskes@postgresql.or 72 : 12 : r = rfmtdate(d, fmt, buf);
73 : 12 : printf("r: %d ", r);
74 [ - + ]: 12 : if (r != 0)
6452 meskes@postgresql.or 75 :UBC 0 : check_return(r);
76 : : else
6452 meskes@postgresql.or 77 :CBC 12 : printf("date: %d: %s\n", i++, buf);
78 : 12 : }
79 : :
80 : :
81 : : int
82 : 1 : main(void)
83 : : {
84 : 1 : short mdy[3] = { 11, 23, 1959 };
85 : : char dbuf[11];
86 : : date d;
87 : : int r;
88 : :
89 : 1 : ECPGdebug(1, stderr);
90 : :
91 : 1 : r = rmdyjul(mdy, &d);
92 : 1 : printf("create: r: %d\n", r);
93 [ + - ]: 1 : if (r == 0)
94 : : {
95 : 1 : rdatestr(d, dbuf);
96 : 1 : printf("date: %s\n", dbuf);
97 : : }
98 : :
99 : : /* input mask is mmddyyyy */
100 : 1 : date_test_strdate("12031994");
101 : 1 : date_test_strdate("9.6.1994");
102 : :
103 : 1 : date_test_fmt(d, "mmddyy");
104 : 1 : date_test_fmt(d, "ddmmyy");
105 : 1 : date_test_fmt(d, "yymmdd");
106 : 1 : date_test_fmt(d, "yy/mm/dd");
107 : 1 : date_test_fmt(d, "yy mm dd");
108 : 1 : date_test_fmt(d, "yy.mm.dd");
109 : 1 : date_test_fmt(d, ".mm.yyyy.dd.");
110 : 1 : date_test_fmt(d, "mmm. dd, yyyy");
111 : 1 : date_test_fmt(d, "mmm dd yyyy");
112 : 1 : date_test_fmt(d, "yyyy dd mm");
113 : 1 : date_test_fmt(d, "ddd, mmm. dd, yyyy");
114 : 1 : date_test_fmt(d, "(ddd) mmm. dd, yyyy");
115 : :
116 : 1 : date_test_defmt("ddmmyy", "21-2-54");
117 : 1 : date_test_defmt("ddmmyy", "2-12-54");
118 : 1 : date_test_defmt("ddmmyy", "20111954");
119 : 1 : date_test_defmt("ddmmyy", "130464");
120 : 1 : date_test_defmt("mmm.dd.yyyy", "MAR-12-1967");
121 : 1 : date_test_defmt("yy/mm/dd", "1954, February 3rd");
122 : 1 : date_test_defmt("mmm.dd.yyyy", "041269");
123 : 1 : date_test_defmt("yy/mm/dd", "In the year 2525, in the month of July, mankind will be alive on the 28th day");
124 : 1 : date_test_defmt("dd-mm-yy", "I said on the 28th of July in the year 2525");
125 : 1 : date_test_defmt("mmm.dd.yyyy", "9/14/58");
126 : 1 : date_test_defmt("yy/mm/dd", "47/03/29");
127 : 1 : date_test_defmt("mmm.dd.yyyy", "oct 28 1975");
128 : 1 : date_test_defmt("mmddyy", "Nov 14th, 1985");
129 : : /* ok: still contains dd mm yy */
130 : 1 : date_test_defmt("bladdfoommbaryybong", "20/11/1954");
131 : : /* 1994 is not a leap year, it accepts the date as 01-03-1994 */
132 : 1 : date_test_defmt("ddmmyy", "29-02-1994");
133 : :
134 : : /* ECPG_INFORMIX_ENOTDMY, need "dd", "mm" and "yy" */
135 : 1 : date_test_defmt("dmy", "20/11/1954");
136 : :
137 : : /* ECPG_INFORMIX_ENOSHORTDATE */
138 : 1 : date_test_defmt("ddmmyy", "21254");
139 : 1 : date_test_defmt("ddmmyy", " 21254 ");
140 : :
141 : : /* ECPG_INFORMIX_BAD_DAY */
142 : 1 : date_test_defmt("ddmmyy", "320494");
143 : :
144 : : /* ECPG_INFORMIX_BAD_MONTH */
145 : 1 : date_test_defmt("mm-yyyy-dd", "13-1993-21");
146 : :
147 : : /* ECPG_INFORMIX_BAD_YEAR */
148 : : /* ??? */
149 : :
2432 peter_e@gmx.net 150 : 1 : return 0;
151 : : }
152 : :
153 : : static void
6425 tgl@sss.pgh.pa.us 154 : 5 : check_return(int ret)
155 : : {
6452 meskes@postgresql.or 156 [ + + + + : 5 : switch(ret)
- ]
157 : : {
158 : 1 : case ECPG_INFORMIX_ENOTDMY:
159 : 1 : printf("(ECPG_INFORMIX_ENOTDMY)");
160 : 1 : break;
161 : 2 : case ECPG_INFORMIX_ENOSHORTDATE:
162 : 2 : printf("(ECPG_INFORMIX_ENOSHORTDATE)");
163 : 2 : break;
164 : 1 : case ECPG_INFORMIX_BAD_DAY:
165 : 1 : printf("(ECPG_INFORMIX_BAD_DAY)");
166 : 1 : break;
167 : 1 : case ECPG_INFORMIX_BAD_MONTH:
168 : 1 : printf("(ECPG_INFORMIX_BAD_MONTH)");
169 : 1 : break;
6452 meskes@postgresql.or 170 :UBC 0 : default:
171 : 0 : printf("(unknown ret: %d)", ret);
172 : 0 : break;
173 : : }
6452 meskes@postgresql.or 174 :CBC 5 : printf("\n");
175 : 5 : }
|