-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathtest.sh
executable file
·374 lines (330 loc) · 5.01 KB
/
test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
#!/bin/bash
lifted=false
liftedind=false
findlift=false
liftedcase=false
assumptions=false
intro=false
example=false
liftspec=false
search=false
lift=false
listtovect=false
listtovectcustom=false
records=false
handshake=false
morerecords=false
smartcache=false
nosmartcache=false
prodrect=false
swap=false
unpack=false
nonorn=false
start=$SECONDS
coqc coq/Infrastructure.v
echo "Testing Find ornament."
if coqc coq/Test.v
then
:
else
echo "ERROR: Searching for ornaments failed"
exit 1
fi
echo "Testing Lift."
if coqc coq/TestLift.v
then
lifted=true
else
:
fi
if coqc coq/Indtype.v
then
liftedind=true
else
:
fi
echo "Testing Lift with implicit Find Ornament."
if coqc coq/TestFindLift.v
then
findlift=true
else
:
fi
echo "Testing Lift Record."
if coqc coq/minimal_records.v
then
records=true
else
:
fi
if coqc coq/handshake.v
then
handshake=true
else
:
fi
if coqc coq/more_records.v
then
morerecords=true
else
:
fi
cd coq
if coqc prod_rect.v
then
prodrect=true
else
:
fi
cd ..
echo "Testing Swap Constructor."
if coqc coq/Swap.v
then
swap=true
else
:
fi
echo "Testing Unpack Sigma."
if coqc coq/TestUnpack.v
then
unpack=true
else
:
fi
echo "Testing Non-Ornaments."
if coqc coq/nonorn.v
then
nonorn=true
else
:
fi
echo "Testing smart cache."
echo "First, without the smart cache:"
if coqc coq/NoSmartCache.v
then
nosmartcache=true
else
:
fi
echo "Now, with the smart cache:"
if coqc coq/SmartCache.v
then
smartcache=true
else
:
fi
echo "Running case study code."
cd eval
if [ -e out ]
then
rm -r out
else
:
fi
mkdir out
mkdir out/inorder
mkdir out/postorder
mkdir out/preorder
mkdir out/search
mkdir out/normalized
mkdir out/inputs
mkdir out/equivalences
make clean
ulimit -s 100000
if make
then
liftedcase=true
else
:
fi
cd ..
echo "Running ITP paper examples."
if coqc coq/examples/Intro.v
then
intro=true
else
:
fi
if coqc coq/examples/Example.v
then
example=true
else
:
fi
if coqc coq/examples/Search.v
then
search=true
else
:
fi
if coqc coq/examples/LiftSpec.v
then
liftspec=true
else
:
fi
if coqc coq/examples/Assumptions.v
then
assumptions=true
else
:
fi
if coqc coq/examples/Lift.v
then
lift=true
else
:
fi
if coqc coq/examples/ListToVect.v
then
listtovect=true
else
:
fi
if coqc coq/examples/ListToVectCustom.v
then
listtovectcustom=true
else
:
fi
end=$SECONDS
if [ $lifted = true ] && [ $liftedind = true ] && [ $findlift = true ] &&
[ $liftedcase = true ] && [ $assumptions = true ] && [ $intro = true ] &&
[ $example = true ] && [ $liftspec = true ] && [ $search = true ] &&
[ $lift = true ] && [ $listtovect = true ] && [ $listtovectcustom = true ] && [ $records = true ] && [ $handshake = true ] &&
[ $morerecords = true ] && [ $nosmartcache = true ] && [ $smartcache = true ] && [ $prodrect = true ] &&
[ $swap = true ] && [ $unpack = true ] && [ $nonorn = true ]
then
echo "SUCCESS: All tests passed."
elapsed=($end - $start)
echo "Tests took $elapsed seconds."
else
echo "ERROR: The following tests failed:"
if [ $lifted = false ]
then
echo "lifting"
else
:
fi
if [ $findlift = false ]
then
echo "lifting with implicit Find Ornament"
else
:
fi
if [ $liftedind = false ]
then
echo "lifting inductive predicates"
else
:
fi
if [ $records = false ]
then
echo "lifting records to products: minimal test"
else
:
fi
if [ $handshake = false ]
then
echo "lifting records to products: record projection test"
else
:
fi
if [ $morerecords = false ]
then
echo "lifting records to products: fancier test"
else
:
fi
if [ $prodrect = false ]
then
echo "lifting records to products: folding projections"
else
:
fi
if [ $swap = false ]
then
echo "tests for swapping and renaming constructors"
else
:
fi
if [ $unpack = false ]
then
echo "tests for unpacking indexed types"
else
:
fi
if [ $nonorn = false ]
then
echo "tests for non-ornament equivalences"
else
:
fi
if [ $smartcache = false ]
then
echo "set smart cache test"
else
:
fi
if [ $nosmartcache = false ]
then
echo "unset smart cache test"
else
:
fi
if [ $liftedcase = false ]
then
echo "case study code"
else
:
fi
if [ $assumptions = false ]
then
echo "Assumptions.v from ITP examples"
else
:
fi
if [ $intro = false ]
then
echo "Intro.v from ITP examples"
else
:
fi
if [ $example = false ]
then
echo "Example.v from ITP examples"
else
:
fi
if [ $liftspec = false ]
then
echo "LiftSpec.v from ITP examples"
else
:
fi
if [ $search = false ]
then
echo "Search.v from ITP examples"
else
:
fi
if [ $lift = false ]
then
echo "Lift.v from ITP examples"
else
:
fi
if [ $listtovect = false ]
then
echo "ListToVect.v from ITP examples"
else
:
fi
if [ $listtovectcustom = false ]
then
echo "ListToVectCustom.v from extended ITP examples"
else
:
fi
echo "See Coq error message."
fi