,,,Case Number,Value
Breaking Strain,Highest,1,12,7.00
,,2,16,6.00
-,,3,7,5.00
+,,3,14,5.00
,Lowest,1,3,1.00
,,2,3,1.00
,,3,4,1.00
Table: Extreme Values
,Manufacturer,,,Case Number,Value
-Breaking Strain,Aspeger,Highest,1,5,4.00
-,,,2,6,4.00
+Breaking Strain,Aspeger,Highest,1,6,4.00
+,,,2,5,4.00
,,,3,1,3.00
,,Lowest,1,3,1.00
,,,2,3,1.00
. 2
END DATA
-EXAMINE /x by y.
+EXAMINE /x by y
+ /MISSING = PAIRWISE
+ .
])
AT_CHECK([pspp -o pspp.csv examine.sps])
AT_CHECK([cat pspp.csv], [0], [dnl
])
AT_CLEANUP
+
+AT_SETUP([EXAMINE -- user missing values])
+AT_DATA([examine-m.sps], [dnl
+DATA LIST notable LIST /x * y *.
+BEGIN DATA.
+1 2
+9999999999 2
+9999999999 99
+END DATA.
+
+MISSING VALUES x (9999999999).
+MISSING VALUES y (99).
+
+EXAMINE
+ /VARIABLES= x y
+ /MISSING=PAIRWISE.
+])
+AT_CHECK([pspp -O format=csv examine-m.sps], [0], [dnl
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+x,1,33.3333%,2,66.6667%,3,100%
+y,2,66.6667%,1,33.3333%,3,100%
+])
+AT_CLEANUP
+
AT_SETUP([EXAMINE -- missing values and percentiles])
AT_DATA([examine.sps], [dnl
DATA LIST LIST /X *.
dnl Ignore output -- this is just a no-crash check.
AT_CLEANUP
+dnl Tests the trimmed mean calculation in the case
+dnl where the data is weighted towards the centre.
+AT_SETUP([EXAMINE -- trimmed mean])
+AT_DATA([examine.sps], [dnl
+DATA LIST LIST /X * C *.
+BEGIN DATA.
+1 1
+2 49
+3 2
+END DATA.
+
+WEIGHT BY c.
+
+EXAMINE
+ x
+ /STATISTICS=DESCRIPTIVES
+ .
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Reading free-form data from INLINE.
+Variable,Format
+X,F8.0
+C,F8.0
+
+Table: Case Processing Summary
+,Cases,,,,,
+,Valid,,Missing,,Total,
+,N,Percent,N,Percent,N,Percent
+X,52.00,100%,.00,0%,52.00,100%
+
+Table: Descriptives
+,,,Statistic,Std. Error
+X,Mean,,2.02,.03
+,95% Confidence Interval for Mean,Lower Bound,1.95,
+,,Upper Bound,2.09,
+,5% Trimmed Mean,,2.00,
+,Median,,2.00,
+,Variance,,.06,
+,Std. Deviation,,.24,
+,Minimum,,1.00,
+,Maximum,,3.00,
+,Range,,2.00,
+,Interquartile Range,,.00,
+,Skewness,,1.19,.33
+,Kurtosis,,15.73,.65
+])
+AT_CLEANUP
+
AT_SETUP([EXAMINE -- crash bug])
AT_DATA([examine.sps], [dnl
data list list /a * x * y *.
EXAMINE /x PLOT=HISTOGRAM.
])
-AT_CHECK([pspp -o pspp.csv examine.sps], [0], [dnl
-warning: Not creating plot because data set is empty.
+AT_CHECK([pspp -o pspp.csv examine.sps], [0], [ignore])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
+
+dnl Test that big input doesn't crash (bug 11307).
+AT_SETUP([EXAMINE -- big input doesn't crash])
+AT_DATA([examine.sps], [dnl
+INPUT PROGRAM.
+ LOOP #I=1 TO 50000.
+ COMPUTE X=NORMAL(10).
+ END CASE.
+ END LOOP.
+ END FILE.
+END INPUT PROGRAM.
+
+
+EXAMINE /x
+ /STATISTICS=DESCRIPTIVES.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_CLEANUP
+
+dnl Another test that big input doesn't crash.
+dnl The actual bug that this checks for has been lost.
+AT_SETUP([EXAMINE -- big input doesn't crash 2])
+AT_DATA([make-big-input.pl],
+ [for ($i=0; $i<100000; $i++) { print "AB12\n" };
+ for ($i=0; $i<100000; $i++) { print "AB04\n" };
])
+AT_CHECK([$PERL make-big-input.pl > large.txt])
+AT_DATA([examine.sps], [dnl
+DATA LIST FILE='large.txt' /S 1-2 (A) X 3 .
+
+
+AGGREGATE OUTFILE=* /BREAK=X /A=N.
+
+
+EXAMINE /A BY X.
+])
+AT_CHECK([pspp -o pspp.csv examine.sps])
+dnl Ignore output -- this is just a no-crash check.
+AT_DATA([more-big-input.pl],
+ [for ($i=0; $i<25000; $i++) { print "AB04\nAB12\n" };
+])
+AT_CHECK([$PERL more-big-input.pl >> large.txt])
+AT_CHECK([pspp -o pspp.csv examine.sps])
dnl Ignore output -- this is just a no-crash check.
AT_CLEANUP