X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Fdata%2Fsys-file.at;h=a2980853e1224e4cbde2bb36580add60d70fa3a0;hb=91629b1685cfb3c0606158257695a6ff6385242f;hp=4021b6de3f742f22d487a914187da728c5d2e090;hpb=de57f1dfea55907e1d1f38d1ebe6c9def5c2737d;p=pspp diff --git a/tests/data/sys-file.at b/tests/data/sys-file.at index 4021b6de3f..a2980853e1 100644 --- a/tests/data/sys-file.at +++ b/tests/data/sys-file.at @@ -37,6 +37,122 @@ variable001,variable002,variable003,variable004 ]) AT_CLEANUP +AT_SETUP([write and read compressed files]) +AT_KEYWORDS([SAVE GET system file]) +AT_DATA([sysfile.sps], [dnl +DATA LIST LIST NOTABLE /x * y (a200). +BEGIN DATA. +1.2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +. yyyyyyyyyyyyyyy +0 ddddddddddddddddddddddddddddddd +101 z +END DATA. + +SAVE OUTFILE='com.sav' /COMPRESS . + +GET FILE='com.sav'. + +LIST. +]) +AT_CHECK([pspp -o pspp.csv sysfile.sps]) +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( + [(printf '\000\000\000\001' | cmp -l com.sav.subset -) || + (printf '\001\000\000\000' | cmp -l com.sav.subset -)], [0], + [ignore]) +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]) +AT_KEYWORDS([SAVE system file]) +AT_DATA([save.sps], [dnl +INPUT PROGRAM. + COMPUTE #I = 1. + COMPUTE X = #I + 1. + END CASE. + END FILE. +END INPUT PROGRAM. + +SAVE OUTFILE='tiny.sav'. +]) +AT_CHECK([pspp -O format=csv save.sps]) +AT_DATA([get.sps], [dnl +GET FILE='tiny.sav'. +LIST. +]) +AT_CHECK([pspp -O format=csv get.sps], [0], [dnl +Table: Data List +X +2.00 +]) +AT_CLEANUP + # Test that system files can be read properly, even when the case_size # header value is -1 (Some 3rd party products do this). AT_SETUP([system files with -1 case_size]) @@ -263,3 +379,78 @@ d,Format: A32767,,4 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([supports_encodings windows-1252]) +AT_DATA([save.sps], [dnl +SET LOCALE='windows-1252'. +DATA LIST LIST NOTABLE /àéîöç * 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 + /àéîöç 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=àéîöç + 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. +]) +AT_CHECK([pspp -o pspp.csv get.sps]) +AT_CHECK([[sed 's/(Entered [^)]*)/(Entered )/' pspp.csv]], [0], [dnl +File label: clientèle confrère cortège crèche + +Documents in the active dataset: + +DOCUMENT coördinate smörgåsbord + +épée séance soufflé soirée + +jalapeño vicuña. + +(Entered ) + +Variable,Description,,Position +àéîöç,Format: F8.2,,1 +,Measure: Scale,, +,Display Alignment: Right,, +,Display Width: 8,, +,1.00,éclair élan, +,Custom attributes:,, +,Atatürk,Düsseldorf Gewürztraminer, +roué,Provençal soupçon,,2 +,Format: A9,, +,Measure: Nominal,, +,Display Alignment: Left,, +,Display Width: 9,, +,abcdefghi,sauté précis, +croûton,Format: A1000,,3 +,Measure: Nominal,, +,Display Alignment: Left,, +,Display Width: 32,, + +Table: Custom data file attributes. +Attribute,Value +Furtwängler,kindergärtner +]) +AT_CLEANUP