84ee1725296e4a2d3db1f7d795958821a6d5cec9
[pspp] / tests / language / dictionary / missing-values.at
1 AT_BANNER([MISSING VALUES])
2
3 AT_SETUP([MISSING VALUES valid cases])
4 AT_DATA([missing-values.sps], [dnl
5 DATA LIST NOTABLE/str1 1-5 (A) str2 6-8 (A) date1 9-19 (DATE) num1 20-25
6                   longstr 26-36 (A).
7
8 * Numeric missing values.
9 MISSING VALUES date1 num1 (1).
10 DISPLAY DICTIONARY date1 num1.
11 MISSING VALUES date1 num1 (1, 2).
12 DISPLAY DICTIONARY date1 num1.
13 MISSING VALUES date1 num1 (1, 2, 3).
14 DISPLAY DICTIONARY date1 num1.
15 MISSING VALUES date1 num1 (9999998, 9999984, 3).
16 DISPLAY DICTIONARY date1 num1.
17
18 * Numeric missing values using the first variable's format.
19 MISSING VALUES num1 date1 ('1').
20 DISPLAY DICTIONARY date1 num1.
21 MISSING VALUES num1 date1 ('1', '2').
22 DISPLAY DICTIONARY date1 num1.
23 MISSING VALUES num1 date1 ('1', '2', '3').
24 DISPLAY DICTIONARY date1 num1.
25 MISSING VALUES date1 num1 ('06-AUG-05').
26 DISPLAY DICTIONARY date1 num1.
27 MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78').
28 DISPLAY DICTIONARY date1 num1.
29 MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78', '14-FEB-81').
30 DISPLAY DICTIONARY date1 num1.
31
32 * Ranges of numeric missing values.
33 MISSING VALUES num1 (1 THRU 2).
34 DISPLAY DICTIONARY num1.
35 MISSING VALUES num1 (LO THRU 2).
36 DISPLAY DICTIONARY num1.
37 MISSING VALUES num1 (LOWEST THRU 2).
38 DISPLAY DICTIONARY num1.
39 MISSING VALUES num1 (1 THRU HI).
40 DISPLAY DICTIONARY num1.
41 MISSING VALUES num1 (1 THRU HIGHEST).
42 DISPLAY DICTIONARY num1.
43
44 * A range of numeric missing values, plus an individual value.
45 MISSING VALUES num1 (1 THRU 2, 3).
46 DISPLAY DICTIONARY num1.
47 MISSING VALUES num1 (LO THRU 2, 3).
48 DISPLAY DICTIONARY num1.
49 MISSING VALUES num1 (LOWEST THRU 2, 3).
50 DISPLAY DICTIONARY num1.
51 MISSING VALUES num1 (1 THRU HI, -1).
52 DISPLAY DICTIONARY num1.
53 MISSING VALUES num1 (1 THRU HIGHEST, -1).
54 DISPLAY DICTIONARY num1.
55
56 * String missing values.
57 MISSING VALUES str1 str2 longstr ('abc  ','def').
58 DISPLAY DICTIONARY str1 str2 longstr.
59
60 * May mix variable types when clearing missing values.
61 MISSING VALUES ALL ().
62 DISPLAY DICTIONARY
63 ])
64 AT_CHECK([pspp -o pspp.csv missing-values.sps])
65 AT_CHECK([sed -n '/Format/s/,.*/:/p
66 s/"//g
67 s/^,Missing Values: \([[^,]]*\),.*/\1/p
68 /^$/p' pspp.csv
69 ], [0], [dnl
70 date1:
71 1
72 num1:
73 1
74
75 date1:
76 1; 2
77 num1:
78 1; 2
79
80 date1:
81 1; 2; 3
82 num1:
83 1; 2; 3
84
85 date1:
86 9999998; 9999984; 3
87 num1:
88 9999998; 9999984; 3
89
90 date1:
91 1
92 num1:
93 1
94
95 date1:
96 1; 2
97 num1:
98 1; 2
99
100 date1:
101 1; 2; 3
102 num1:
103 1; 2; 3
104
105 date1:
106 13342665600
107 num1:
108 13342665600
109
110 date1:
111 13342665600; 12495427200
112 num1:
113 13342665600; 12495427200
114
115 date1:
116 13342665600; 12495427200; 12570336000
117 num1:
118 13342665600; 12495427200; 12570336000
119
120 num1:
121 1 THRU 2
122
123 num1:
124 LOWEST THRU 2
125
126 num1:
127 LOWEST THRU 2
128
129 num1:
130 1 THRU HIGHEST
131
132 num1:
133 1 THRU HIGHEST
134
135 num1:
136 1 THRU 2; 3
137
138 num1:
139 LOWEST THRU 2; 3
140
141 num1:
142 LOWEST THRU 2; 3
143
144 num1:
145 1 THRU HIGHEST; -1
146
147 num1:
148 1 THRU HIGHEST; -1
149
150 str1:
151 abc  ; def  @&t@
152 str2:
153 abc; def
154 longstr:
155 abc     ; def     @&t@
156
157 str1:
158 str2:
159 date1:
160 num1:
161 longstr:
162 ])
163 AT_CLEANUP
164
165 AT_SETUP([MISSING VALUES invalid cases])
166 AT_DATA([missing-values.sps], [dnl
167 DATA LIST NOTABLE/str1 1-5 (A) str2 6-8 (A) date1 9-19 (DATE) num1 20-25
168                   longstr 26-36 (A).
169
170 * Too long for str2.
171 MISSING VALUES str1 str2 longstr ('abcde').
172
173 * Long string missing value longer than 8 bytes.
174 MISSING VALUES longstr ('abcdefghijk').
175
176 * No string ranges.
177 MISSING VALUES str1 ('a' THRU 'z').
178
179 * Mixing string and numeric variables.
180 MISSING VALUES str1 num1 ('123').
181 ])
182 AT_CHECK([pspp -O format=csv missing-values.sps], [1], [dnl
183 missing-values.sps:5: error: MISSING VALUES: Missing values provided are too long to assign to variable of width 3.
184
185 missing-values.sps:8: error: MISSING VALUES: Truncating missing value to maximum acceptable length (8 bytes).
186
187 missing-values.sps:11.26-11.29: error: MISSING VALUES: Syntax error at `THRU': expecting string.
188
189 missing-values.sps:11: error: MISSING VALUES: THRU is not a variable name.
190
191 missing-values.sps:14: error: MISSING VALUES: Cannot mix numeric variables (e.g. num1) and string variables (e.g. str1) within a single list.
192 ])
193 AT_CLEANUP