X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=tests%2Fdata%2Fsys-file.at;h=7b2e2084446ff3a7f193fd654572a0c7630d5ad9;hb=8596d6eb21e40ffaf9321d1cb779333de3126b50;hp=e726d535404934a6396a640681904baa570f0c2b;hpb=52eef93a40a3a18c594c38d4697406eba83f4321;p=pspp
diff --git a/tests/data/sys-file.at b/tests/data/sys-file.at
index e726d53540..7b2e208444 100644
--- a/tests/data/sys-file.at
+++ b/tests/data/sys-file.at
@@ -1,9 +1,28 @@
+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([system files])
# Also tests that long variable names are preserved by SAVE and GET.
AT_SETUP([write and read numeric data])
AT_KEYWORDS([SAVE GET system file])
-AT_DATA([sysfile.sps], [dnl
+for variant in 'UNCOMPRESSED $FL2' 'ZCOMPRESSED $FL3'; do
+ set $variant
+ compression=$1 magic=$2
+ cat >sysfile.sps <sysfile.sps < /dev/null | od | sed '1q' > com.txt])
-dnl Allow big- or little-endian format.
+dnl Make sure file really was compressd, allowing big- or little-endian format.
+AT_CHECK([dd if=com.sav bs=1 skip=72 count=4 2> /dev/null > com.sav.subset])
+od com.sav.subset
AT_CHECK(
- [(echo '0000000 000000 000001' | diff com.txt -) ||
- (echo '0000000 000001 000000' | diff com.txt -)], [0],
+ [(printf '\000\000\000\001' | cmp -l com.sav.subset -) ||
+ (printf '\001\000\000\000' | cmp -l com.sav.subset -)], [0],
[ignore])
-AT_CAPTURE_FILE([com.txt])
+AT_CLEANUP
+
+AT_SETUP([overwriting system file])
+AT_DATA([output.sav], [abcdef
+])
+cp output.sav output.sav.backup
+AT_DATA([sysfile.sps], [dnl
+DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+5
+END DATA.
+SAVE OUTFILE='output.sav'.
+])
+AT_CHECK([pspp -O format=csv sysfile.sps])
+AT_CHECK([cmp output.sav output.sav.backup], [1], [ignore])
+AT_CLEANUP
+
+AT_SETUP([overwriting system file atomically])
+AT_DATA([output.sav], [abcdef
+])
+cp output.sav output.sav.backup
+AT_DATA([sysfile.sps],
+[[DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+5
+END DATA.
+XSAVE OUTFILE='output.sav'.
+HOST COMMAND=['kill -TERM $PPID'].
+]])
+AT_CHECK([pspp -O format=csv sysfile.sps], [143], [], [ignore])
+AT_CHECK([cmp output.sav output.sav.backup])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_CLEANUP
+
+
+AT_SETUP([write to same system file being read])
+AT_DATA([save.sps], [dnl
+DATA LIST NOTABLE/x 1.
+BEGIN DATA.
+3
+END DATA.
+SAVE OUTFILE='data.sav'.
+])
+AT_CHECK([pspp -O format=csv save.sps])
+AT_CHECK([test -s data.sav])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_DATA([save2.sps], [dnl
+GET FILE='data.sav'.
+COMPUTE y = x * 3.
+SAVE OUTFILE='data.sav'.
+])
+AT_CHECK([pspp -O format=csv save2.sps])
+AT_CHECK(
+ [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
+AT_DATA([save3.sps], [dnl
+GET FILE='data.sav'.
+LIST.
+])
+AT_CHECK([pspp -O format=csv save3.sps], [0], [dnl
+Table: Data List
+x,y
+3,9.00
+])
AT_CLEANUP
AT_SETUP([nonempty case_map doesn't crash])
@@ -131,21 +267,22 @@ LIST.
])
AT_CHECK([pspp -o pspp.csv get.sps])
AT_CHECK([cat pspp.csv], [0], [dnl
-Variable,Label,,Position
-cont,continents of the world,,1
-size,sq km,,2
-pop,population,,3
-count,number of countries,,4
+Table: Variables
+Name,Position,Label
+cont,1,continents of the world
+size,2,sq km
+pop,3,population
+count,4,number of countries
Table: Data List
cont,size,pop,count
-Asia ,44579000,3.7E+009,44.00
-Africa ,30065000,7.8E+008,53.00
-North America ,24256000,4.8E+008,23.00
-South America ,17819000,3.4E+008,12.00
-Antarctica ,13209000,.00,.00
-Europe ,9938000,7.3E+008,46.00
-Australia/Oceania ,7687000,31000000,14.00
+Asia,44579000,3.7E+009,44.00
+Africa,30065000,7.8E+008,53.00
+North America,24256000,4.8E+008,23.00
+South America,17819000,3.4E+008,12.00
+Antarctica,13209000,.00,.00
+Europe,9938000,7.3E+008,46.00
+Australia/Oceania,7687000,31000000,14.00
])
AT_CLEANUP
@@ -193,29 +330,18 @@ AT_BANNER([system files -- very long strings])
AT_SETUP([read very long strings written by SPSS 13])
AT_CHECK([cp $top_srcdir/tests/data/v13.sav .])
AT_DATA([sys-file.sps], [dnl
-GET FILE='v13.sav'.
+GET FILE='v13.sav' ENCODING='utf-8'.
DISPLAY VARIABLES.
LIST.
])
AT_CHECK([pspp -o pspp.csv sys-file.sps])
AT_CHECK([cat pspp.csv], [0], [dnl
-Variable,Description,,Position
-N,Format: F8.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 10,,
-A255,Format: A255,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-A258,Format: A258,,3
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-A2000,Format: A2000,,4
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
+Table: Variables
+Name,Position,Print Format,Write Format
+N,1,F8.2,F8.2
+A255,2,A255,A255
+A258,3,A258,A258
+A2000,4,A2000,A2000
Table: Data List
N,A255,A258,A2000
@@ -227,29 +353,18 @@ AT_CLEANUP
AT_SETUP([read very long strings written by SPSS 14])
AT_CHECK([cp $top_srcdir/tests/data/v14.sav .])
AT_DATA([sys-file.sps], [dnl
-GET FILE='v14.sav'.
+GET FILE='v14.sav' ENCODING='utf-8'.
DISPLAY VARIABLES.
LIST.
])
AT_CHECK([pspp -o pspp.csv sys-file.sps])
AT_CHECK([cat pspp.csv], [0], [dnl
-Variable,Description,,Position
-vl255,Format: A255,,1
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 26,,
-vl256,Format: A256,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 26,,
-vl1335,Format: A1335,,3
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 26,,
-vl2000,Format: A2000,,4
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 26,,
+Table: Variables
+Name,Position,Print Format,Write Format
+vl255,1,A255,A255
+vl256,2,A256,A256
+vl1335,3,A1335,A1335
+vl2000,4,A2000,A2000
Table: Data List
vl255,vl256,vl1335,vl2000
@@ -271,9 +386,9 @@ m4_define([VLS_WRITE],
vls_gen_data
AT_DATA([save.sps], [dnl
DATA LIST FIXED NOTABLE FILE='data.txt'
- /a 2-11 (a)
- b (a256)
- c (a200)
+ /a 2-11 (a)
+ b (a256)
+ c (a200)
d (a32767).
SAVE OUTFILE='foo.sav' /$1.
@@ -285,7 +400,7 @@ GET FILE='foo.sav'.
DISPLAY VARIABLES.
PRINT OUTFILE='out.txt'
- /a (a10) b (a256) c (a200)
+ /a (a10) b (a256) c (a200)
d (a32767)
.
@@ -293,25 +408,80 @@ EXECUTE.
])
AT_CHECK([pspp -o pspp.csv get.sps])
AT_CHECK([cat pspp.csv], [0], [dnl
-Variable,Description,,Position
-a,Format: A10,,1
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 10,,
-b,Format: A256,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-c,Format: A200,,3
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
-d,Format: A32767,,4
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 32,,
+Table: Variables
+Name,Position,Print Format,Write Format
+a,1,A10,A10
+b,2,A256,A256
+c,3,A200,A200
+d,4,A32767,A32767
])
AT_CLEANUP])
VLS_WRITE([UNCOMPRESSED])
VLS_WRITE([COMPRESSED])
+
+dnl This test writes non-ASCII characters to most of the string fields in
+dnl a .sav file and demonstrates that they are properly read back in.
+dnl XXX mrsets tests are missing.
+AT_SETUP([system file character encoding])
+AT_CHECK([i18n-test supports_encodings windows-1252])
+AT_DATA([save.sps], [dnl
+SET LOCALE='windows-1252'.
+DATA LIST LIST NOTABLE /à éîöçxyzabc * roué (A9) croûton (A1000).
+FILE LABEL 'clientèle confrère cortège crèche'.
+DOCUMENT coördinate smörgåsbord
+épée séance soufflé soirée
+jalapeño vicuña.
+VALUE LABEL
+ /à éîöçxyzabc 1 'éclair élan'
+ /roué 'abcdefghi' 'sauté précis'.
+VARIABLE LABEL
+ roué 'Provençal soupçon'.
+DATAFILE ATTRIBUTE
+ ATTRIBUTE=Furtwängler('kindergärtner').
+VARIABLE ATTRIBUTE
+ VARIABLES=à éîöçxyzabc
+ ATTRIBUTE=Atatürk('Düsseldorf Gewürztraminer').
+BEGIN DATA.
+1 a x
+2 b y
+3 c z
+END DATA.
+SAVE OUTFILE='foo.sav'.
+])
+AT_CHECK([pspp -O format=csv save.sps])
+AT_DATA([get.sps], [dnl
+GET FILE='foo.sav'.
+DISPLAY FILE LABEL.
+DISPLAY DOCUMENTS.
+DISPLAY DICTIONARY.
+DISPLAY ATTRIBUTES.
+])
+AT_CHECK([pspp -o pspp.csv get.sps])
+AT_CHECK([[sed 's/(Entered [^)]*)/(Entered )/' pspp.csv]], [0], [dnl
+Table: File Label
+Label,clientèle confrère cortège crèche
+
+Table: Documents
+"DOCUMENT coördinate smörgåsbord
+épée séance soufflé soirée
+jalapeño vicuña.
+ (Entered )"
+
+Table: Variables
+Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format
+à éîöçxyzabc,1,,Nominal,Input,8,Right,F8.2,F8.2
+roué,2,Provençal soupçon,Nominal,Input,9,Left,A9,A9
+croûton,3,,Nominal,Input,32,Left,A1000,A1000
+
+Table: Value Labels
+Variable Value,,Label
+à éîöçxyzabc,1.00,éclair élan
+Provençal soupçon,abcdefghi,sauté précis
+
+Table: Variable and Dataset Attributes
+Variable and Name,,Value
+(dataset),Furtwängler,kindergärtner
+à éîöçxyzabc,Atatürk,Düsseldorf Gewürztraminer
+])
+AT_CLEANUP