X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=perl-module%2Ft%2FPspp.t;h=c31458dbe1f350e193ea27c07e3c865e541a4ce6;hb=d6510c8bb92e55331288bd7066e4697ca3cc9348;hp=4f65a4b5b2838e1322b6f12dea65bd1a85d60a6d;hpb=dfd1972f7bcb550a4fc3b05dbe7e71d12334b0a7;p=pspp
diff --git a/perl-module/t/Pspp.t b/perl-module/t/Pspp.t
index 4f65a4b5b2..c31458dbe1 100644
--- a/perl-module/t/Pspp.t
+++ b/perl-module/t/Pspp.t
@@ -1,4 +1,21 @@
-# -*-perl-*-
+## -*-perl-*-
+
+## PSPP - a program for statistical analysis.
+## Copyright (C) 2019 Free Software Foundation, Inc.
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program. If not, see .
+
# Before `make install' is performed this script should be runnable
# with `make test' as long as libpspp-core-$VERSION.so is in
# LD_LIBRARY_PATH. After `make install' it should work as `perl
@@ -8,7 +25,7 @@
# change 'tests => 1' to 'tests => last_test_to_print';
-use Test::More tests => 36;
+use Test::More tests => 37;
use Text::Diff;
use File::Temp qw/ tempfile tempdir /;
BEGIN { use_ok('PSPP') };
@@ -40,7 +57,7 @@ sub run_pspp_syntax
print FH "$syntax";
close (FH);
- system ("cd $tempdir; $pspp_cmd --testing-mode $syntaxfile");
+ system ("cd $tempdir; $pspp_cmd -o pspp.csv $syntaxfile");
}
sub run_pspp_syntax_cmp
@@ -72,7 +89,7 @@ sub run_pspp_syntax_cmp
ok ($d->get_var_cnt () == 0);
$d->set_label ("My Dictionary");
- $d->set_documents ("These Documents");
+ $d->add_document ("These Documents");
# Tests for variable creation
@@ -88,8 +105,8 @@ sub run_pspp_syntax_cmp
ok (!ref $var1, "Trap duplicate variable name");
ok ($d->get_var_cnt () == 1);
- $var1 = PSPP::Var->new ($d, "money",
- (fmt=>PSPP::Fmt::DOLLAR,
+ $var1 = PSPP::Var->new ($d, "money",
+ (fmt=>PSPP::Fmt::DOLLAR,
width=>4, decimals=>2) );
ok (ref $var1, "Accept valid format");
ok ($d->get_var_cnt () == 2);
@@ -117,20 +134,20 @@ sub run_pspp_syntax_cmp
my $d = PSPP::Dict->new();
PSPP::Var->new ($d, "id",
(
- fmt=>PSPP::Fmt::F,
- width=>2,
+ fmt=>PSPP::Fmt::F,
+ width=>2,
decimals=>0
)
);
PSPP::Var->new ($d, "name",
(
- fmt=>PSPP::Fmt::A,
- width=>20,
+ fmt=>PSPP::Fmt::A,
+ width=>20,
)
);
- $d->set_documents ("This should not appear");
+ $d->add_document ("This should not appear");
$d->clear_documents ();
$d->add_document ("This is a document line");
@@ -162,8 +179,8 @@ sub run_pspp_syntax_cmp
my $res = $sysfile->append_case ( [21, "wheelbarrow"]);
ok ($res, "Append Case 2");
- # Don't close. We want to test that the destructor does that
- # automatically
+ # Don't close. We want to test that the destructor does that
+ # automatically
}
ok (-s "$tempfile", "existance2");
@@ -175,53 +192,46 @@ sub run_pspp_syntax_cmp
DISPLAY DOCUMENTS.
LIST.
SYNTAX
-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,,
-
-File label:
-
-This is the file label
+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,
-Documents in the active file:
+Table: File Label
+Label,This is the file label
+Table: Documents
This is a document line
Table: Data List
id,name
-21,wheelbarrow
+21,wheelbarrow
RESULT
}
- # Now do some tests to make sure all the variable parameters
+ # Now do some tests to make sure all the variable parameters
# can be written properly.
{
my $tempdir = tempdir( CLEANUP => 1 );
- my $tempfile = "$tempdir/testfile.sav";
+ my $tempfile = "$tempdir/testfile.sav";
my $dict = PSPP::Dict->new();
ok (ref $dict, "Dictionary Creation 2");
- my $int = PSPP::Var->new ($dict, "integer",
+ my $int = PSPP::Var->new ($dict, "integer",
(width=>8, decimals=>0) );
$int->set_label ("My Integer");
-
+
$int->add_value_label (99, "Silly");
$int->clear_value_labels ();
$int->add_value_label (0, "Zero");
$int->add_value_label (1, "Unity");
$int->add_value_label (2, "Duality");
- my $str = PSPP::Var->new ($dict, "string",
+ my $str = PSPP::Var->new ($dict, "string",
(fmt=>PSPP::Fmt::A, width=>8) );
@@ -232,7 +242,7 @@ RESULT
$str->set_missing_values ("this", "that");
- my $longstr = PSPP::Var->new ($dict, "longstring",
+ my $longstr = PSPP::Var->new ($dict, "longstring",
(fmt=>PSPP::Fmt::A, width=>9) );
@@ -251,37 +261,27 @@ RESULT
GET FILE='$tempfile'.
DISPLAY DICTIONARY.
SYNTAX
-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,
+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
+My Integer,0,Zero
+,1,Unity
+,2,Duality
+My String,xx,foo
+,yy,bar
+My Long String,xxx,xfoo
RESULT
}
}
-sub generate_sav_file
+sub generate_sav_file
{
my $filename = shift;
my $tempdir = shift;
@@ -292,7 +292,7 @@ begin data.
1111 One 1 1/1/1 1 1/1/1+01:01
2222 Two 2 2/2/2 2 2/2/2+02:02
3333 Three 3 3/3/3 3 3/3/3+03:03
-. . . . .
+. . . . . .
5555 Five 5 5/5/5 5 5/5/5+05:05
end data.
@@ -339,8 +339,8 @@ RESULT
PSPP::Var->new ($d, "id",
(
- fmt=>PSPP::Fmt::F,
- width=>2,
+ fmt=>PSPP::Fmt::F,
+ width=>2,
decimals=>0
)
);
@@ -372,11 +372,11 @@ RESULT
my $label = $var->get_label ();
print MYFILE "Variable $v is \"$name\", label is \"$label\"\n";
-
+
my $vl = $var->get_value_labels ();
print MYFILE "Value Labels:\n";
- print MYFILE "$_ => $vl->{$_}\n" for keys %$vl;
+ print MYFILE "$_ => $vl->{$_}\n" for (sort keys %$vl);
}
while (my @c = $sf->get_next_case () )
@@ -393,16 +393,16 @@ RESULT
ok (compare ("$tempdir/out.txt", < 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"
@@ -486,7 +486,7 @@ SYNTAX
list.
SYNTAX
-
+
ok (! diff ("$tempdir/pspp.csv", "$tempdir/in.txt"), "Streaming of files");
}
@@ -533,12 +533,12 @@ SYNTAX
ok ( !ref $sf, "Returns undef on opening failure");
- ok ("$PSPP::errstr" eq "Error opening \"$tempdir/no-such-file.sav\" for reading as a system file: No such file or directory.",
+ ok ("$PSPP::errstr" eq "An error occurred while opening `$tempdir/no-such-file.sav': No such file or directory.",
"Error string on open failure");
}
-# Missing value tests.
+# Missing value tests.
{
my $tempdir = tempdir( CLEANUP => 1 );
@@ -561,17 +561,17 @@ SYNTAX
ok ( !PSPP::value_is_missing ($val, $numericvar), "Missing Value Negative Num");
- @c = $sf->get_next_case ();
- @c = $sf->get_next_case ();
+ @c = $sf->get_next_case ();
+ @c = $sf->get_next_case ();
$val = $c[0];
ok ( PSPP::value_is_missing ($val, $stringvar), "Missing Value Positive");
- @c = $sf->get_next_case ();
+ @c = $sf->get_next_case ();
$val = $c[2];
ok ( PSPP::value_is_missing ($val, $numericvar), "Missing Value Positive SYS");
- @c = $sf->get_next_case ();
+ @c = $sf->get_next_case ();
$val = $c[2];
ok ( PSPP::value_is_missing ($val, $numericvar), "Missing Value Positive Num");
}
@@ -593,7 +593,7 @@ SYNTAX
open (MYFILE, ">$tempdir/out.txt");
- foreach $k (keys %$attr)
+ foreach $k (sort (keys (%$attr)))
{
my $ll = $attr->{$k};
print MYFILE "$k =>";
@@ -602,10 +602,24 @@ SYNTAX
close (MYFILE);
- ok (compare ("$tempdir/out.txt", <0
colour =>blue, pink, violet
nationality =>foreign
size =>large
EOF
+}
+
+
+# Test of the get_case_cnt function
+{
+ my $tempdir = tempdir( CLEANUP => 1 );
+
+ generate_sav_file ("$tempdir/in.sav", "$tempdir");
+
+ my $sf = PSPP::Reader->open ("$tempdir/in.sav");
+
+ my $n = $sf->get_case_cnt ();
+ ok ($n == 5, "Case count");
}