output: Introduce pivot tables.
[pspp] / tests / language / stats / autorecode.at
index 7f5e6eb376aec3e421bc4f4490a791bb56083d14..33a1fd26def954312b6c561e368851819d2b9683 100644 (file)
@@ -1,3 +1,19 @@
+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([AUTORECODE procedure])
 
 AT_SETUP([AUTORECODE numbers and short strings])
@@ -79,31 +95,26 @@ display dictionary.
 AT_CHECK([pspp -O format=csv ar.sps], [0],
   [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.00,oojars,
-,2.00,oojimiflips,
-,3.00,thingummies,
-,4.00,widgets,
+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
+
+Table: Variables
+Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
+s,1,,Nominal,Input,16,Left,A16,A16,
+x,2,,Scale,Input,8,Right,F8.2,F8.2,
+new,3,,Scale,Input,8,Right,F8.2,F8.2,
+
+Table: Value Labels
+Variable Value,,Label
+new,1.00,oojars
+,2.00,oojimiflips
+,3.00,thingummies
+,4.00,widgets
 ])
 
 AT_CLEANUP
@@ -199,10 +210,116 @@ AT_CHECK([pspp -O format=csv ar-strings.sps], [0],
 [dnl
 Table: Data List
 a,b,x,y
-one         ,nine  ,5.00,3.00
-two         ,ten   ,8.00,6.00
-three       ,eleven,7.00,1.00
-four        ,nought,2.00,4.00
+one,nine,5.00,3.00
+two,ten,8.00,6.00
+three,eleven,7.00,1.00
+four,nought,2.00,4.00
 ])
 
 AT_CLEANUP
+
+
+
+AT_SETUP([AUTORECODE /blank])
+
+AT_DATA([auto-blank.sps],  [dnl
+data list notable list /x (a8) y * 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.
+
+list a b c y.
+])
+
+AT_CHECK([pspp -O format=csv auto-blank.sps], [0], [dnl
+Table: Data List
+a,b,c,y
+1.00,1.00,2.00,2.00
+3.00,2.00,.  ,4.00
+.  ,2.00,2.00,4.00
+.  ,1.00,1.00,2.00
+2.00,1.00,1.00,2.00
+])
+
+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.
+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
+
+Table: Data List
+X,Y,A,B
+lasdj,1,.  ,.  @&t@
+asdfk,0,2.00,.  @&t@
+asdfj,2,3.00,2.00
+asdfj,1,3.00,.  @&t@
+asdfk,2,2.00,2.00
+asdfj,9,3.00,1.00
+lajks,9,1.00,1.00
+asdfk,0,2.00,.  @&t@
+asdfk,1,2.00,.  @&t@
+])
+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 .
+begin data.
+1
+8
+-901
+4
+1
+99
+8
+end data.
+
+autorecode x  /into y.
+
+list.
+])
+AT_CHECK([pspp -O format=csv autorecode.sps], [0],
+[Table: Data List
+x,y
+1.00,2.00
+8.00,4.00
+-901.00,1.00
+4.00,3.00
+1.00,2.00
+99.00,5.00
+8.00,4.00
+])
+AT_CLEANUP