Add support for reading SPSS/PC+ system files.
[pspp] / tests / data / por-file.at
1 AT_BANNER([portable files])
2
3 AT_SETUP([overwriting portable file])
4 AT_DATA([output.por], [abcdef
5 ])
6 cp output.por output.por.backup
7 AT_DATA([porfile.sps], [dnl
8 DATA LIST NOTABLE/x 1.
9 BEGIN DATA.
10 5
11 END DATA.
12 EXPORT OUTFILE='output.por'.
13 ])
14 AT_CHECK([pspp -O format=csv porfile.sps])
15 AT_CHECK([cmp output.por output.por.backup], [1], [ignore])
16 AT_CLEANUP
17
18 AT_SETUP([overwriting portable file atomically])
19 AT_DATA([output.por], [abcdef
20 ])
21 cp output.por output.por.backup
22 AT_DATA([porfile.sps],
23 [[DATA LIST NOTABLE/x 1.
24 BEGIN DATA.
25 5
26 END DATA.
27 XEXPORT OUTFILE='output.por'.
28 HOST COMMAND=['kill -TERM $PPID'].
29 ]])
30 AT_CHECK([pspp -O format=csv porfile.sps], [143], [], [ignore])
31 AT_CHECK([cmp output.por output.por.backup])
32 AT_CHECK(
33   [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
34 AT_CLEANUP
35
36 AT_SETUP([write to same portable file being read])
37 AT_DATA([export.sps], [dnl
38 DATA LIST NOTABLE/x 1.
39 BEGIN DATA.
40 2
41 END DATA.
42 EXPORT OUTFILE='data.por'.
43 ])
44 AT_CHECK([pspp -O format=csv export.sps])
45 AT_CHECK([test -s data.por])
46 AT_CHECK(
47   [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
48 AT_DATA([export2.sps], [dnl
49 IMPORT FILE='data.por'.
50 COMPUTE y = x * 2.
51 EXPORT OUTFILE='data.por'.
52 ])
53 AT_CHECK([pspp -O format=csv export2.sps])
54 AT_CHECK(
55   [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
56 AT_DATA([export3.sps], [dnl
57 IMPORT FILE='data.por'.
58 LIST.
59 ])
60 AT_CHECK([pspp -O format=csv export3.sps], [0], [dnl
61 Table: Data List
62 X,Y
63 2,4.00
64 ])
65 AT_CLEANUP
66
67 dnl This checks for a bug in the portable file writer that caused an infinite
68 dnl loop in some cases, and other problems in other cases, when a variable
69 dnl had value labels.
70 AT_SETUP([write portable file with value labels])
71 AT_DATA([export.sps], [dnl
72 DATA LIST NOTABLE/var1 TO var5 1-5.
73 VALUE LABELS
74         /var1 1 'one'
75         /var2 2 'two'
76         /var3 3 'three'
77         /var4 4 'four'
78         /var5 5 'five'.
79 BEGIN DATA.
80 12345
81 END DATA.
82 EXPORT OUTFILE='data.por'.
83 ])
84 AT_CHECK([pspp -O format=csv export.sps])
85 AT_DATA([import.sps], [dnl
86 IMPORT FILE='data.por'.
87 DISPLAY DICTIONARY.
88 LIST.
89 ])
90 AT_CHECK([pspp -O format=csv import.sps], [0], [dnl
91 Variable,Description,Position
92 VAR1,"Format: F1.0
93
94 Value,Label
95 1,one",1
96 VAR2,"Format: F1.0
97
98 Value,Label
99 2,two",2
100 VAR3,"Format: F1.0
101
102 Value,Label
103 3,three",3
104 VAR4,"Format: F1.0
105
106 Value,Label
107 4,four",4
108 VAR5,"Format: F1.0
109
110 Value,Label
111 5,five",5
112
113 Table: Data List
114 VAR1,VAR2,VAR3,VAR4,VAR5
115 1,2,3,4,5
116 ])
117 AT_DATA([sys-file-info.sps], [SYSFILE INFO FILE='data.por'
118 ])
119 AT_CHECK([pspp -O format=csv sys-file-info.sps | sed '/Encoding/d
120 /Integer Format/d
121 /Real Format/d
122 /Created/d
123 '], [0], [dnl
124 File:,data.por
125 Label:,No label.
126 Product:,x86_64-unknown-linux-gnu
127 Variables:,5
128 Cases:,Unknown
129 Type:,SPSS Portable File
130 Weight:,Not weighted.
131 Compression:,None
132
133 Variable,Description,Position
134 VAR1,"Format: F1.0
135 Measure: Scale
136 Role: Input
137 Display Alignment: Right
138 Display Width: 8
139
140 Value,Label
141 1,one",1
142 VAR2,"Format: F1.0
143 Measure: Scale
144 Role: Input
145 Display Alignment: Right
146 Display Width: 8
147
148 Value,Label
149 2,two",2
150 VAR3,"Format: F1.0
151 Measure: Scale
152 Role: Input
153 Display Alignment: Right
154 Display Width: 8
155
156 Value,Label
157 3,three",3
158 VAR4,"Format: F1.0
159 Measure: Scale
160 Role: Input
161 Display Alignment: Right
162 Display Width: 8
163
164 Value,Label
165 4,four",4
166 VAR5,"Format: F1.0
167 Measure: Scale
168 Role: Input
169 Display Alignment: Right
170 Display Width: 8
171
172 Value,Label
173 5,five",5
174 ])
175 AT_CLEANUP