lexer: Reimplement for better testability and internationalization.
[pspp-builds.git] / perl-module / t / Pspp.t
index 030a342aecb38048922a815b10e97e8997777c86..a1ff5051a66fdde6d3d677009c99a06dcb8c7103 100644 (file)
@@ -1,12 +1,14 @@
 # -*-perl-*-
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl PSPP.t'
+# 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
+# PSPP.t'
 
 #########################
 
 # change 'tests => 1' to 'tests => last_test_to_print';
 
-use Test::More tests => 32;
+use Test::More tests => 36;
 use Text::Diff;
 use File::Temp qw/ tempfile tempdir /;
 BEGIN { use_ok('PSPP') };
@@ -38,7 +40,7 @@ sub run_pspp_syntax
     print FH "$syntax";
     close (FH);
 
-    system ("cd $tempdir; $pspp_cmd -o raw-ascii $syntaxfile");
+    system ("cd $tempdir; $pspp_cmd -o pspp.csv $syntaxfile");
 }
 
 sub run_pspp_syntax_cmp
@@ -50,7 +52,7 @@ sub run_pspp_syntax_cmp
 
     run_pspp_syntax ($tempdir, $syntax);
 
-    my $diff =  diff ("$tempdir/pspp.list", \$result);
+    my $diff =  diff ("$tempdir/pspp.csv", \$result);
 
     if ( ! ($diff eq ""))
     {
@@ -67,25 +69,30 @@ sub run_pspp_syntax_cmp
 {
   my $d = PSPP::Dict->new();
   ok (ref $d, "Dictionary Creation");
+  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
 
   my $var0 = PSPP::Var->new ($d, "le");
   ok (!ref $var0, "Trap illegal variable name");
+  ok ($d->get_var_cnt () == 0);
 
   $var0 = PSPP::Var->new ($d, "legal");
   ok (ref $var0, "Accept legal variable name");
+  ok ($d->get_var_cnt () == 1);
 
   my $var1 = PSPP::Var->new ($d, "legal");
   ok (!ref $var1, "Trap duplicate variable name");
+  ok ($d->get_var_cnt () == 1);
 
   $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);
 
   $d->set_weight ($var1);
 
@@ -123,7 +130,7 @@ sub run_pspp_syntax_cmp
                          )
                         );
 
-  $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");
 
@@ -168,32 +175,27 @@ sub run_pspp_syntax_cmp
        DISPLAY DOCUMENTS.
        LIST.
 SYNTAX
-1.1 DISPLAY.  
-+--------+-------------------------------------------+--------+
-|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                          |        |
-+--------+-------------------------------------------+--------+
+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
 
 Documents in the active file:
 
 This is a document line
 
-id                 name
--- --------------------
-21 wheelbarrow          
-
+Table: Data List
+id,name
+21,wheelbarrow         
 RESULT
 
 
@@ -236,9 +238,7 @@ RESULT
 
       $longstr->set_label ("My Long String");
       my $re = $longstr->add_value_label ("xxx", "xfoo");
-      ok (($re == 0), "Long strings cant have labels");
-
-      ok ($PSPP::errstr eq "Cannot add label to a long string variable", "Error msg");
+      ok ($re, "Value label for long string");
 
       $int->set_missing_values (9, 99);
 
@@ -251,38 +251,30 @@ RESULT
 GET FILE='$tempfile'.
 DISPLAY DICTIONARY.
 SYNTAX
-1.1 DISPLAY.  
-+----------+-----------------------------------------+--------+
-|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                         |        |
-+----------+-----------------------------------------+--------+
-
+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,
 RESULT
 
   }
@@ -300,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.
 
@@ -486,7 +478,7 @@ EOF
 
 SYNTAX
 
- system ("cp $tempdir/pspp.list $tempdir/in.txt");
+ system ("cp $tempdir/pspp.csv $tempdir/in.txt");
 
  run_pspp_syntax ($tempdir, <<SYNTAX);
  get file='$tempdir/out.sav'.
@@ -495,7 +487,7 @@ SYNTAX
 
 SYNTAX
  
- ok (! diff ("$tempdir/pspp.list", "$tempdir/in.txt"), "Streaming of files");
+ ok (! diff ("$tempdir/pspp.csv", "$tempdir/in.txt"), "Streaming of files");
 }
 
 
@@ -541,7 +533,7 @@ 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 "Error opening `$tempdir/no-such-file.sav' for reading as a system file: No such file or directory.",
       "Error string on open failure");
 }