sys-file: Add test to write non-ASCII to most .sav string fields.
[pspp] / tests / data / sys-file.at
index 721578e6a0aadf23048adaa846ba6ce35ca41502..a2980853e1224e4cbde2bb36580add60d70fa3a0 100644 (file)
@@ -55,14 +55,13 @@ GET FILE='com.sav'.
 LIST.
 ])
 AT_CHECK([pspp -o pspp.csv sysfile.sps])
-dnl Make sure file really was compressd.
-AT_CHECK([dd if=com.sav bs=1 skip=72 count=4 2> /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])
@@ -380,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 <date>)/' 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 <date>)
+
+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