dnl
dnl Checks the AGGREGATE procedure with the specified combination of:
dnl
-dnl - OUTFILE: One of "scratch", "active", or "external" according to
+dnl - OUTFILE: One of "dataset", "active", or "external" according to
dnl where AGGREGATE's output should be directed.
dnl
dnl - SORT: Either "presorted" or "unsorted" according to whether
[DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').
+m4_if([$1], [dataset], [DATASET DECLARE aggregate.])
m4_if([$2], [presorted], [SORT CASES BY g.])
AGGREGATE dnl
m4_if([$1], [active], [OUTFILE=*],
[$1], [external], [OUTFILE='aggregate.sys'],
- [outfile=@%:@AGGREGATE]) dnl
+ [outfile=aggregate]) dnl
m4_if([$2], [presorted], [/PRESORTED]) dnl
m4_if([$3], [columnwise], [/MISSING=COLUMNWISE])
/DOCUMENT
/NSUM = sum(n)
/NSUMI = sum.(n).
m4_if([$1], [external], [GET FILE='aggregate.sys'.],
- [$1], [scratch], [GET FILE=@%:@AGGREGATE.])
+ [$1], [dataset], [DATASET ACTIVATE aggregate.])
LIST.
])
AT_CHECK([pspp -O format=csv aggregate.sps], [0], [stdout])
])])
AT_CLEANUP])
-CHECK_AGGREGATE([scratch], [presorted], [itemwise])
-CHECK_AGGREGATE([scratch], [presorted], [columnwise])
-CHECK_AGGREGATE([scratch], [unsorted], [itemwise])
-CHECK_AGGREGATE([scratch], [unsorted], [columnwise])
+CHECK_AGGREGATE([dataset], [presorted], [itemwise])
+CHECK_AGGREGATE([dataset], [presorted], [columnwise])
+CHECK_AGGREGATE([dataset], [unsorted], [itemwise])
+CHECK_AGGREGATE([dataset], [unsorted], [columnwise])
CHECK_AGGREGATE([active], [presorted], [itemwise])
CHECK_AGGREGATE([active], [presorted], [columnwise])
CHECK_AGGREGATE([active], [unsorted], [itemwise])
])
AT_CHECK([pspp -O format=csv aggregate.sps], [1], [ignore], [])
AT_CLEANUP
+
+
+AT_SETUP([AGGREGATE mode=addvariables])
+AT_DATA([addvariables.sps],
+ [data list notable list /x * cn * y *.
+begin data.
+1 1 2
+3 2 3
+3 3 4
+5 4 6
+7 5 8
+7 6 9
+7 7 20
+9 8 11
+end data.
+
+aggregate outfile=* mode=addvariables
+ /break = x
+ /sum = sum(y)
+ /mean = mean (y)
+ /median = median (y).
+
+list.
+])
+
+AT_CHECK([pspp -O format=csv addvariables.sps], [0],
+ [Table: Data List
+x,cn,y,sum,mean,median
+1.00,1.00,2.00,2.00,2.00,2.00
+3.00,2.00,3.00,7.00,3.50,3.50
+3.00,3.00,4.00,7.00,3.50,3.50
+5.00,4.00,6.00,6.00,6.00,6.00
+7.00,5.00,8.00,37.00,12.33,9.00
+7.00,6.00,9.00,37.00,12.33,9.00
+7.00,7.00,20.00,37.00,12.33,9.00
+9.00,8.00,11.00,11.00,11.00,11.00
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([AGGREGATE buggy duplicate variables])
+dnl Test for a bug which crashed when duplicated
+dnl variables were attempted.
+AT_DATA([dup-variables.sps],
+ [DATA LIST NOTABLE LIST /x * .
+begin data
+1
+1
+1
+1
+2
+2
+2
+3
+3
+3
+3
+3
+3
+end data.
+
+AGGREGATE OUTFILE=* MODE=ADDVARIABLES
+ /BREAK= x
+ /N_BREAK = N.
+
+AGGREGATE OUTFILE=* MODE=ADDVARIABLES
+ /BREAK= x
+ /N_BREAK = N.
+])
+
+AT_CHECK([pspp -O format=csv dup-variables.sps], [1],
+["dup-variables.sps:24: error: AGGREGATE: Variable name N_BREAK is not unique within the aggregate file dictionary, which contains the aggregate variables and the break variables."
+])
+
+AT_CLEANUP