2
* @version 1.1 (2003-01-22)
6
* @description validate date functions
11
require("lifelines-reports.version:1.3")
12
option("explicitvars") /* Disallow use of undefined variables */
15
/* entry point in case not invoked via st_all.ll */
22
test some date functions with various GEDCOM dates
28
set_and_check_locale("en_US", "English")
30
/* Test parsing only */
31
call tdparse("2 JAN 1953", 1953, 1, 2)
32
call tdparse("14 FEB 857", 857, 2, 14)
33
call tdparse("8/14/33", 33, 8, 14)
34
call tdparse("9/22/1", 1, 9, 22)
35
call tdparse("14 OCT 3 B.C.", 3, 10, 14)
36
call tdparse("14 OCT 3 BC", 3, 10, 14)
37
call tdparse("OCT 3 BC", 3, 10, 0)
38
call tdparse("3 BC", 3, 0, 0)
39
call tdparse("9/22/1", 1, 9, 22)
40
call tdparse("AFT 3 SEP 1630", 1630, 9, 3)
41
call tdparse("FROM 30 SEP 1630 TO 1700", 1630, 9, 30)
42
call tdparse("@#DJULIAN@ 5 MAY 1204", 1204, 5, 5)
43
call tdparse("@#DHEBREW@ 1 ADR 3011", 3011, 6, 1)
44
call tdparse("@#DFRENCH R@ 1 VEND 11", 11, 1, 1)
45
call tdparse("junk", 0, 0, 0)
46
call tdparse("15 ___ 1945", 1945, 0, 15)
47
call tdparse("__ ___ 1945", 1945, 0, 0)
48
call tdparse("_ ___ 1950", 1950, 0, 0)
49
call tdparse("_ ___ 90", 90, 0, 0)
50
call tdparse("2/3 JAN 1953", 1953, 1, 2)
51
call tdparse("2/3 JAN 1953/4", 1953, 1, 2)
52
call tdparse("2/3 JAN 1953/54", 1953, 1, 2)
53
call tdparse("2/3 JAN 1953/954", 1953, 1, 2)
54
call tdparse("FROM 2/3 JAN 1953/954 TO 2004", 1953, 1, 2)
55
call tdparse("2 JAN 1950s", 1950, 1, 2)
56
call tdparse("2-5 JAN 1950-1970", 1950, 1, 2)
57
call tdparse("2-13 OCT 1880-87", 1880, 10, 2)
58
call tdparse("1930-11-24", 1930, 11, 24)
61
/* NB: We do not test all possible format combinations, as there are quite a lot
62
(3 day formats, 11 month formats, 3 year formats, 14 combining formats,
63
9 era formats -- multiply out to over thousands of combinations for stddate
64
and times 6 cmplx formats for each complex date) */
68
/* test simple 4 digit year dates */
69
/* test different day formats */
70
call tdfb("2 JAN 1953", 0, 0, 0, 0, 0, 1, " 2 1 1953", "*")
71
call tdfb("2 JAN 1953", 1, 0, 0, 0, 0, 1, "02 1 1953", "*")
72
call tdfb("2 JAN 1953", 2, 0, 0, 0, 0, 1, "2 1 1953", "*")
73
/* test different month formats */
74
call tdfb("2 JAN 1953", 2, 1, 0, 0, 0, 1, "2 01 1953", "*")
75
call tdfb("2 JAN 1953", 2, 2, 0, 0, 0, 1, "2 1 1953", "*")
76
call tdfb("2 JAN 1953", 2, 3, 0, 0, 0, 1, "2 JAN 1953", "*")
77
call tdfb("2 JAN 1953", 2, 4, 0, 0, 0, 1, "2 Jan 1953", "*")
78
call tdfb("2 JAN 1953", 2, 5, 0, 0, 0, 1, "2 JANUARY 1953", "*")
79
call tdfb("2 JAN 1953", 2, 6, 0, 0, 0, 1, "2 January 1953", "*")
80
call tdfb("2 JAN 1953", 2, 7, 0, 0, 0, 1, "2 jan 1953", "*")
81
call tdfb("2 JAN 1953", 2, 8, 0, 0, 0, 1, "2 january 1953", "*")
82
call tdfb("2 JAN 1953", 2, 9, 0, 0, 0, 1, "2 JAN 1953", "*")
83
call tdfb("2 JAN 1953", 2,10, 0, 0, 0, 1, "2 i 1953", "*")
84
call tdfb("2 JAN 1953", 2,11, 0, 0, 0, 1, "2 I 1953", "*")
85
/* test different era formats */
86
call tdfb("2 JAN 1953", 2, 2, 0, 0, 2, 1, "2 1 1953 A.D.", "*")
87
call tdfb("2 JAN 1953", 2, 2, 0, 0, 12, 1, "2 1 1953 AD", "*")
88
call tdfb("2 JAN 1953", 2, 2, 0, 0, 22, 1, "2 1 1953 C.E.", "*")
89
call tdfb("2 JAN 1953", 2, 2, 0, 0, 32, 1, "2 1 1953 CE", "*")
90
/* test different date (ymd) formats */
91
call tdfb("2 JAN 1953", 2, 2, 0, 1, 32, 1, "1 2, 1953 CE", "*")
92
call tdfb("2 JAN 1953", 2, 2, 0, 2, 32, 1, "1/2/1953 CE", "*")
93
call tdfb("2 JAN 1953", 2, 2, 0, 3, 32, 1, "2/1/1953 CE", "*")
94
call tdfb("2 JAN 1953", 2, 2, 0, 4, 32, 1, "1-2-1953 CE", "*")
95
call tdfb("2 JAN 1953", 2, 2, 0, 5, 32, 1, "2-1-1953 CE", "*")
96
call tdfb("2 JAN 1953", 2, 2, 0, 6, 32, 1, "121953 CE", "*")
97
call tdfb("2 JAN 1953", 2, 2, 0, 7, 32, 1, "211953 CE", "*")
98
call tdfb("2 JAN 1953", 2, 2, 0, 8, 32, 1, "1953 1 2 CE", "*")
99
call tdfb("2 JAN 1953", 2, 2, 0, 9, 32, 1, "1953/1/2 CE", "*")
100
call tdfb("2 JAN 1953", 2, 2, 0, 10, 32, 1, "1953-1-2 CE", "*")
101
call tdfb("2 JAN 1953", 2, 2, 0, 11, 32, 1, "195312 CE", "*")
102
call tdfb("2 JAN 1953", 2, 2, 0, 12, 32, 1, "1953", "*")
103
call tdfb("2 JAN 1953", 2, 2, 0, 13, 32, 1, "2/1 1953 CE", "*")
104
call tdfb("2 JAN 1953", 2, 2, 0, 14, 32, 1, "2 JAN 1953", "*")
105
/* test custom date pic */
107
call tdfb("2 JAN 1953", 2, 2, 0, 10, 32, 1, "2.1.1953 CE", "*")
108
datepic("%d of %m, %y")
109
call tdfb("2 JAN 1953", 2, 4, 0, 10, 1, 1, "2 of Jan, 1953", "*")
111
call tdfb("2 JAN 1953", 2, 10, 2, 10, 1, 1, "1953.i.2", "*")
113
/* test missing day or month (legal in GEDCOM) */
114
call tdfb("2 JAN 1953", 1, 1, 1, 2, 2, 1, "01/02/1953 A.D.", "*")
115
call tdfb("JAN 1953", 1, 1, 1, 2, 2, 1, "01/ /1953 A.D.", "*")
116
call tdfb("1953", 1, 1, 1, 2, 2, 1, " / /1953 A.D.", "*")
118
/* test Italian months */
119
if (not(set_and_check_locale("it", "Italian"))) {
120
set(testskip, add(testskip, 6))
122
call tdfb("2 JAN 1953", 2, 3, 0, 0, 0, 1, "2 GEN 1953", "*")
123
call tdfb("2 JAN 1953", 2, 4, 0, 0, 0, 1, "2 Gen 1953", "*")
124
call tdfb("2 JAN 1953", 2, 5, 0, 0, 0, 1, "2 GENNAIO 1953", "*")
125
call tdfb("2 JAN 1953", 2, 6, 0, 0, 0, 1, "2 Gennaio 1953", "*")
126
call tdfb("2 JAN 1953", 2, 7, 0, 0, 0, 1, "2 gen 1953", "*")
127
call tdfb("2 JAN 1953", 2, 8, 0, 0, 0, 1, "2 gennaio 1953", "*")
128
set_and_check_locale("en_US", "English")
131
/* test Swedish months */
132
if (not(set_and_check_locale("sv", "Swedish"))) {
133
set(testskip, add(testskip, 6))
135
call tdfb("2 OCT 1953", 2, 3, 0, 0, 0, 1, "2 OKT 1953", "*")
136
call tdfb("2 OCT 1953", 2, 4, 0, 0, 0, 1, "2 Okt 1953", "*")
137
call tdfb("2 OCT 1953", 2, 5, 0, 0, 0, 1, "2 OKTOBER 1953", "*")
138
call tdfb("2 OCT 1953", 2, 6, 0, 0, 0, 1, "2 Oktober 1953", "*")
139
call tdfb("2 OCT 1953", 2, 7, 0, 0, 0, 1, "2 okt 1953", "*")
140
call tdfb("2 OCT 1953", 2, 8, 0, 0, 0, 1, "2 oktober 1953", "*")
141
set_and_check_locale("en_US", "English")
144
/* test roman numeral months */
145
call tdfb("2 JAN 1953", 2,10, 0, 0, 0, 1, "2 i 1953", "*")
146
call tdfb("2 JAN 1953", 2,11, 0, 0, 0, 1, "2 I 1953", "*")
147
call tdfb("2 FEB 1953", 2,10, 0, 0, 0, 1, "2 ii 1953", "*")
148
call tdfb("2 FEB 1953", 2,11, 0, 0, 0, 1, "2 II 1953", "*")
149
call tdfb("2 MAR 1953", 2,10, 0, 0, 0, 1, "2 iii 1953", "*")
150
call tdfb("2 MAR 1953", 2,11, 0, 0, 0, 1, "2 III 1953", "*")
151
call tdfb("2 APR 1953", 2,10, 0, 0, 0, 1, "2 iv 1953", "*")
152
call tdfb("2 APR 1953", 2,11, 0, 0, 0, 1, "2 IV 1953", "*")
153
call tdfb("2 MAY 1953", 2,10, 0, 0, 0, 1, "2 v 1953", "*")
154
call tdfb("2 MAY 1953", 2,11, 0, 0, 0, 1, "2 V 1953", "*")
155
call tdfb("2 JUN 1953", 2,10, 0, 0, 0, 1, "2 vi 1953", "*")
156
call tdfb("2 JUN 1953", 2,11, 0, 0, 0, 1, "2 VI 1953", "*")
157
call tdfb("2 JUL 1953", 2,10, 0, 0, 0, 1, "2 vii 1953", "*")
158
call tdfb("2 JUL 1953", 2,11, 0, 0, 0, 1, "2 VII 1953", "*")
159
call tdfb("2 AUG 1953", 2,10, 0, 0, 0, 1, "2 viii 1953", "*")
160
call tdfb("2 AUG 1953", 2,11, 0, 0, 0, 1, "2 VIII 1953", "*")
161
call tdfb("2 SEP 1953", 2,10, 0, 0, 0, 1, "2 ix 1953", "*")
162
call tdfb("2 SEP 1953", 2,11, 0, 0, 0, 1, "2 IX 1953", "*")
163
call tdfb("2 OCT 1953", 2,10, 0, 0, 0, 1, "2 x 1953", "*")
164
call tdfb("2 OCT 1953", 2,11, 0, 0, 0, 1, "2 X 1953", "*")
165
call tdfb("2 NOV 1953", 2,10, 0, 0, 0, 1, "2 xi 1953", "*")
166
call tdfb("2 NOV 1953", 2,11, 0, 0, 0, 1, "2 XI 1953", "*")
167
call tdfb("2 DEC 1953", 2,10, 0, 0, 0, 1, "2 xii 1953", "*")
168
call tdfb("2 DEC 1953", 2,11, 0, 0, 0, 1, "2 XII 1953", "*")
169
call tdfb("@#DHEBREW@ 2 ELL 1953", 2,10, 0, 0, 0, 1, "2 xiii 1953 HEB", "*")
170
call tdfb("@#DHEBREW@ 2 ELL 1953", 2,11, 0, 0, 0, 1, "2 XIII 1953 HEB", "*")
172
/* test simple 3 digit year dates */
173
call tdfb("11 MAY 812", 0, 0, 0, 0, 0, 1, "11 5 812", "*")
174
call tdfb("11 MAY 812", 0, 1, 0, 0, 0, 1, "11 05 812", "*")
175
call tdfb("11 MAY 812", 0, 2, 0, 0, 0, 1, "11 5 812", "*")
176
call tdfb("11 MAY 812", 0, 3, 0, 0, 0, 1, "11 MAY 812", "*")
177
call tdfb("11 MAY 812", 0, 4, 0, 0, 0, 1, "11 May 812", "*")
178
call tdfb("11 MAY 812", 0, 5, 0, 0, 0, 1, "11 MAY 812", "*" )
179
call tdfb("11 MAY 812", 0, 6, 0, 0, 0, 1, "11 May 812", "*")
180
call tdfb("11 MAY 812", 1, 6, 0, 0, 0, 1, "11 May 812", "*")
181
call tdfb("11 MAY 812", 2, 6, 0, 0, 0, 1, "11 May 812", "*")
182
/* test missing day or month (legal in GEDCOM) */
183
call tdfb("11 MAY 812", 1, 1, 1, 2, 2, 1, "05/11/0812 A.D.", "*")
184
call tdfb("MAY 812", 1, 1, 1, 2, 2, 1, "05/ /0812 A.D.", "*")
185
call tdfb("812", 1, 1, 1, 2, 2, 1, " / /0812 A.D.", "*")
187
/* test simple 2 digit year dates */
188
call tdfb("2 JAN 53", 0, 0, 0, 0, 0, 1, " 2 1 53", "*")
189
call tdfb("2 JAN 53", 1, 0, 0, 0, 0, 1, "02 1 53", "*")
190
call tdfb("2 JAN 53", 2, 0, 0, 0, 0, 1, "2 1 53", "*")
191
call tdfb("2 JAN 53", 2, 1, 0, 0, 0, 1, "2 01 53", "*")
192
call tdfb("2 JAN 53", 2, 1, 1, 0, 0, 1, "2 01 0053", "*")
193
call tdfb("2 JAN 53", 2, 1, 2, 0, 0, 1, "2 01 53", "*")
194
/* test missing day or month (legal in GEDCOM) */
195
call tdfb("2 JAN 53", 1, 1, 1, 2, 2, 1, "01/02/0053 A.D.", "*")
196
call tdfb("JAN 53", 1, 1, 1, 2, 2, 1, "01/ /0053 A.D.", "*")
197
call tdfb("53", 1, 1, 1, 2, 2, 1, " / /0053 A.D.", "*")
199
/* test simple 1 digit year dates */
200
call tdfb("2 JAN 3", 0, 0, 0, 0, 0, 1, " 2 1 3", "*")
201
call tdfb("2 JAN 3", 1, 0, 0, 0, 0, 1, "02 1 3", "*")
202
call tdfb("2 JAN 3", 2, 0, 0, 0, 0, 1, "2 1 3", "*")
203
call tdfb("2 JAN 3", 2, 1, 0, 0, 0, 1, "2 01 3", "*")
204
call tdfb("2 JAN 3", 2, 1, 1, 0, 0, 1, "2 01 0003", "*")
205
call tdfb("2 JAN 3", 2, 1, 2, 0, 0, 1, "2 01 3", "*")
206
/* test missing day or month (legal in GEDCOM) */
207
call tdfb("2 JAN 3", 1, 1, 1, 2, 2, 1, "01/02/0003 A.D.", "*")
208
call tdfb("JAN 3", 1, 1, 1, 2, 2, 1, "01/ /0003 A.D.", "*")
209
call tdfb("3", 1, 1, 1, 2, 2, 1, " / /0003 A.D.", "*")
211
/* test slash years */
212
call tdfb("24 FEB 1956/7", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
213
call tdfb("24 FEB 1956/57", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
214
call tdfb("24 FEB 1956/957", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
215
call tdfb("24 FEB 1956/1957", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
217
/* test simple BC dates */
218
call tdfb("15 MAR 30 B.C.", 0, 0, 0, 0, 0, 1, "15 3 30", "*")
219
call tdfb("15 MAR 30 B.C.", 0, 0, 0, 0, 1, 1, "15 3 30 B.C.", "*")
220
call tdfb("15 MAR 30 B.C.", 0, 0, 1, 0, 1, 1, "15 3 0030 B.C.", "*")
221
call tdfb("15 MAR 30 B.C.", 0, 0, 2, 0, 1, 1, "15 3 30 B.C.", "*")
222
call tdfb("15 MAR 30 B.C.", 0, 0, 2, 0, 2, 1, "15 3 30 B.C.", "*")
223
call tdfb("15 MAR 30 B.C.", 0, 0, 2, 0, 11, 1, "15 3 30 BC", "*")
224
call tdfb("15 MAR 30 B.C.", 0, 0, 2, 0, 21, 1, "15 3 30 B.C.E.", "*")
225
call tdfb("15 MAR 30 B.C.", 0, 0, 2, 0, 31, 1, "15 3 30 BCE", "*")
226
call tdfb("15 MAR 30 (B.C.)", 0, 0, 0, 0, 0, 1, "15 3 30", "*")
227
call tdfb("15 MAR 30 (B.C.)", 0, 0, 0, 0, 1, 1, "15 3 30 B.C.", "*")
228
call tdfb("15 MAR 30 (B.C.)", 0, 0, 1, 0, 1, 1, "15 3 0030 B.C.", "*")
229
call tdfb("15 MAR 30 (B.C.)", 0, 0, 2, 0, 1, 1, "15 3 30 B.C.", "*")
230
call tdfb("15 MAR 30 (B.C.)", 0, 0, 2, 0, 2, 1, "15 3 30 B.C.", "*")
231
call tdfb("15 MAR 30 (B.C.)", 0, 0, 2, 0, 11, 1, "15 3 30 BC", "*")
232
call tdfb("15 MAR 30 (B.C.)", 0, 0, 2, 0, 21, 1, "15 3 30 B.C.E.", "*")
233
call tdfb("15 MAR 30 (B.C.)", 0, 0, 2, 0, 31, 1, "15 3 30 BCE", "*")
235
/* test simple dates in non-GEDCOM format */
236
/* It tries to handle 3 numbers, *if* it can find unambiguous interpretation */
237
call tdfb("1930/11/24", 0, 0, 0, 0, 0, 1, "24 11 1930", "*")
238
call tdfb("1930 11 24", 0, 0, 0, 0, 0, 1, "24 11 1930", "*")
239
call tdfb("1930.11.24", 0, 0, 0, 0, 0, 1, "24 11 1930", "*")
240
call tdfb("1930-11-24", 0, 0, 0, 0, 0, 1, "24 11 1930", "*")
241
call tdfb("11/24/1930", 0, 0, 0, 0, 0, 1, "24 11 1930", "*")
242
call tdfb("24/11/1930", 0, 0, 0, 0, 0, 1, "24 11 1930", "*")
243
call tdfb("1956/7 FEB 24", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
244
call tdfb("1956/57 FEB 24", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
245
call tdfb("1956/957 FEB 24", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
246
call tdfb("1956/1957 FEB 24", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
247
call tdfb("1956/7 24 2", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
248
call tdfb("1956/57 24 2", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
249
call tdfb("1956/957 24 2", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
250
call tdfb("1956/1957 24 2", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
251
call tdfb("1956/7 24 2", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
252
call tdfb("1956/57 24 2", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
253
call tdfb("1956/957 24 2", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
254
call tdfb("1956/1957 24 2", 2, 2, 0, 10, 0, 0, "1956-2-24", "*")
258
call tdfb("AFT 3 SEP 1630", 0, 0, 0, 0, 0, 1, " 3 9 1630", "after 3 9 1630")
259
call tdfb("AFT 3 SEP 1630", 0, 0, 0, 0, 0, 3, " 3 9 1630", "AFT 3 9 1630")
260
call tdfb("AFT 3 SEP 1630", 0, 0, 0, 0, 0, 4, " 3 9 1630", "Aft 3 9 1630")
261
call tdfb("AFT 3 SEP 1630", 0, 0, 0, 0, 0, 5, " 3 9 1630", "AFTER 3 9 1630")
262
call tdfb("AFT 3 SEP 1630", 0, 0, 0, 0, 0, 6, " 3 9 1630", "After 3 9 1630")
263
call tdfb("AFT 3 SEP 1630", 0, 0, 0, 0, 0, 7, " 3 9 1630", "aft 3 9 1630")
264
call tdfb("AFT 3 SEP 1630", 0, 0, 0, 0, 0, 8, " 3 9 1630", "after 3 9 1630")
266
call tdfb("AFT 3 SEP 1630", 0, 0, 0, 0, 0, 8, " 3 9 1630", "> 3 9 1630")
269
call tdfb("BEF 3 SEP 1630", 0, 0, 0, 0, 0, 1, " 3 9 1630", "before 3 9 1630")
270
call tdfb("BEF 3 SEP 1630", 0, 0, 0, 0, 0, 3, " 3 9 1630", "BEF 3 9 1630")
271
call tdfb("BEF 3 SEP 1630", 0, 0, 0, 0, 0, 4, " 3 9 1630", "Bef 3 9 1630")
272
call tdfb("BEF 3 SEP 1630", 0, 0, 0, 0, 0, 5, " 3 9 1630", "BEFORE 3 9 1630")
273
call tdfb("BEF 3 SEP 1630", 0, 0, 0, 0, 0, 6, " 3 9 1630", "Before 3 9 1630")
274
call tdfb("BEF 3 SEP 1630", 0, 0, 0, 0, 0, 7, " 3 9 1630", "bef 3 9 1630")
275
call tdfb("BEF 3 SEP 1630", 0, 0, 0, 0, 0, 8, " 3 9 1630", "before 3 9 1630")
277
call tdfb("BEF 3 SEP 1630", 0, 0, 0, 0, 0, 8, " 3 9 1630", "< 3 9 1630")
280
call tdfb("BET 3 SEP 1630 AND OCT 1900", 0, 0, 0, 0, 0, 1, " 3 9 1630", "between 3 9 1630 and 10 1900")
281
complexpic(5, "%1/%2")
282
call tdfb("BET 3 SEP 1630 AND OCT 1900", 2, 2, 0, 5, 0, 1, "3-9-1630", "3-9-1630/-10-1900")
285
call tdfb("FROM 3 SEP 1630", 0, 0, 0, 0, 0, 1, " 3 9 1630", "from 3 9 1630")
287
call tdfb("TO 3 SEP 1630", 0, 0, 0, 0, 0, 1, " 3 9 1630", "to 3 9 1630")
289
call tdfb("FROM 3 SEP 1630 TO 1700", 0, 0, 0, 0, 0, 1, " 3 9 1630", "from 3 9 1630 to 1700")
290
call tdfb("FROM 3 SEP 1630 TO 1700", 0, 0, 0, 0, 0, 3, " 3 9 1630", "FR 3 9 1630 TO 1700")
291
call tdfb("FROM 3 SEP 1630 TO 1700", 0, 0, 0, 0, 0, 4, " 3 9 1630", "Fr 3 9 1630 To 1700")
292
call tdfb("FROM 3 SEP 1630 TO 1700", 0, 0, 0, 0, 0, 5, " 3 9 1630", "FROM 3 9 1630 TO 1700")
293
call tdfb("FROM 3 SEP 1630 TO 1700", 0, 0, 0, 0, 0, 6, " 3 9 1630", "From 3 9 1630 To 1700")
294
call tdfb("FROM 3 SEP 1630 TO 1700", 0, 0, 0, 0, 0, 7, " 3 9 1630", "fr 3 9 1630 to 1700")
295
call tdfb("FROM 3 SEP 1630 TO 1700", 0, 0, 0, 0, 0, 8, " 3 9 1630", "from 3 9 1630 to 1700")
296
complexpic(8, "%1=>%2")
297
call tdfb("FROM 3 SEP 1630 TO 1700", 2, 2, 0, 9, 0, 8, "1630/9/3", "1630/9/3=>1700//")
300
call tdfb("ABT 3 SEP 890", 0, 0, 0, 0, 0, 1, " 3 9 890", "about 3 9 890")
301
call tdfb("EST 3 SEP 890", 0, 0, 0, 0, 0, 1, " 3 9 890", "estimated 3 9 890")
302
call tdfb("EST 3 SEP 890", 0, 0, 0, 0, 0, 3, " 3 9 890", "EST 3 9 890")
303
call tdfb("EST 3 SEP 890", 0, 0, 0, 0, 0, 4, " 3 9 890", "Est 3 9 890")
304
call tdfb("EST 3 SEP 890", 0, 0, 0, 0, 0, 5, " 3 9 890", "ESTIMATED 3 9 890")
305
call tdfb("EST 3 SEP 890", 0, 0, 0, 0, 0, 6, " 3 9 890", "Estimated 3 9 890")
306
call tdfb("EST 3 SEP 890", 0, 0, 0, 0, 0, 7, " 3 9 890", "est 3 9 890")
307
call tdfb("EST 3 SEP 890", 0, 0, 0, 0, 0, 8, " 3 9 890", "estimated 3 9 890")
309
call tdfb("EST 3 SEP 890", 0, 0, 0, 0, 0, 1, " 3 9 890", "~ 3 9 890")
312
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 1, "890-9-3", "calculated 890-9-3")
313
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 3, "890-9-3", "CAL 890-9-3")
314
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 4, "890-9-3", "Cal 890-9-3")
315
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 5, "890-9-3", "CALCULATED 890-9-3")
316
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 6, "890-9-3", "Calculated 890-9-3")
317
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 7, "890-9-3", "cal 890-9-3")
318
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 8, "890-9-3", "calculated 890-9-3")
320
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 1, "890-9-3", "^890-9-3")
322
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 1, "890-9-3", "^")
323
complexpic(2, "^%1^%1")
324
call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 1, "890-9-3", "^890-9-3^890-9-3")
327
/* Complex tests with bad input */
328
call tdfb("24 SEP 811 TO 29 SEP 811", 0, 0, 0, 0, 0, 1, "24 9 811", "from 24 9 811 to 29 9 811")
332
call tdfb("@#DGREGORIAN@ 1 JAN 1953", 2, 6, 0, 0, 0, 1, "1 January 1953", "*")
333
call tdfb("@#DJULIAN@ 1 JAN 1953", 2, 6, 0, 0, 0, 1, "1 January 1953J", "*")
335
/* French Republic Calendar tests */
336
call tdfb("@#DFRENCH R@ 1 VEND 11", 2, 0, 2, 0, 0, 1, "1 1 11 FR", "*")
337
call tdfb("@#DFRENCH R@ 1 VEND 11", 2, 1, 2, 0, 0, 1, "1 01 11 FR", "*")
338
call tdfb("@#DFRENCH R@ 1 VEND 11", 2, 2, 2, 0, 0, 1, "1 1 11 FR", "*")
339
call tdfb("@#DFRENCH R@ 1 VEND 11", 2, 3, 2, 0, 0, 1, "1 VEND 11 FR", "*")
340
call tdfb("@#DFRENCH R@ 1 VEND 11", 2, 4, 2, 0, 0, 1, "1 Vend 11 FR", "*")
341
call tdfb("@#DFRENCH R@ 1 VEND 11", 2, 5, 2, 0, 0, 1, "1 VENDEMIAIRE 11 FR", "*")
342
call tdfb("@#DFRENCH R@ 1 VEND 11", 2, 6, 2, 0, 0, 1, "1 Vendemiaire 11 FR", "*")
343
call tdfb("@#DFRENCH R@ 1 VEND 11", 2, 7, 2, 0, 0, 1, "1 vend 11 FR", "1 vend 11 FR")
344
call tdfb("@#DFRENCH R@ 1 VEND 11", 2, 8, 2, 0, 0, 1, "1 vendemiaire 11 FR", "1 vendemiaire 11 FR")
345
call tdfb("@#DFRENCH R@ 1 BRUM 11", 2, 8, 2, 0, 0, 1, "1 brumaire 11 FR", "1 brumaire 11 FR")
346
call tdfb("@#DFRENCH R@ 1 FRIM 11", 2, 8, 2, 0, 0, 1, "1 frimaire 11 FR", "1 frimaire 11 FR")
347
call tdfb("@#DFRENCH R@ 1 NIVO 11", 2, 8, 2, 0, 0, 1, "1 nivose 11 FR", "1 nivose 11 FR")
348
call tdfb("@#DFRENCH R@ 1 PLUV 11", 2, 8, 2, 0, 0, 1, "1 pluviose 11 FR", "*")
349
call tdfb("@#DFRENCH R@ 1 VENT 11", 2, 8, 2, 0, 0, 1, "1 ventose 11 FR", "*")
350
call tdfb("@#DFRENCH R@ 1 GERM 11", 2, 8, 2, 0, 0, 1, "1 germinal 11 FR", "*")
351
call tdfb("@#DFRENCH R@ 1 FLOR 11", 2, 8, 2, 0, 0, 1, "1 floreal 11 FR", "*")
352
call tdfb("@#DFRENCH R@ 1 PRAI 11", 2, 8, 2, 0, 0, 1, "1 prairial 11 FR", "*")
353
call tdfb("BET @#DFRENCH R@ 1 PRAI 11 AND @#DFRENCH R@ 2 BRUM 12", 2, 8, 2, 0, 0, 1
354
, "1 prairial 11 FR", "between 1 prairial 11 FR and 2 brumaire 12 FR")
355
call tdfb("BET @#DFRENCH R@ 1 PRAI 11 AND @#DFRENCH R@ 2 BRUM 12", 2, 2, 2, 10, 0, 7
356
, "11-9-1 FR", "bet 11-9-1 FR and 12-2-2 FR")
358
/* Hebrew Calendar tests */
359
call tdfb("@#DHEBREW@ 1 TSH 3011", 2, 0, 0, 0, 0, 1, "1 1 3011 HEB", "*")
360
call tdfb("@#DHEBREW@ 1 TSH 3011", 2, 1, 0, 0, 0, 1, "1 01 3011 HEB", "*")
361
call tdfb("@#DHEBREW@ 1 TSH 3011", 2, 2, 0, 0, 0, 1, "1 1 3011 HEB", "*")
362
call tdfb("@#DHEBREW@ 1 TSH 3011", 2, 3, 0, 0, 0, 1, "1 TSH 3011 HEB", "*")
363
call tdfb("@#DHEBREW@ 1 TSH 3011", 2, 4, 0, 0, 0, 1, "1 Tsh 3011 HEB", "*")
364
call tdfb("@#DHEBREW@ 1 TSH 3011", 2, 5, 0, 0, 0, 1, "1 TISHRI 3011 HEB", "*")
365
call tdfb("@#DHEBREW@ 1 TSH 3011", 2, 6, 0, 0, 0, 1, "1 Tishri 3011 HEB", "*")
366
call tdfb("@#DHEBREW@ 1 TSH 3011", 2, 7, 0, 0, 0, 1, "1 tsh 3011 HEB", "1 tsh 3011 HEB")
367
call tdfb("@#DHEBREW@ 1 TSH 3011", 2, 8, 0, 0, 0, 1, "1 tishri 3011 HEB", "1 tishri 3011 HEB")
368
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 0, 0, 0, 0, 1, "1 7 3011 HEB", "*")
369
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 1, 0, 0, 0, 1, "1 07 3011 HEB", "*")
370
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 2, 0, 0, 0, 1, "1 7 3011 HEB", "*")
371
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 3, 0, 0, 0, 1, "1 ADS 3011 HEB", "*")
372
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 4, 0, 0, 0, 1, "1 Ads 3011 HEB", "*")
373
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 5, 0, 0, 0, 1, "1 ADAR SHENI 3011 HEB", "*")
374
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 6, 0, 0, 0, 1, "1 Adar Sheni 3011 HEB", "*")
375
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 7, 0, 0, 0, 1, "1 ads 3011 HEB", "*")
376
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 8, 0, 0, 0, 1, "1 adar sheni 3011 HEB", "*")
377
call tdfb("@#DHEBREW@ 1 CSH 3011", 2, 1, 0, 0, 0, 1, "1 02 3011 HEB", "*")
378
call tdfb("@#DHEBREW@ 1 KSL 3011", 2, 1, 0, 0, 0, 1, "1 03 3011 HEB", "*")
379
call tdfb("@#DHEBREW@ 1 TVT 3011", 2, 1, 0, 0, 0, 1, "1 04 3011 HEB", "*")
380
call tdfb("@#DHEBREW@ 1 SHV 3011", 2, 1, 0, 0, 0, 1, "1 05 3011 HEB", "*")
381
call tdfb("@#DHEBREW@ 1 ADR 3011", 2, 1, 0, 0, 0, 1, "1 06 3011 HEB", "*")
382
call tdfb("@#DHEBREW@ 1 ADS 3011", 2, 1, 0, 0, 0, 1, "1 07 3011 HEB", "*")
383
call tdfb("@#DHEBREW@ 1 NSN 3011", 2, 1, 0, 0, 0, 1, "1 08 3011 HEB", "*")
384
call tdfb("@#DHEBREW@ 1 IYR 3011", 2, 1, 0, 0, 0, 1, "1 09 3011 HEB", "*")
385
call tdfb("@#DHEBREW@ 1 SVN 3011", 2, 1, 0, 0, 0, 1, "1 10 3011 HEB", "*")
386
call tdfb("@#DHEBREW@ 1 TMZ 3011", 2, 1, 0, 0, 0, 1, "1 11 3011 HEB", "*")
387
call tdfb("@#DHEBREW@ 1 AAV 3011", 2, 1, 0, 0, 0, 1, "1 12 3011 HEB", "*")
388
call tdfb("@#DHEBREW@ 1 ELL 3011", 2, 1, 0, 0, 0, 1, "1 13 3011 HEB", "*")
390
/* ROMAN would presumably be in AUC, and days counted before K,N,I */
392
call reportSubsection("date tests")
396
(Worker routine for testDates)
397
Test parsing & formatting simultaneously
398
Using specified formats, check stddate(src) against dests
399
and complexdate(src) against destc
400
tdfb = test date format both (simple & complex)
401
If destc="*", then we'll test complexdate result against dests
403
proc tdfb(src, dayfmt, monfmt, yrfmt, sfmt, ofmt, cfmt, dests, destc)
410
set(result, stddate(src))
411
if (ne(result, dests))
413
set(orig, concat(src,", ", d(dayfmt), ", ", d(monfmt)))
414
set(orig, concat(orig, ", ", d(yrfmt), ", ",d(sfmt)))
415
set(orig, concat(orig, ", ", d(ofmt)))
416
call reportfail(concat("stddate failure: '", dests, "'<>'", result, "'", " from ", orig))
425
set(result, complexdate(src))
426
if (ne(result, destc))
428
set(orig, concat(src,", ", d(dayfmt), ", ", d(monfmt)))
429
set(orig, concat(orig, ", ", d(yrfmt), ", ",d(sfmt)))
430
set(orig, concat(orig, ", ", d(ofmt)))
431
call reportfail(concat("complexdate failure: '", destc, "'<>'", result, "'", " from ", orig))
438
Test parsing only, using year(), month(), and day() functions
439
src is the string to parse
440
yr,mo,da is the correct output against which to test
443
proc tdparse(src, yr, mo, da)
445
set(result, strtoint(year(src)))
448
call reportfail(concat("year(", src, ") failure: ", d(yr), "<>", d(result)))
452
extractdatestr(modvar, dvar, mvar, yvar, ystvar, src)
455
call reportfail(concat("extractdatestr(", src, ").yr failure: ", d(yr), "<>", d(yvar)))
461
call reportfail(concat("extractdatestr(", src, ").mo failure: ", d(mo), "<>", d(mvar)))
467
call reportfail(concat("extractdatestr(", src, ").da failure: ", d(da), "<>", d(dvar)))