dnl PSPP - a program for statistical analysis.
dnl Copyright (C) 2017 Free Software Foundation, Inc.
dnl
dnl This program is free software: you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation, either version 3 of the License, or
dnl (at your option) any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
dnl
AT_BANNER([GET])

dnl Tests for a bug which caused the second procedure
dnl after GET to have corrupt input.
AT_SETUP([GET data works in multiple procedures])
AT_DATA([get.sps], [dnl
DATA LIST LIST NOTABLE /LOCATION * EDITOR * SHELL * FREQ * .
BEGIN DATA.
    1.00     1.00    1.0     2.00
    1.00     1.00    2.0    30.00
    1.00     2.00    1.0     8.00
    1.00     2.00    2.0    20.00
    2.00     1.00    1.0     2.00
    2.00     1.00    2.0    22.00
    2.00     2.00    1.0     1.00
    2.00     2.00    2.0     3.00
END DATA.

SAVE /OUTFILE='foo.sav'.

GET /FILE='foo.sav'.

* This one's ok
LIST.

* But this one get rubbish
LIST.
])
AT_CHECK([pspp -o pspp.csv get.sps])
AT_CHECK([cat pspp.csv], [0], [dnl
Table: Data List
LOCATION,EDITOR,SHELL,FREQ
1.00,1.00,1.00,2.00
1.00,1.00,2.00,30.00
1.00,2.00,1.00,8.00
1.00,2.00,2.00,20.00
2.00,1.00,1.00,2.00
2.00,1.00,2.00,22.00
2.00,2.00,1.00,1.00
2.00,2.00,2.00,3.00

Table: Data List
LOCATION,EDITOR,SHELL,FREQ
1.00,1.00,1.00,2.00
1.00,1.00,2.00,30.00
1.00,2.00,1.00,8.00
1.00,2.00,2.00,20.00
2.00,1.00,1.00,2.00
2.00,1.00,2.00,22.00
2.00,2.00,1.00,1.00
2.00,2.00,2.00,3.00
])
AT_CLEANUP

dnl Tests for a bug that crashed when GET specified a nonexistent file.
AT_SETUP([GET nonexistent file doesn't crash])
dnl We use stdin here, because the bug seems to manifest itself only in
dnl interactive mode.
AT_CHECK([echo "GET /FILE='nonexistent.sav'." | pspp -O format=csv], [1], [dnl
error: An error occurred while opening `nonexistent.sav': No such file or directory.
])
AT_CLEANUP

dnl Tests for bug #15766 (/KEEP subcommand on SAVE doesn't
dnl fully support ALL) and underlying problems.
m4_define([GET_KEEP_ALL],
  [AT_SETUP([GET with /KEEP=ALL crashes -- $1])
   AT_DATA([get.sps], [dnl
DATA LIST LIST NOTABLE
	/a b c d e f g h i j k l m n o p q r s t u v w x y z (F2.0).
BEGIN DATA.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
END DATA.
LIST.
SAVE OUTFILE='test.sav'/$1.
GET FILE='test.sav'/KEEP=x y z all.
LIST.
])
   AT_CHECK([pspp -o pspp.csv get.sps])
   AT_CHECK([cat pspp.csv], [0], [dnl
Table: Data List
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26

Table: Data List
x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w
24,25,26,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
])
   AT_CLEANUP])
GET_KEEP_ALL([uncompressed])
GET_KEEP_ALL([compressed])


dnl Test for a crash when no /TYPE was provided
AT_SETUP([GET data no type])
AT_DATA([get.sps], [dnl
get data /file='anything'.
])

AT_CHECK([pspp get.sps], [1], [ignore])

AT_CLEANUP
