~ubuntu-branches/ubuntu/trusty/lifelines/trusty

« back to all changes in this revision

Viewing changes to reports/st/st_date.ll

  • Committer: Bazaar Package Importer
  • Author(s): Felipe Augusto van de Wiel (faw)
  • Date: 2007-05-23 23:49:53 UTC
  • mfrom: (3.1.3 edgy)
  • Revision ID: james.westby@ubuntu.com-20070523234953-ogno9rnbmth61i7p
Tags: 3.0.50-2etch1
* Changing docs/ll-reportmanual.xml and docs/ll-userguide.xml to fix
  documentation build problems (Closes: #418347).

* lifelines-reports
  - Adding a dependency to lifelines >= 3.0.50 to prevent file conflict.
    (Closes: #405500).

* Updating French translation. Thanks to Bernard Adrian. (Closes: #356671).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * @version        1.1 (2003-01-22)
3
 
 * @author         Perry Rapp
4
 
 * @category       self-test
5
 
 * @output         none
6
 
 * @description    validate date functions
7
 
*/
8
 
 
9
 
char_encoding("ASCII")
10
 
 
11
 
require("lifelines-reports.version:1.3")
12
 
option("explicitvars") /* Disallow use of undefined variables */
13
 
include("st_aux")
14
 
 
15
 
/* entry point in case not invoked via st_all.ll */
16
 
proc main()
17
 
{
18
 
        call testDates()
19
 
}
20
 
 
21
 
/* 
22
 
  test some date functions with various GEDCOM dates
23
 
  */
24
 
proc testDates()
25
 
{
26
 
        call initSubsection()
27
 
 
28
 
        set_and_check_locale("en_US", "English")
29
 
        
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)
59
 
 
60
 
 
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) */
65
 
 
66
 
 
67
 
        datepic(0)
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 */
106
 
        datepic("%d.%m.%y")
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", "*")
110
 
        datepic("%y.%m.%d")
111
 
        call tdfb("2 JAN 1953", 2, 10, 2, 10, 1, 1, "1953.i.2", "*")
112
 
        datepic(0)
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.", "*")
117
 
 
118
 
/* test Italian months */
119
 
        if (not(set_and_check_locale("it", "Italian"))) {
120
 
        set(testskip, add(testskip, 6))
121
 
        } else {
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")
129
 
        }
130
 
 
131
 
/* test Swedish months */
132
 
        if (not(set_and_check_locale("sv", "Swedish"))) {
133
 
        set(testskip, add(testskip, 6))
134
 
        } else {
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")
142
 
        }
143
 
 
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", "*")
171
 
 
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.", "*")
186
 
 
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.", "*")
198
 
 
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.", "*")
210
 
 
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", "*")
216
 
 
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", "*")
234
 
 
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", "*")
255
 
 
256
 
/* Complex tests */
257
 
        complexpic(4, 0)
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")
265
 
        complexpic(4, ">%1")
266
 
        call tdfb("AFT 3 SEP 1630", 0, 0, 0, 0, 0, 8, " 3  9 1630", "> 3  9 1630")
267
 
        complexpic(4, 0)
268
 
        complexpic(3, 0)
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")
276
 
        complexpic(3, "<%1")
277
 
        call tdfb("BEF 3 SEP 1630", 0, 0, 0, 0, 0, 8, " 3  9 1630", "< 3  9 1630")
278
 
        complexpic(3, 0)
279
 
        complexpic(5, 0)
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")
283
 
        complexpic(5, 0)
284
 
        complexpic(6, 0)
285
 
        call tdfb("FROM 3 SEP 1630", 0, 0, 0, 0, 0, 1, " 3  9 1630", "from  3  9 1630")
286
 
        complexpic(7, 0)
287
 
        call tdfb("TO 3 SEP 1630", 0, 0, 0, 0, 0, 1, " 3  9 1630", "to  3  9 1630")
288
 
        complexpic(8, 0)
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//")
298
 
        complexpic(8, 0)
299
 
        complexpic(1, 0)
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")
308
 
        complexpic(1, "~%1")
309
 
        call tdfb("EST 3 SEP 890", 0, 0, 0, 0, 0, 1, " 3  9  890", "~ 3  9  890")
310
 
        complexpic(1, 0)
311
 
        complexpic(2, 0)
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")
319
 
        complexpic(2, "^%1")
320
 
        call tdfb("CAL 3 SEP 890", 2, 2, 2, 10, 0, 1, "890-9-3", "^890-9-3")
321
 
        complexpic(2, "^")
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")
325
 
        complexpic(2, 0)
326
 
 
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")
329
 
 
330
 
 
331
 
/* Calendar tests */
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", "*")
334
 
 
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")
357
 
 
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", "*")
389
 
 
390
 
        /* ROMAN would presumably be in AUC, and days counted before K,N,I */
391
 
 
392
 
        call reportSubsection("date tests")
393
 
}
394
 
 
395
 
/* 
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
402
 
  */
403
 
proc tdfb(src, dayfmt, monfmt, yrfmt, sfmt, ofmt, cfmt, dests, destc)
404
 
{
405
 
        dayformat(dayfmt)
406
 
        monthformat(monfmt)
407
 
        yearformat(yrfmt)
408
 
        dateformat(sfmt)
409
 
        eraformat(ofmt)
410
 
        set(result, stddate(src))
411
 
        if (ne(result, dests)) 
412
 
        {
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))
417
 
        } else {
418
 
                incr(testok)
419
 
        }
420
 
        complexformat(cfmt)
421
 
        if (eq(destc,"*"))
422
 
        {
423
 
                set(destc, dests)
424
 
        }
425
 
        set(result, complexdate(src))
426
 
        if (ne(result, destc)) 
427
 
        {
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))
432
 
        } else {
433
 
                incr(testok)
434
 
        }
435
 
}
436
 
 
437
 
/*
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
441
 
*/
442
 
 
443
 
proc tdparse(src, yr, mo, da)
444
 
{
445
 
        set(result, strtoint(year(src)))
446
 
        if (ne(result, yr)) 
447
 
        {
448
 
                call reportfail(concat("year(", src, ") failure: ", d(yr), "<>", d(result)))
449
 
        } else {
450
 
                incr(testok)
451
 
        }
452
 
        extractdatestr(modvar, dvar, mvar, yvar, ystvar, src)
453
 
        if (ne(yvar, yr))
454
 
        {
455
 
                call reportfail(concat("extractdatestr(", src, ").yr failure: ", d(yr), "<>", d(yvar)))
456
 
        } else {
457
 
                incr(testok)
458
 
        }
459
 
        if (ne(mvar, mo))
460
 
        {
461
 
                call reportfail(concat("extractdatestr(", src, ").mo failure: ", d(mo), "<>", d(mvar)))
462
 
        } else {
463
 
                incr(testok)
464
 
        }
465
 
        if (ne(dvar, da))
466
 
        {
467
 
                call reportfail(concat("extractdatestr(", src, ").da failure: ", d(da), "<>", d(dvar)))
468
 
        } else {
469
 
                incr(testok)
470
 
        }
471
 
}
472
 
 
473