Change terminology from "active file" to "active dataset".
[pspp-builds.git] / tests / language / data-io / match-files.at
1 AT_BANNER([MATCH FILES])
2
3 m4_define([PREPARE_MATCH_FILES],
4   [AT_DATA([data1.txt], [dnl
5 1aB
6 8aM
7 3aE
8 5aG
9 0aA
10 5aH
11 6aI
12 7aJ
13 2aD
14 7aK
15 1aC
16 7aL
17 4aF
18 ])
19
20    AT_DATA([data2.txt], [dnl
21 1bN
22 3bO
23 4bP
24 6bQ
25 7bR
26 9bS
27 ])
28
29    AT_DATA([prepare.sps], [dnl
30 DATA LIST NOTABLE FILE='data1.txt' /a b c 1-3 (A).
31 SAVE OUTFILE='data1.sav'.
32 DATA LIST NOTABLE FILE='data2.txt' /a b c 1-3 (A).
33 SAVE OUTFILE='data2.sav'.
34 ])
35    AT_CHECK([pspp -O format=csv prepare.sps])
36    AT_CHECK([test -f data1.sav && test -f data2.sav])])
37
38 dnl CHECK_MATCH_FILES(TYPE2, SOURCE1, SOURCE2)
39 dnl
40 dnl Checks the MATCH FILES procedure with the specified combination of:
41 dnl
42 dnl - TYPE2: Either "file" or "table" for the type of matching used for
43 dnl   the second data source.  (The first data source is always "file").
44 dnl
45 dnl - SOURCE1: Either "system" or "active" for the source of data for
46 dnl   the first data source.
47 dnl
48 dnl - SOURCE2: Either "system" or "active" for the source of data for
49 dnl   the second data source.  (SOURCE1 and SOURCE2 may not both be
50 dnl   "active".)
51 m4_define([CHECK_MATCH_FILES], 
52   [AT_SETUP([MATCH FILES -- $2 file and $3 $1])
53    PREPARE_MATCH_FILES
54    AT_DATA([expout],
55     [m4_if([$1], [file], [dnl
56 Table: Data List
57 a,b,c,d,ina,inb,first,last
58 0,a,A,,1,0,1,1
59 1,a,B,N,1,1,1,0
60 1,a,C,,1,0,0,1
61 2,a,D,,1,0,1,1
62 3,a,E,O,1,1,1,1
63 4,a,F,P,1,1,1,1
64 5,a,G,,1,0,1,0
65 5,a,H,,1,0,0,1
66 6,a,I,Q,1,1,1,1
67 7,a,J,R,1,1,1,0
68 7,a,K,,1,0,0,0
69 7,a,L,,1,0,0,1
70 8,a,M,,1,0,1,1
71 9,b,,S,0,1,1,1
72 ], [dnl
73 Table: Data List
74 a,b,c,d,ina,inb,first,last
75 0,a,A,,1,0,1,1
76 1,a,B,N,1,1,1,0
77 1,a,C,N,1,1,0,1
78 2,a,D,,1,0,1,1
79 3,a,E,O,1,1,1,1
80 4,a,F,P,1,1,1,1
81 5,a,G,,1,0,1,0
82 5,a,H,,1,0,0,1
83 6,a,I,Q,1,1,1,1
84 7,a,J,R,1,1,1,0
85 7,a,K,R,1,1,0,0
86 7,a,L,R,1,1,0,1
87 8,a,M,,1,0,1,1
88 ])])
89
90    AT_DATA([match-files.sps], [dnl
91 m4_if([$2], [active], [GET FILE='data1.sav'.],
92       [$3], [active], [GET FILE='data2.sav'.],
93       [])
94 MATCH FILES
95         FILE=m4_if([$2], [active], [*], ['data1.sav']) /IN=ina /SORT
96         $1=m4_if([$3], [active], [*], ['data2.sav']) /in=inb /rename c=d
97         /BY a /FIRST=first /LAST=last.
98 LIST.
99 ])
100    AT_CHECK([pspp -o pspp.csv match-files.sps])
101    AT_CHECK([cat pspp.csv], [0], [expout])
102    AT_CLEANUP])
103
104 CHECK_MATCH_FILES([file], [system], [system])
105 CHECK_MATCH_FILES([file], [system], [active])
106 CHECK_MATCH_FILES([file], [active], [system])
107 CHECK_MATCH_FILES([table], [system], [system])
108 CHECK_MATCH_FILES([table], [system], [active])
109 CHECK_MATCH_FILES([table], [active], [system])
110
111 AT_SETUP([MATCH FILES parallel match])
112 PREPARE_MATCH_FILES
113 AT_DATA([match-files.sps], [dnl
114 MATCH FILES FILE='data1.sav' /FILE='data2.sav' /RENAME (a b c=d e f).
115 LIST.
116 ])
117 AT_CHECK([pspp -o pspp.csv match-files.sps])
118 AT_CHECK([cat pspp.csv], [0], [dnl
119 Table: Data List
120 a,b,c,d,e,f
121 1,a,B,1,b,N
122 8,a,M,3,b,O
123 3,a,E,4,b,P
124 5,a,G,6,b,Q
125 0,a,A,7,b,R
126 5,a,H,9,b,S
127 6,a,I,,,
128 7,a,J,,,
129 2,a,D,,,
130 7,a,K,,,
131 1,a,C,,,
132 7,a,L,,,
133 4,a,F,,,
134 ])
135 AT_CLEANUP
136
137 dnl Test bug handling TABLE from active dataset found by John Darrington.
138 AT_SETUP([MATCH FILES bug with TABLE from active dataset])
139 AT_DATA([match-files.sps], [dnl
140 DATA LIST LIST NOTABLE /x * y *.
141 BEGIN DATA
142 3 30
143 2 21
144 1 22
145 END DATA.
146
147 SAVE OUTFILE='bar.sav'.
148
149 DATA LIST LIST NOTABLE /x * z *.
150 BEGIN DATA
151 3 8
152 2 9
153 END DATA.
154
155 MATCH FILES TABLE=* /FILE='bar.sav' /BY=x.
156 LIST.
157 ])
158 AT_CHECK([pspp -o pspp.csv match-files.sps])
159 AT_CHECK([cat pspp.csv], [0], [dnl
160 Table: Data List
161 x,z,y
162 3.00,8.00,30.00
163 2.00,.  ,21.00
164 1.00,.  ,22.00
165 ])
166 AT_CLEANUP
167
168 dnl Tests for a bug which caused MATCH FILES to crash
169 dnl when used with scratch variables.
170 AT_SETUP([MATCH FILES bug with scratch variables])
171 AT_DATA([match-files.sps], [dnl
172 DATA LIST LIST /w * x * y * .
173 BEGIN DATA
174 4 5 6
175 1 2 3
176 END DATA.
177
178 COMPUTE j=0.
179 LOOP #k = 1 to 10.
180 COMPUTE j=#k + j.
181 END LOOP.
182
183 MATCH FILES FILE=* /DROP=w.
184 LIST.
185 FINISH.
186 ])
187 AT_CHECK([pspp -o pspp.csv match-files.sps])
188 AT_CHECK([cat pspp.csv], [0], [dnl
189 Table: Reading free-form data from INLINE.
190 Variable,Format
191 w,F8.0
192 x,F8.0
193 y,F8.0
194
195 Table: Data List
196 x,y,j
197 5.00,6.00,55.00
198 2.00,3.00,55.00
199 ])
200 AT_CLEANUP