INPUT PROGRAM: Use a separate dataset for the input program.
[pspp] / tests / language / data-io / inpt-pgm.at
1 AT_BANNER([INPUT PROGRAM])
2
3 dnl Tests for a bug which caused a crash when 
4 dnl reading invalid INPUT PROGRAM syntax.
5 AT_SETUP([INPUT PROGRAM invalid syntax crash])
6 AT_DATA([input-program.sps], [dnl
7 INPUT PROGRAM.
8 DATA LIST NOTABLE /a 1-9.
9 BEGIN DATA
10 123456789
11 END DATA.
12 END INPUT PROGRAM.
13 ])
14 AT_CHECK([pspp -O format=csv input-program.sps], [1], [dnl
15 input-program.sps:3: error: BEGIN DATA: BEGIN DATA is not allowed inside INPUT PROGRAM.
16 ])
17 AT_CLEANUP
18
19 dnl Tests for bug #21108, a crash when 
20 dnl reading invalid INPUT PROGRAM syntax.
21 AT_SETUP([INPUT PROGRAM invalid syntax crash])
22 AT_DATA([input-program.sps], [dnl
23 INPUT PROGRAM.
24 DATA LIST LIST NOTABLE /x.
25 END FILE.
26 END INPUT PROGRAM.
27
28 DESCRIPTIVES x.
29 ])
30 AT_CHECK([pspp -O format=csv input-program.sps], [1], [dnl
31 error: DESCRIPTIVES: Syntax error at end of input: expecting BEGIN.
32 ])
33 AT_CLEANUP
34
35 dnl Tests for bug #38782, an infinite loop processing an empty input program.
36 AT_SETUP([INPUT PROGRAM infinite loop])
37 AT_DATA([input-program.sps], [dnl
38 INPUT PROGRAM.
39 STRING firstname lastname (a24) / address (a80).
40 END INPUT PROGRAM.
41 EXECUTE.
42 ])
43 AT_CHECK([pspp -O format=csv input-program.sps], [1], [dnl
44 input-program.sps:3: error: Input program must contain DATA LIST or END FILE.
45
46 input-program.sps:4: error: EXECUTE: EXECUTE is allowed only after the active dataset has been defined.
47 ])
48 AT_CLEANUP
49
50 dnl Tests for bug #39097, a bug when an INPUT PROGRAM used VECTOR, was
51 dnl followed immediately by a call to proc_execute() (here via DATASET
52 dnl COPY), and then the input was actually used.
53 AT_SETUP([INPUT PROGRAM with VECTOR and EXECUTE])
54 AT_DATA([input-program.sps], [dnl
55 INPUT PROGRAM.
56 VECTOR vec(5).
57 LOOP #c = 1 to 10.
58  LOOP #v = 1 to 5.
59   COMPUTE vec(#v) = #v.
60  END LOOP.
61  END CASE.
62 END LOOP.
63 END FILE.
64 END INPUT PROGRAM.
65 DATASET COPY x.
66 LIST.
67 ])
68 AT_CHECK([pspp -O format=csv input-program.sps], [0], [dnl
69 Table: Data List
70 vec1,vec2,vec3,vec4,vec5
71 1.00,2.00,3.00,4.00,5.00
72 1.00,2.00,3.00,4.00,5.00
73 1.00,2.00,3.00,4.00,5.00
74 1.00,2.00,3.00,4.00,5.00
75 1.00,2.00,3.00,4.00,5.00
76 1.00,2.00,3.00,4.00,5.00
77 1.00,2.00,3.00,4.00,5.00
78 1.00,2.00,3.00,4.00,5.00
79 1.00,2.00,3.00,4.00,5.00
80 1.00,2.00,3.00,4.00,5.00
81 ])
82 AT_CLEANUP