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 . dnl m4_define([SPREADSHEET_TEST_PREP],[dnl AT_KEYWORDS([spreadsheet]) m4_if($1,[GNM],[dnl AT_CHECK([gzip -c $top_srcdir/tests/language/data-io/Book1.gnm.unzipped > Book1.gnumeric])dnl m4_define([testsheet],[Book1.gnumeric])dnl ]) dnl m4_if($1,[ODS],[dnl AT_CHECK([cp $top_srcdir/tests/language/data-io/test.ods test.ods])dnl m4_define([testsheet],[test.ods])dnl ])dnl ]) m4_define([CHECK_SPREADSHEET_READER], [dnl AT_SETUP([GET DATA /TYPE=$1 with CELLRANGE]) SPREADSHEET_TEST_PREP($1) AT_DATA([get-data.sps], [dnl GET DATA /TYPE=$1 /FILE='testsheet' /READNAMES=off /SHEET=name 'This' /CELLRANGE=range 'g9:i13' . DISPLAY VARIABLES. LIST. ]) AT_CHECK([pspp -o pspp.csv get-data.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Variables Name,Position,Print Format,Write Format,Missing Values VAR001,1,F8.2,F8.2, VAR002,2,A8,A8, VAR003,3,F8.2,F8.2, Table: Data List VAR001,VAR002,VAR003 .00,fred,20.00 1.00,11,21.00 2.00,twelve,22.00 3.00,13,23.00 4.00,14,24.00 ]) AT_CLEANUP AT_SETUP([GET DATA /TYPE=$1 with CELLRANGE and READNAMES]) SPREADSHEET_TEST_PREP($1) AT_DATA([get-data.sps], [dnl GET DATA /TYPE=$1 /FILE='testsheet' /READNAMES=on /SHEET=name 'This' /CELLRANGE=range 'g8:i13' . DISPLAY VARIABLES. LIST. ]) AT_CHECK([pspp -o pspp.csv get-data.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Variables Name,Position,Print Format,Write Format,Missing Values V1,1,F8.2,F8.2, V2,2,A8,A8, VAR001,3,F8.2,F8.2, Table: Data List V1,V2,VAR001 .00,fred,20.00 1.00,11,21.00 2.00,twelve,22.00 3.00,13,23.00 4.00,14,24.00 ]) AT_CLEANUP AT_SETUP([GET DATA /TYPE=$1 without CELLRANGE]) SPREADSHEET_TEST_PREP($1) AT_DATA([get-data.sps], [dnl GET DATA /TYPE=$1 /FILE='testsheet' /SHEET=index 3. DISPLAY VARIABLES. LIST. ]) AT_CHECK([pspp -O format=csv get-data.sps], [0], [dnl Table: Variables Name,Position,Print Format,Write Format,Missing Values name,1,A8,A8, id,2,F8.2,F8.2, height,3,F8.2,F8.2, warning: Cannot convert the value in the spreadsheet cell C4 to format (F8.2): Field contents are not numeric. Table: Data List name,id,height fred,.00,23.40 bert,1.00,.56 charlie,2.00,. @&t@ dick,3.00,-34.09 ]) AT_CLEANUP AT_SETUP([GET DATA /TYPE=$1 with missing data]) SPREADSHEET_TEST_PREP($1) AT_DATA([get-data.sps], [dnl * This sheet has no data in one of its variables GET DATA /TYPE=$1 /FILE='testsheet' /READNAMES=on /SHEET=index 5. DISPLAY VARIABLES. LIST. ]) AT_CHECK([pspp -o pspp.csv get-data.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Variables Name,Position,Print Format,Write Format,Missing Values vone,1,F8.2,F8.2, vtwo,2,F8.2,F8.2, vthree,3,A8,A8, v4,4,F8.2,F8.2, Table: Data List vone,vtwo,vthree,v4 1.00,3.00,,5.00 2.00,4.00,,6.00 ]) AT_CLEANUP dnl This syntax doesn't do anything particularly useful. dnl It has been seen to cause a few crashes, so we check here that it dnl doesn't do anthing bad. AT_SETUP([GET DATA /TYPE=$1 with no options]) SPREADSHEET_TEST_PREP($1) AT_DATA([get-data.sps], [dnl * This sheet is empty GET DATA /TYPE=$1 /FILE='testsheet'. DISPLAY DICTIONARY. LIST. ]) AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [ignore]) AT_CLEANUP AT_SETUP([GET DATA /TYPE=$1 with empty sheet]) SPREADSHEET_TEST_PREP($1) AT_DATA([get-data.sps], [dnl * This sheet is empty GET DATA /TYPE=$1 /FILE='testsheet' /SHEET=name 'Empty'. ]) AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [dnl warning: Selected sheet or range of spreadsheet `testsheet' is empty. ]) AT_CLEANUP AT_SETUP([GET DATA /TYPE=$1 with nonexistent sheet]) SPREADSHEET_TEST_PREP($1) AT_DATA([get-data.sps], [dnl * This sheet doesnt exist. GET DATA /TYPE=$1 /FILE='testsheet' /SHEET=name 'foobarxx'. ]) AT_CHECK([pspp -o pspp.csv get-data.sps], [0], [dnl warning: Selected sheet or range of spreadsheet `testsheet' is empty. ]) AT_CLEANUP ]) AT_BANNER([GET DATA Spreadsheet /TYPE=GNM]) CHECK_SPREADSHEET_READER([GNM]) dnl Check for a bug where gnumeric files were interpreted incorrectly AT_SETUP([GET DATA /TYPE=GNM sheet index bug]) AT_KEYWORDS([spreadsheet]) AT_DATA([minimal3.gnumeric],[dnl Sheet1 Sheet2 Sheet3 Sheet1 2 3 Print_Area #REF! A1 Sheet_Title "Sheet1" A1 Name x y Sheet One 1 2 foo 3 4 bar 5 6 Sheet2 2 2 Print_Area #REF! A1 Sheet_Title "Sheet2" A1 Comment DOB wealth Sheet Two 24/5/1966 0.02 wee 37145 3000 Sheet3 2 2 Print_Area #REF! A1 Sheet_Title "Sheet3" A1 3 4 5 6 7 8 9 10 11 ]) AT_DATA([gnum.sps], [dnl GET DATA /TYPE=GNM /FILE='minimal3.gnumeric' /SHEET=index 3 /READNAMES=off . LIST. ]) AT_CHECK([pspp -O format=csv gnum.sps], [0], [dnl Table: Data List VAR001,VAR002,VAR003 3,4.00,5.00 6,7.00,8.00 9,10.00,11.00 ]) AT_CLEANUP dnl Check for a bug where certain gnumeric files failed an assertion AT_SETUP([GET DATA /TYPE=GNM assert-fail]) AT_KEYWORDS([spreadsheet]) AT_DATA([read.sps],[dnl GET DATA /TYPE=GNM /FILE='crash.gnumeric' . list. ]) AT_DATA([crash.gnumeric],[dnl Sheet1 Sheet1 2 4 one two 1 2 1 2 1 2 ]) AT_CHECK([pspp -O format=csv read.sps], [0], [ignore]) AT_CLEANUP AT_BANNER([GET DATA Spreadsheet /TYPE=ODS]) CHECK_SPREADSHEET_READER([ODS]) AT_SETUP([GET DATA /TYPE=ODS crash]) AT_KEYWORDS([spreadsheet]) AT_CHECK([cp $top_srcdir/tests/language/data-io/newone.ods this.ods])dnl AT_DATA([crash.sps],[dnl GET DATA /TYPE=ODS /FILE='this.ods' /CELLRANGE=RANGE 'A1:C8' /READNAMES=ON LIST. ]) AT_CHECK([pspp -O format=csv crash.sps], [0], [ignore]) AT_CLEANUP AT_SETUP([GET DATA /TYPE=ODS readnames]) AT_KEYWORDS([spreadsheet]) dnl Check for a bug where in the ODS reader /READNAMES incorrectly dnl dealt with repeated names. AT_CHECK([cp $top_srcdir/tests/language/data-io/readnames.ods this.ods])dnl AT_DATA([readnames.sps],[dnl GET DATA /TYPE=ODS /FILE='this.ods' /CELLRANGE=RANGE 'A1:H8' /READNAMES=ON DISPLAY DICTIONARY. LIST. ]) AT_CHECK([pspp -O format=csv readnames.sps], [0], [dnl Table: Variables Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values freda,1,,Scale,Input,8,Right,F8.2,F8.2, fred,2,,Scale,Input,8,Right,F8.2,F8.2, fred_A,3,,Scale,Input,8,Right,F8.2,F8.2, fred_B,4,,Scale,Input,8,Right,F8.2,F8.2, fred_C,5,,Scale,Input,8,Right,F8.2,F8.2, fred_D,6,,Scale,Input,8,Right,F8.2,F8.2, fred_E,7,,Scale,Input,8,Right,F8.2,F8.2, Table: Data List freda,fred,fred_A,fred_B,fred_C,fred_D,fred_E 1.00,2.00,3.00,4.00,5.00,6.00,7.00 8.00,9.00,10.00,11.00,12.00,13.00,14.00 ]) AT_CLEANUP