+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([Perl module tests])
dnl This command can be used to run with the PSPP Perl module after it has been
dnl equivalent to "use ExtUtils::testlib;" inside the Perl program, but it does
dnl not need to be run with the perl-module build directory as the current
dnl working directory.
+dnl
+dnl XXX "libtool --mode=execute" is probably better than setting
+dnl LD_LIBRARY_PATH.
m4_define([RUN_PERL_MODULE],
[LD_LIBRARY_PATH=$abs_top_builddir/src/.libs \
+ LD_PRELOAD=/usr/lib/i386-linux-gnu/libasan.so.4 \
+ DYLD_LIBRARY_PATH=$abs_top_builddir/src/.libs \
$PERL -I$abs_top_builddir/perl-module/blib/arch \
-I$abs_top_builddir/perl-module/blib/lib])
These Documents
-Variable,Description,,Position
-legal,Format: F9.2,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-money,Format: DOLLAR6.2,,2
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
+Table: Variables
+Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
+legal,1,,Scale,Input,8,Right,F9.2,F9.2,
+money,2,,Scale,Input,8,Right,DOLLAR6.2,DOLLAR6.2,
dump-dict.sps:5: note: SHOW: WEIGHT is money.
])
DISPLAY DOCUMENTS.
LIST.
])
-AT_CHECK([pspp -O format=csv dump-dicts.sps], [0],
- [Variable,Description,,Position
-id,Format: F2.0,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-name,Format: A20,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 20,,
+AT_CHECK([pspp -O format=csv dump-dicts.sps], [0], [dnl
+Table: Variables
+Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
+id,1,,Scale,Input,8,Right,F2.0,F2.0,
+name,2,,Nominal,Input,20,Left,A20,A20,
File label: This is the file label
id,name
34,frederick @&t@
-Variable,Description,,Position
-id,Format: F2.0,,1
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-name,Format: A20,,2
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 20,,
+Table: Variables
+Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
+id,1,,Scale,Input,8,Right,F2.0,F2.0,
+name,2,,Nominal,Input,20,Left,A20,A20,
File label: This is the file label
$sysfile->close ();
]])
-AT_CHECK([RUN_PERL_MODULE test.pl])
+AT_CHECK([RUN_PERL_MODULE test.pl], [0], [], [stderr])
+cat stderr
AT_DATA([dump-dict.sps],
[GET FILE='testfile.sav'.
DISPLAY DICTIONARY.
])
-AT_CHECK([pspp -O format=csv dump-dict.sps], [0],
- [Variable,Description,,Position
-integer,My Integer,,1
-,Format: F8.0,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-,Missing Values: 9; 99,,
-,0,Zero,
-,1,Unity,
-,2,Duality,
-string,My String,,2
-,Format: A8,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-,"Missing Values: ""this ""; ""that """,,
-,xx ,foo,
-,yy ,bar,
-longstring,My Long String,,3
-,Format: A9,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 9,,
-,xxx ,xfoo,
+AT_CHECK([pspp -O format=csv dump-dict.sps], [0], [dnl
+Table: Variables
+Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
+integer,1,My Integer,Scale,Input,8,Right,F8.0,F8.0,9; 99
+string,2,My String,Nominal,Input,8,Left,A8,A8,"""this ""; ""that """
+longstring,3,My Long String,Nominal,Input,9,Left,A9,A9,
+
+Table: Value Labels
+Variable,Value,Label
+integer,0,Zero
+,1,Unity
+,2,Duality
+string,xx ,foo
+,yy ,bar
+longstring,xxx ,xfoo
])
AT_CLEANUP
my $vl = $var->get_value_labels ();
print "Value Labels:\n";
- print "$_ => $vl->{$_}\n" for keys %$vl;
+ print "$_ => $vl->{$_}\n" for sort (keys %$vl);
}
while (my @c = $sf->get_next_case () )
AT_CHECK([RUN_PERL_MODULE test.pl], [0],
[Variable 0 is "string", label is "A Short String Variable"
Value Labels:
-3333 => threes
1111 => ones
2222 => twos
+3333 => threes
Variable 1 is "longstring", label is "A Long String Variable"
Value Labels:
Variable 2 is "numeric", label is "A Numeric Variable"
Value Labels:
1 => Unity
-3 => Thripality
2 => Duality
+3 => Thripality
Variable 3 is "date", label is "A Date Variable"
Value Labels:
Variable 4 is "dollar", label is "A Dollar Variable"
AT_DATA([dump-dicts.sps],
[GET FILE='sample.sav'.
DISPLAY DICTIONARY.
+DISPLAY ATTRIBUTES
LIST.
GET FILE='copy.sav'.
DISPLAY DICTIONARY.
+DISPLAY ATTRIBUTES
LIST.
])
AT_CHECK([pspp -O format=csv dump-dicts.sps], [0],
- [[Variable,Description,,Position
-string,A Short String Variable,,1
-,Format: A8,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-,"Missing Values: ""3333 """,,
-,1111 ,ones,
-,2222 ,twos,
-,3333 ,threes,
-longstring,A Long String Variable,,2
-,Format: A12,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 12,,
-numeric,A Numeric Variable,,3
-,Format: F10.0,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-,Missing Values: 9; 5; 999,,
-,1,Unity,
-,2,Duality,
-,3,Thripality,
-,Custom attributes:,,
-,size,large,
-,nationality,foreign,
-,colour[1],blue,
-,colour[2],pink,
-,colour[3],violet,
-date,A Date Variable,,4
-,Format: DATE11,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-dollar,A Dollar Variable,,5
-,Format: DOLLAR11.2,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-datetime,A Datetime Variable,,6
-,Format: DATETIME17.0,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
+ [[Table: Variables
+Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
+string,1,A Short String Variable,Nominal,Input,8,Left,A8,A8,"""3333 """
+longstring,2,A Long String Variable,Nominal,Input,12,Left,A12,A12,
+numeric,3,A Numeric Variable,Scale,Input,8,Right,F10.0,F10.0,9; 5; 999
+date,4,A Date Variable,Scale,Input,8,Right,DATE11,DATE11,
+dollar,5,A Dollar Variable,Scale,Input,8,Right,DOLLAR11.2,DOLLAR11.2,
+datetime,6,A Datetime Variable,Scale,Input,8,Right,DATETIME17.0,DATETIME17.0,
+
+Table: Value Labels
+Variable,Value,Label
+string,1111 ,ones
+,2222 ,twos
+,3333 ,threes
+numeric,1,Unity
+,2,Duality
+,3,Thripality
+
+Table: Variable and Dataset Attributes
+Variable,Name,Value
+numeric,colour[1],blue
+,colour[2],pink
+,colour[3],violet
+,nationality,foreign
+,size,large
Table: Data List
string,longstring,numeric,date,dollar,datetime
. ,. ,.,.,. ,.
5555 ,Five ,5,05-MAY-2005,$5.00,05-MAY-2005 05:05
-Variable,Description,,Position
-string,A Short String Variable,,1
-,Format: A8,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 8,,
-,"Missing Values: ""3333 """,,
-,1111 ,ones,
-,2222 ,twos,
-,3333 ,threes,
-longstring,A Long String Variable,,2
-,Format: A12,,
-,Measure: Nominal,,
-,Display Alignment: Left,,
-,Display Width: 12,,
-numeric,A Numeric Variable,,3
-,Format: F10.0,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-,Missing Values: 9; 5; 999,,
-,1,Unity,
-,2,Duality,
-,3,Thripality,
-,Custom attributes:,,
-,size,large,
-,nationality,foreign,
-,colour[1],blue,
-,colour[2],pink,
-,colour[3],violet,
-date,A Date Variable,,4
-,Format: DATE11,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-dollar,A Dollar Variable,,5
-,Format: DOLLAR11.2,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
-datetime,A Datetime Variable,,6
-,Format: DATETIME17.0,,
-,Measure: Scale,,
-,Display Alignment: Right,,
-,Display Width: 8,,
+Table: Variables
+Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
+string,1,A Short String Variable,Nominal,Input,8,Left,A8,A8,"""3333 """
+longstring,2,A Long String Variable,Nominal,Input,12,Left,A12,A12,
+numeric,3,A Numeric Variable,Scale,Input,8,Right,F10.0,F10.0,9; 5; 999
+date,4,A Date Variable,Scale,Input,8,Right,DATE11,DATE11,
+dollar,5,A Dollar Variable,Scale,Input,8,Right,DOLLAR11.2,DOLLAR11.2,
+datetime,6,A Datetime Variable,Scale,Input,8,Right,DATETIME17.0,DATETIME17.0,
+
+Table: Value Labels
+Variable,Value,Label
+string,1111 ,ones
+,2222 ,twos
+,3333 ,threes
+numeric,1,Unity
+,2,Duality
+,3,Thripality
+
+Table: Variable and Dataset Attributes
+Variable,Name,Value
+numeric,colour[1],blue
+,colour[2],pink
+,colour[3],violet
+,nationality,foreign
+,size,large
Table: Data List
string,longstring,numeric,date,dollar,datetime
print $PSPP::errstr, "\n";
]])
AT_CHECK([RUN_PERL_MODULE test.pl], [0],
- [[Error opening `no-such-file.sav' for reading as a system file: No such file or directory.
+ [[An error occurred while opening `no-such-file.sav': No such file or directory.
]],
[[Name "PSPP::errstr" used only once: possible typo at test.pl line 8.
]])
my $attr = $var->get_attributes ();
- foreach my $k (keys %$attr)
+ foreach my $k (sort (keys (%$attr)))
{
my $ll = $attr->{$k};
print "$k =>";
}
]])
AT_CHECK([RUN_PERL_MODULE test.pl], [0],
- [[colour =>blue, pink, violet
+ [[$@Role =>0
+colour =>blue, pink, violet
nationality =>foreign
size =>large
]])
# Skip this test if Perl's Text::Diff module is not installed.
AT_CHECK([perl -MText::Diff -e '' || exit 77])
AT_CHECK([RUN_PERL_MODULE $abs_top_builddir/perl-module/t/Pspp.t], [0],
- [[1..36
+ [[1..37
ok 1 - use PSPP;
ok 2 - Dictionary Creation
ok 3
ok 34 - Missing Value Positive SYS
ok 35 - Missing Value Positive Num
ok 36 - Custom Attributes
-]],
- [[# @&t@
-# @@ -0,0 +1 @@
-# +
-# @@ -0,0 +1 @@
-# +
-# @@ -0,0 +1 @@
-# +
-# @@ -0,0 +1 @@
-# +
-]])
+ok 37 - Case count
+]],[ignore])
AT_CLEANUP