1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 dnl GNU General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
17 AT_BANNER([expression parsing])
19 AT_SETUP([parse expression with unknown variable crash])
20 AT_DATA([parse.sps], [dnl
23 COMPUTE var1=NORMAL(100).
34 AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
35 parse.sps:10: error: IF: Unknown identifier y.
37 parse.sps:11: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
41 AT_SETUP([parsing boolean expression with type mismatch])
42 AT_DATA([parse.sps], [dnl
43 DATA LIST NOTABLE/x 1(A).
46 AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
47 "parse.sps:2: error: IF: Type mismatch: expression has string type, but a boolean value is required here."
51 AT_SETUP([parsing numeric expression with type mismatch])
52 AT_DATA([parse.sps], [dnl
53 DATA LIST NOTABLE/x 1.
56 AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
57 "parse.sps:2: error: COMPUTE: Type mismatch: expression has string type, but a numeric value is required here."
61 AT_SETUP([parsing string expression with type mismatch])
62 AT_KEYWORDS([expression negative])
63 AT_DATA([parse.sps], [dnl
64 DATA LIST NOTABLE/x 1(A).
67 AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
68 "parse.sps:2: error: COMPUTE: Type mismatch: expression has number type, but a string value is required here."
72 AT_SETUP([assigning string expression to new variable])
73 AT_KEYWORDS([expression negative])
74 AT_DATA([parse.sps], [dnl
75 DATA LIST NOTABLE/x 1(A).
78 AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
79 "parse.sps:2: error: COMPUTE: This command tries to create a new variable y by assigning a string value to it, but this is not supported. Use the STRING command to create the new variable with the correct width before assigning to it, e.g. STRING y(A20)."
83 AT_SETUP([parse expression with unknown system variable])
84 AT_KEYWORDS([expression negative])
85 AT_DATA([parse.sps], [dnl
86 DATA LIST NOTABLE/x 1.
87 COMPUTE x=$nonexistent.
89 AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
90 parse.sps:2: error: COMPUTE: Unknown system variable $nonexistent.
94 AT_SETUP([parse expression with unknown identifier])
95 AT_KEYWORDS([expression negative])
96 AT_DATA([parse.sps], [dnl
97 DATA LIST NOTABLE/x 1.
100 AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
101 parse.sps:2: error: COMPUTE: Unknown identifier y.
105 AT_SETUP([parse expression with extension function in compatibility mode])
106 AT_KEYWORDS([expression negative])
107 AT_DATA([parse.sps], [dnl
108 DEBUG EVALUATE/ACOS(0)*0.
110 AT_CHECK([pspp --testing-mode --syntax=compatible -O format=csv parse.sps], [0], [dnl
111 parse.sps:1: warning: DEBUG EVALUATE: ACOS(number) is a PSPP extension.
117 AT_SETUP([LAG expression following TEMPORARY])
118 AT_KEYWORDS([expression negative])
119 AT_DATA([parse.sps], [dnl
120 DATA LIST NOTABLE/x 1.
124 AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
125 parse.sps:3: error: COMPUTE: LAG(num_variable) may not appear after TEMPORARY.
129 AT_SETUP([parse expression with invalid logical expression])
130 AT_DATA([parse.sps], [dnl
133 COMPUTE var1=NORMAL(100).
141 AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl
142 "parse.sps:9: error: SELECT IF: A logical expression was found to have a value other than 0 (false), 1 (true), or the system-missing value. The result was forced to 0."