X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flanguage%2Fstats%2Fautorecode.at;h=f639b078a493dfc2f895e2ee155c7c5ef582b17e;hb=899ca177810116bc0ff1c4bcce9368d79cd71d42;hp=6f112def33c1427f175366e63cf443371c78eb3c;hpb=fb763770be9335ecdda998155febc58b795c7bfe;p=pspp diff --git a/tests/language/stats/autorecode.at b/tests/language/stats/autorecode.at index 6f112def33..f639b078a4 100644 --- a/tests/language/stats/autorecode.at +++ b/tests/language/stats/autorecode.at @@ -1,5 +1,119 @@ +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 AT_BANNER([AUTORECODE procedure]) +AT_SETUP([AUTORECODE multiple missing values]) +AT_DATA([autorecode.sps], + [DATA LIST LIST NOTABLE /u v w x y z (F2.0). +BEGIN DATA. +11 11 11 11 11 11 +12 12 12 12 12 12 +13 13 13 13 13 13 +14 14 14 14 14 14 +15 15 15 15 15 15 +16 16 16 16 16 16 +END DATA. + +MISSING VALUES u (11) + v (11, 12) + w (11, 12, 13) + x (11 THRU 14) + y (11 THRU 15) + z (11 THRU 16). + +AUTORECODE u v w x y z INTO a b c d e f/print. +LIST. +DISPLAY VARIABLES/VARIABLES=a TO f. +]) +AT_CHECK([pspp -O format=csv autorecode.sps], [0], [dnl +Table: Recoding u into a. +Old Value,New Value,Value Label +12,1,12 +13,2,13 +14,3,14 +15,4,15 +16,5,16 +11,6,11 + +Table: Recoding v into b. +Old Value,New Value,Value Label +13,1,13 +14,2,14 +15,3,15 +16,4,16 +11,5,11 +12,6,12 + +Table: Recoding w into c. +Old Value,New Value,Value Label +14,1,14 +15,2,15 +16,3,16 +11,4,11 +12,5,12 +13,6,13 + +Table: Recoding x into d. +Old Value,New Value,Value Label +15,1,15 +16,2,16 +11,3,11 +12,4,12 +13,5,13 +14,6,14 + +Table: Recoding y into e. +Old Value,New Value,Value Label +16,1,16 +11,2,11 +12,3,12 +13,4,13 +14,5,14 +15,6,15 + +Table: Recoding z into f. +Old Value,New Value,Value Label +11,1,11 +12,2,12 +13,3,13 +14,4,14 +15,5,15 +16,6,16 + +Table: Data List +u,v,w,x,y,z,a,b,c,d,e,f +11,11,11,11,11,11,6,5,4,3,2,1 +12,12,12,12,12,12,1,6,5,4,3,2 +13,13,13,13,13,13,2,1,6,5,4,3 +14,14,14,14,14,14,3,2,1,6,5,4 +15,15,15,15,15,15,4,3,2,1,6,5 +16,16,16,16,16,16,5,4,3,2,1,6 + +Table: Variables +Name,Position,Print Format,Write Format,Missing Values +a,7,F1.0,F1.0,6 +b,8,F1.0,F1.0,5; 6 +c,9,F1.0,F1.0,4; 5; 6 +d,10,F1.0,F1.0,3 THRU 6 +e,11,F1.0,F1.0,2 THRU 6 +f,12,F1.0,F1.0,1 THRU 6 +]) +AT_CLEANUP + AT_SETUP([AUTORECODE numbers and short strings]) AT_DATA([autorecode.sps], [data list /X 1-5(a) Y 7. @@ -15,50 +129,65 @@ asdfk 0 asdfk 1 end data. -autorecode x y into A B/descend. +missing values x('asdfk') y(9). + +autorecode x y into A B/descend/print. list. compute Z=trunc(y/2). +formats z(F1.0). autorecode z into W. list. ]) AT_CHECK([pspp -O format=csv autorecode.sps], [0], [Table: Reading 1 record from INLINE. Variable,Record,Columns,Format -X,1,1- 5,A5 -Y,1,7- 7,F1.0 +X,1,1-5,A5 +Y,1,7-7,F1.0 + +Table: Recoding X into A. +Old Value,New Value,Value Label +lasdj,1,lasdj +lajks,2,lajks +asdfj,3,asdfj +asdfk,4,asdfk + +Table: Recoding Y into B. +Old Value,New Value,Value Label +2,1,2 +1,2,1 +0,3,0 +9,4,9 Table: Data List X,Y,A,B -lasdj,1,1.00,3.00 -asdfk,0,3.00,4.00 -asdfj,2,4.00,2.00 -asdfj,1,4.00,3.00 -asdfk,2,3.00,2.00 -asdfj,9,4.00,1.00 -lajks,9,2.00,1.00 -asdfk,0,3.00,4.00 -asdfk,1,3.00,3.00 +lasdj,1,1,2 +asdfk,0,4,3 +asdfj,2,3,1 +asdfj,1,3,2 +asdfk,2,4,1 +asdfj,9,3,4 +lajks,9,2,4 +asdfk,0,4,3 +asdfk,1,4,2 Table: Data List X,Y,A,B,Z,W -lasdj,1,1.00,3.00,.00,1.00 -asdfk,0,3.00,4.00,.00,1.00 -asdfj,2,4.00,2.00,1.00,2.00 -asdfj,1,4.00,3.00,.00,1.00 -asdfk,2,3.00,2.00,1.00,2.00 -asdfj,9,4.00,1.00,4.00,3.00 -lajks,9,2.00,1.00,4.00,3.00 -asdfk,0,3.00,4.00,.00,1.00 -asdfk,1,3.00,3.00,.00,1.00 +lasdj,1,1,2,0,1 +asdfk,0,4,3,0,1 +asdfj,2,3,1,1,2 +asdfj,1,3,2,0,1 +asdfk,2,4,1,1,2 +asdfj,9,3,4,.,. +lajks,9,2,4,.,. +asdfk,0,4,3,0,1 +asdfk,1,4,2,0,1 ]) AT_CLEANUP - - AT_SETUP([AUTORECODE long strings and check the value labels]) AT_DATA([ar.sps], - [data list notable list /s (a16) x *. + [data list notable list /s (a16) x (f1.0). begin data. widgets 1 thingummies 2 @@ -69,41 +198,348 @@ thingummies 6 oojimiflips 7 end data. -autorecode s into new. +variable labels s 'tracking my stuff'. +value labels /s 'thingummies' 'Funny sticky things'. + +autorecode s into new/print. list. -display dictionary. +display dictionary/variables=new. ]) AT_CHECK([pspp -O format=csv ar.sps], [0], - [Table: Data List + [Table: Recoding s into new (tracking my stuff). +Old Value,New Value,Value Label +oojars,1,oojars +oojimiflips,2,oojimiflips +thingummies,3,Funny sticky things +widgets,4,widgets + +Table: Data List s,x,new -widgets ,1.00,4.00 -thingummies ,2.00,3.00 -oojars ,3.00,1.00 -widgets ,4.00,4.00 -oojars ,5.00,1.00 -thingummies ,6.00,3.00 -oojimiflips ,7.00,2.00 - -Variable,Description,,Position -s,Format: A16,,1 -,Measure: Nominal,, -,Display Alignment: Left,, -,Display Width: 16,, -x,Format: F8.2,,2 -,Measure: Scale,, -,Display Alignment: Right,, -,Display Width: 8,, -new,Format: F8.2,,3 -,Measure: Scale,, -,Display Alignment: Right,, -,Display Width: 8,, -,1,oojars, -,2,oojimiflips, -,3,thingummies, -,4,widgets, +widgets,1,4 +thingummies,2,3 +oojars,3,1 +widgets,4,4 +oojars,5,1 +thingummies,6,3 +oojimiflips,7,2 + +Table: Variables +Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format +new,3,tracking my stuff,Nominal,Input,8,Right,F1.0,F1.0 + +Table: Value Labels +Variable Value,,Label +tracking my stuff,1,oojars +,2,oojimiflips +,3,Funny sticky things +,4,widgets +]) + +AT_CLEANUP + + +AT_SETUP([AUTORECODE group subcommand]) +AT_DATA([ar-group.sps], +[data list notable list /x y (f8.0). +begin data. +11 10 +12 12 +13 15 +14 11 +15 12 +16 18 +end data. + +missing values y (12). + +autorecode + x y into a b + /group + /print. + +list. +display variables /variables=a b. ]) +AT_CHECK([pspp -O format=csv ar-group.sps], [0], +[Table: Recoding grouped variables. +Old Value,New Value,Value Label +10,1,10 +11,2,11 +13,3,13 +14,4,14 +15,5,15 +16,6,16 +18,7,18 +12,8,12 + +Table: Data List +x,y,a,b +11,10,2,1 +12,12,8,8 +13,15,3,5 +14,11,4,2 +15,12,5,8 +16,18,6,7 + +Table: Variables +Name,Position,Print Format,Write Format,Missing Values +a,3,F1.0,F1.0,8 +b,4,F1.0,F1.0,8 +]) + +AT_CLEANUP + + + +AT_SETUP([AUTORECODE group - string variables]) +AT_DATA([strings.sps], +[data list notable list /x (a8) y (a16). +begin data. +fred bert +charlie " " +delta echo +" " windows +" " nothing +end data. + + +autorecode x y into a b + /group + /print. + +delete variables x y. + +list. + +]) + +AT_CHECK([pspp -O format=csv strings.sps], [0], +[Table: Recoding grouped variables. +Old Value,New Value,Value Label +,1, +bert,2,bert +charlie,3,charlie +delta,4,delta +echo,5,echo +fred,6,fred +nothing,7,nothing +windows,8,windows + +Table: Data List +a,b +6,2 +3,1 +4,5 +1,8 +1,7 +]) + +AT_CLEANUP + + +dnl Tests for a crash which happened when the /GROUP subcommand +dnl appeared with string variables of different widths. +AT_SETUP([AUTORECODE group vs. strings]) +AT_DATA([ar-strings.sps], + [data list notable list /a (a12) b (a6). +begin data. +one nine +two ten +three eleven +four nought +end data. + +autorecode a b into x y + /group + /print. + +list. +]) + +AT_CHECK([pspp -O format=csv ar-strings.sps], [0], [dnl +Table: Recoding grouped variables. +Old Value,New Value,Value Label +eleven,1,eleven +four,2,four +nine,3,nine +nought,4,nought +one,5,one +ten,6,ten +three,7,three +two,8,two + +Table: Data List +a,b,x,y +one,nine,5,3 +two,ten,8,6 +three,eleven,7,1 +four,nought,2,4 +]) + +AT_CLEANUP + + + +AT_SETUP([AUTORECODE /blank]) + +AT_DATA([auto-blank.sps], [dnl +data list notable list /x (a8) y (f8.0) z (a16). +begin data. +one 2 fred +two 4 "" +"" 4 fred +"" 2 charliebrown +three 2 charliebrown +end data. + +autorecode variables x y z into a b c /blank=missing /print. + +list a b c y. +]) + +AT_CHECK([pspp -O format=csv auto-blank.sps], [0], [dnl +Table: Recoding x into a. +Old Value,New Value,Value Label +one,1,one +three,2,three +two,3,two + +Table: Recoding y into b. +Old Value,New Value,Value Label +2,1,2 +4,2,4 + +Table: Recoding z into c. +Old Value,New Value,Value Label +charliebrown,1,charliebrown +fred,2,fred + +Table: Data List +a,b,c,y +1,1,2,2 +3,2,.,4 +.,2,2,4 +.,1,1,2 +2,1,1,2 +]) + +AT_CLEANUP + +dnl AUTORECODE had a use-after-free error when TEMPORARY was in use. +dnl Bug #32757. +AT_SETUP([AUTORECODE with TEMPORARY]) +AT_DATA([autorecode.sps], + [data list /X 1-5(a) Y 7. +begin data. +lasdj 1 +asdfk 0 +asdfj 2 +asdfj 1 +asdfk 2 +asdfj 9 +lajks 9 +asdfk 0 +asdfk 1 +end data. + +temporary. +select if y > 1. +autorecode x y into A B/descend/print. +list. +]) +AT_CHECK([pspp -O format=csv autorecode.sps], [0], [dnl +Table: Reading 1 record from INLINE. +Variable,Record,Columns,Format +X,1,1-5,A5 +Y,1,7-7,F1.0 + +Table: Recoding X into A. +Old Value,New Value,Value Label +lajks,1,lajks +asdfk,2,asdfk +asdfj,3,asdfj + +Table: Recoding Y into B. +Old Value,New Value,Value Label +9,1,9 +2,2,2 + +Table: Data List +X,Y,A,B +lasdj,1,.,. +asdfk,0,2,. +asdfj,2,3,2 +asdfj,1,3,. +asdfk,2,2,2 +asdfj,9,3,1 +lajks,9,1,1 +asdfk,0,2,. +asdfk,1,2,. +]) +AT_CLEANUP + + +dnl For compatibility, make sure that /INTO (with leading slash) is accepted +dnl (bug #48762) +AT_SETUP([AUTORECODE with /INTO]) +AT_DATA([autorecode.sps], + [data list list notable /x (f8.0). +begin data. +1 +8 +-901 +4 +1 +99 +8 +end data. + +autorecode x /into y /print. + +list. +]) +AT_CHECK([pspp -O format=csv autorecode.sps], [0], +[Table: Recoding x into y. +Old Value,New Value,Value Label +-901,1,-901 +1,2,1 +4,3,4 +8,4,8 +99,5,99 + +Table: Data List +x,y +1,2 +8,4 +-901,1 +4,3 +1,2 +99,5 +8,4 +]) +AT_CLEANUP + + +AT_SETUP([AUTORECODE with /BLANK without specifier]) + +AT_DATA([autorecode.sps], [data list notable list /x (a18). +begin data +one +two +three +end data. + +* /BLANK should be either =MISSING or =VALID +autorecode x /into y + /blank + +execute. +]) + +AT_CHECK([pspp -O format=csv autorecode.sps], [1], [ignore]) + AT_CLEANUP