cbe2a0dd33175ef9aa4b30dcf00f94bb2ebfa65e
[pspp] / tests / perl-module.at
1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
3 dnl 
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
8 dnl 
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 dnl GNU General Public License for more details.
13 dnl 
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 dnl
17 AT_BANNER([Perl module tests])
18
19 dnl This command can be used to run with the PSPP Perl module after it has been
20 dnl built (with "make") but before it has been installed.  The -I options are
21 dnl equivalent to "use ExtUtils::testlib;" inside the Perl program, but it does
22 dnl not need to be run with the perl-module build directory as the current
23 dnl working directory.
24 dnl
25 dnl XXX "libtool --mode=execute" is probably better than setting
26 dnl LD_LIBRARY_PATH.
27 m4_define([RUN_PERL_MODULE],
28   [LD_LIBRARY_PATH=$abs_top_builddir/src/.libs \
29    LD_PRELOAD=/usr/lib/i386-linux-gnu/libasan.so.4 \
30    DYLD_LIBRARY_PATH=$abs_top_builddir/src/.libs \
31    $PERL -I$abs_top_builddir/perl-module/blib/arch \
32          -I$abs_top_builddir/perl-module/blib/lib])
33
34 AT_SETUP([Perl create system file])
35 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
36 AT_DATA([test.pl],
37   [use warnings;
38    use strict;
39    use PSPP;
40
41    my $d = PSPP::Dict->new();
42    die "dictionary creation" if !ref $d;
43    die if $d->get_var_cnt () != 0;
44
45    $d->set_label ("My Dictionary");
46    $d->set_documents ("These Documents");
47
48    # Tests for variable creation
49
50    my $var0 = PSPP::Var->new ($d, "le");
51    die "trap illegal variable name" if ref $var0;
52    die if $d->get_var_cnt () != 0;
53
54    $var0 = PSPP::Var->new ($d, "legal");
55    die "accept legal variable name" if !ref $var0;
56    die if $d->get_var_cnt () != 1;
57
58    my $var1 = PSPP::Var->new ($d, "money", 
59                               (fmt=>PSPP::Fmt::DOLLAR,
60                                width=>4, decimals=>2) );
61    die "cappet valid format" if !ref $var1;
62    die if $d->get_var_cnt () != 2;
63
64    $d->set_weight ($var1);
65
66    my $sysfile = PSPP::Sysfile->new ('testfile.sav', $d);
67    die "create sysfile object" if !ref $sysfile;
68
69    $sysfile->close ();
70 ])
71 AT_CHECK([RUN_PERL_MODULE test.pl])
72 AT_DATA([dump-dict.sps],
73   [GET FILE='testfile.sav'.
74 DISPLAY FILE LABEL.
75 DISPLAY DOCUMENTS.
76 DISPLAY DICTIONARY.
77 SHOW WEIGHT.
78 ])
79 AT_CHECK([pspp -O format=csv dump-dict.sps], [0], [dnl
80 Table: File Label
81 Label,My Dictionary
82
83 Table: Documents
84 These Documents
85
86 Table: Variables
87 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
88 legal,1,,Scale,Input,8,Right,F9.2,F9.2,
89 money,2,,Scale,Input,8,Right,DOLLAR6.2,DOLLAR6.2,
90
91 dump-dict.sps:5: note: SHOW: WEIGHT is money.
92 ])
93 AT_CLEANUP
94
95 AT_SETUP([Perl writing cases to system files])
96 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
97 AT_DATA([test.pl],
98   [[use warnings;
99     use strict;
100     use PSPP;
101
102     my $d = PSPP::Dict->new();
103     PSPP::Var->new ($d, "id",
104                     (
105                      fmt=>PSPP::Fmt::F, 
106                      width=>2, 
107                      decimals=>0
108                      )
109                     );
110
111     PSPP::Var->new ($d, "name",
112                            (
113                             fmt=>PSPP::Fmt::A, 
114                             width=>20, 
115                             )
116                            );
117
118     $d->set_documents ("This should not appear");
119     $d->clear_documents ();
120     $d->add_document ("This is a document line");
121
122     $d->set_label ("This is the file label");
123
124     # Check that we can write cases to system files.
125     my $sysfile = PSPP::Sysfile->new ("testfile.sav", $d);
126     my $res = $sysfile->append_case ( [34, "frederick"]);
127     die "append case" if !$res;
128
129     $res = $sysfile->append_case ( [34, "frederick", "extra"]);
130     die "append case with too many variables" if $res;
131     $sysfile->close ();
132
133     # Check that sysfiles are closed properly automaticallly in the destructor.
134     my $sysfile2 = PSPP::Sysfile->new ("testfile2.sav", $d);
135     $res = $sysfile2->append_case ( [21, "wheelbarrow"]);
136     die "append case 2" if !$res;
137
138     $res = $sysfile->append_case ( [34, "frederick", "extra"]);
139     die "append case with too many variables" if $res;
140
141     # Don't close.  We want to test that the destructor does that.
142 ]])
143 AT_CHECK([RUN_PERL_MODULE test.pl])
144 AT_DATA([dump-dicts.sps],
145   [GET FILE='testfile.sav'.
146 DISPLAY DICTIONARY.
147 DISPLAY FILE LABEL.
148 DISPLAY DOCUMENTS.
149 LIST.
150
151 GET FILE='testfile2.sav'.
152 DISPLAY DICTIONARY.
153 DISPLAY FILE LABEL.
154 DISPLAY DOCUMENTS.
155 LIST.
156 ])
157 AT_CHECK([pspp -O format=csv dump-dicts.sps], [0], [dnl
158 Table: Variables
159 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
160 id,1,,Scale,Input,8,Right,F2.0,F2.0,
161 name,2,,Nominal,Input,20,Left,A20,A20,
162
163 Table: File Label
164 Label,This is the file label
165
166 Table: Documents
167 This is a document line
168
169 Table: Data List
170 id,name
171 34,frederick
172
173 Table: Variables
174 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
175 id,1,,Scale,Input,8,Right,F2.0,F2.0,
176 name,2,,Nominal,Input,20,Left,A20,A20,
177
178 Table: File Label
179 Label,This is the file label
180
181 Table: Documents
182 This is a document line
183
184 Table: Data List
185 id,name
186 21,wheelbarrow
187 ])
188 AT_CLEANUP
189
190 AT_SETUP([Perl write variable parameters])
191 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
192 AT_DATA([test.pl],
193   [[use warnings;
194     use strict;
195     use PSPP;
196
197     my $dict = PSPP::Dict->new();
198     die "dictionary creation" if !ref $dict;
199
200     my $int = PSPP::Var->new ($dict, "integer", 
201                               (width=>8, decimals=>0) );
202
203     $int->set_label ("My Integer");
204
205     $int->add_value_label (99, "Silly");
206     $int->clear_value_labels ();
207     $int->add_value_label (0, "Zero");
208     $int->add_value_label (1, "Unity");
209     $int->add_value_label (2, "Duality");
210
211     my $str = PSPP::Var->new ($dict, "string", 
212                               (fmt=>PSPP::Fmt::A, width=>8) );
213
214
215     $str->set_label ("My String");
216     $str->add_value_label ("xx", "foo");
217     $str->add_value_label ("yy", "bar");
218
219     $str->set_missing_values ("this", "that");
220
221     my $longstr = PSPP::Var->new ($dict, "longstring", 
222                               (fmt=>PSPP::Fmt::A, width=>9) );
223
224
225     $longstr->set_label ("My Long String");
226     my $re = $longstr->add_value_label ("xxx", "xfoo");
227
228     $int->set_missing_values (9, 99);
229
230     my $sysfile = PSPP::Sysfile->new ("testfile.sav", $dict);
231
232
233     $sysfile->close ();
234 ]])
235 AT_CHECK([RUN_PERL_MODULE test.pl], [0], [], [stderr])
236 cat stderr
237 AT_DATA([dump-dict.sps],
238   [GET FILE='testfile.sav'.
239 DISPLAY DICTIONARY.
240 ])
241 AT_CHECK([pspp -O format=csv dump-dict.sps], [0], [dnl
242 Table: Variables
243 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
244 integer,1,My Integer,Scale,Input,8,Right,F8.0,F8.0,9; 99
245 string,2,My String,Nominal,Input,8,Left,A8,A8,"""this    ""; ""that    """
246 longstring,3,My Long String,Nominal,Input,9,Left,A9,A9,
247
248 Table: Value Labels
249 Variable Value,,Label
250 My Integer,0,Zero
251 ,1,Unity
252 ,2,Duality
253 My String,xx,foo
254 ,yy,bar
255 My Long String,xxx,xfoo
256 ])
257 AT_CLEANUP
258
259 AT_SETUP([Perl dictionary survives system file])
260 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
261 AT_DATA([test.pl],
262   [[use warnings;
263 use strict;
264 use PSPP;
265
266 my $sysfile ;
267
268     {
269         my $d = PSPP::Dict->new();
270
271         PSPP::Var->new ($d, "id",
272                         (
273                          fmt=>PSPP::Fmt::F, 
274                          width=>2, 
275                          decimals=>0
276                          )
277                         );
278
279         $sysfile = PSPP::Sysfile->new ("testfile.sav", $d);
280     }
281
282     my $res = $sysfile->append_case ([3]);
283     print "Dictionary survives sysfile\n" if $res;
284 ]])
285 AT_CHECK([RUN_PERL_MODULE test.pl], [0],
286   [Dictionary survives sysfile
287 ])
288 AT_CLEANUP
289
290 m4_define([PERL_GENERATE_SYSFILE],
291   [AT_DATA([sample.sps],
292     [[data list notable list /string (a8) longstring (a12) numeric (f10) date (date11) dollar (dollar8.2) datetime (datetime17)
293 begin data.
294 1111 One   1 1/1/1 1   1/1/1+01:01
295 2222 Two   2 2/2/2 2   2/2/2+02:02
296 3333 Three 3 3/3/3 3   3/3/3+03:03
297 .    .     . .     .   .
298 5555 Five  5 5/5/5 5   5/5/5+05:05
299 end data.
300
301
302 variable labels string 'A Short String Variable'
303   /longstring 'A Long String Variable'
304   /numeric 'A Numeric Variable'
305   /date 'A Date Variable'
306   /dollar 'A Dollar Variable'
307   /datetime 'A Datetime Variable'.
308
309
310 missing values numeric (9, 5, 999).
311
312 missing values string ("3333").
313
314 add value labels
315   /string '1111' 'ones' '2222' 'twos' '3333' 'threes'
316   /numeric 1 'Unity' 2 'Duality' 3 'Thripality'.
317
318 variable attribute
319     variables = numeric
320     attribute=colour[1]('blue') colour[2]('pink') colour[3]('violet')
321     attribute=size('large') nationality('foreign').
322
323
324 save outfile='sample.sav'.
325 ]])
326    AT_CHECK([pspp -O format=csv sample.sps])])
327
328 AT_SETUP([Perl read system file])
329 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
330 PERL_GENERATE_SYSFILE
331 AT_DATA([test.pl],
332   [[use warnings;
333     use strict;
334     use PSPP;
335
336     my $sf = PSPP::Reader->open ("sample.sav");
337
338     my $dict = $sf->get_dict ();
339
340     for (my $v = 0 ; $v < $dict->get_var_cnt() ; $v++)
341     {
342        my $var = $dict->get_var ($v);
343        my $name = $var->get_name ();
344        my $label = $var->get_label ();
345
346        print "Variable $v is \"$name\", label is \"$label\"\n";
347
348        my $vl = $var->get_value_labels ();
349
350        print "Value Labels:\n";
351        print "$_ => $vl->{$_}\n" for sort (keys %$vl);
352     }
353
354     while (my @c = $sf->get_next_case () )
355     {
356        for (my $v = 0; $v < $dict->get_var_cnt(); $v++)
357        {
358            print "val$v: \"$c[$v]\"\n";
359        }
360        print "\n";
361     }
362 ]])
363 AT_CHECK([RUN_PERL_MODULE test.pl], [0],
364   [Variable 0 is "string", label is "A Short String Variable"
365 Value Labels:
366 1111     => ones
367 2222     => twos
368 3333     => threes
369 Variable 1 is "longstring", label is "A Long String Variable"
370 Value Labels:
371 Variable 2 is "numeric", label is "A Numeric Variable"
372 Value Labels:
373 1 => Unity
374 2 => Duality
375 3 => Thripality
376 Variable 3 is "date", label is "A Date Variable"
377 Value Labels:
378 Variable 4 is "dollar", label is "A Dollar Variable"
379 Value Labels:
380 Variable 5 is "datetime", label is "A Datetime Variable"
381 Value Labels:
382 val0: "1111    "
383 val1: "One         "
384 val2: "1"
385 val3: "13197686400"
386 val4: "1"
387 val5: "13197690060"
388
389 val0: "2222    "
390 val1: "Two         "
391 val2: "2"
392 val3: "13231987200"
393 val4: "2"
394 val5: "13231994520"
395
396 val0: "3333    "
397 val1: "Three       "
398 val2: "3"
399 val3: "13266028800"
400 val4: "3"
401 val5: "13266039780"
402
403 val0: ".       "
404 val1: ".           "
405 val2: ""
406 val3: ""
407 val4: ""
408 val5: ""
409
410 val0: "5555    "
411 val1: "Five        "
412 val2: "5"
413 val3: "13334630400"
414 val4: "5"
415 val5: "13334648700"
416
417 ])
418 AT_CLEANUP
419
420 AT_SETUP([Perl copying system files])
421 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
422 PERL_GENERATE_SYSFILE
423 AT_DATA([test.pl],
424   [[use warnings;
425     use strict;
426     use PSPP;
427
428     my $input = PSPP::Reader->open ("sample.sav");
429
430     my $dict = $input->get_dict ();
431
432     my $output = PSPP::Sysfile->new ("copy.sav", $dict);
433
434     while (my (@c) = $input->get_next_case () )
435     {
436       $output->append_case (\@c);
437     }
438
439     $output->close ();
440 ]])
441 AT_CHECK([RUN_PERL_MODULE test.pl])
442 AT_DATA([dump-dicts.sps],
443   [GET FILE='sample.sav'.
444 DISPLAY DICTIONARY.
445 DISPLAY ATTRIBUTES
446 LIST.
447
448 GET FILE='copy.sav'.
449 DISPLAY DICTIONARY.
450 DISPLAY ATTRIBUTES
451 LIST.
452 ])
453 AT_CHECK([pspp -O format=csv dump-dicts.sps], [0],
454   [[Table: Variables
455 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
456 string,1,A Short String Variable,Nominal,Input,8,Left,A8,A8,"""3333    """
457 longstring,2,A Long String Variable,Nominal,Input,12,Left,A12,A12,
458 numeric,3,A Numeric Variable,Scale,Input,8,Right,F10.0,F10.0,9; 5; 999
459 date,4,A Date Variable,Scale,Input,8,Right,DATE11,DATE11,
460 dollar,5,A Dollar Variable,Scale,Input,8,Right,DOLLAR11.2,DOLLAR11.2,
461 datetime,6,A Datetime Variable,Scale,Input,8,Right,DATETIME17.0,DATETIME17.0,
462
463 Table: Value Labels
464 Variable Value,,Label
465 A Short String Variable,1111,ones
466 ,2222,twos
467 ,3333[a],threes
468 A Numeric Variable,1,Unity
469 ,2,Duality
470 ,3,Thripality
471
472 Footnotes:
473 a,User-missing value
474
475 Table: Variable and Dataset Attributes
476 Variable and Name,,Value
477 A Numeric Variable,colour[1],blue
478 ,colour[2],pink
479 ,colour[3],violet
480 ,nationality,foreign
481 ,size,large
482
483 Table: Data List
484 string,longstring,numeric,date,dollar,datetime
485 1111,One,1,01-JAN-2001,$1.00,01-JAN-2001 01:01
486 2222,Two,2,02-FEB-2002,$2.00,02-FEB-2002 02:02
487 3333,Three,3,03-MAR-2003,$3.00,03-MAR-2003 03:03
488 .,.,.,.,.  ,.
489 5555,Five,5,05-MAY-2005,$5.00,05-MAY-2005 05:05
490
491 Table: Variables
492 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
493 string,1,A Short String Variable,Nominal,Input,8,Left,A8,A8,"""3333    """
494 longstring,2,A Long String Variable,Nominal,Input,12,Left,A12,A12,
495 numeric,3,A Numeric Variable,Scale,Input,8,Right,F10.0,F10.0,9; 5; 999
496 date,4,A Date Variable,Scale,Input,8,Right,DATE11,DATE11,
497 dollar,5,A Dollar Variable,Scale,Input,8,Right,DOLLAR11.2,DOLLAR11.2,
498 datetime,6,A Datetime Variable,Scale,Input,8,Right,DATETIME17.0,DATETIME17.0,
499
500 Table: Value Labels
501 Variable Value,,Label
502 A Short String Variable,1111,ones
503 ,2222,twos
504 ,3333[a],threes
505 A Numeric Variable,1,Unity
506 ,2,Duality
507 ,3,Thripality
508
509 Footnotes:
510 a,User-missing value
511
512 Table: Variable and Dataset Attributes
513 Variable and Name,,Value
514 A Numeric Variable,colour[1],blue
515 ,colour[2],pink
516 ,colour[3],violet
517 ,nationality,foreign
518 ,size,large
519
520 Table: Data List
521 string,longstring,numeric,date,dollar,datetime
522 1111,One,1,01-JAN-2001,$1.00,01-JAN-2001 01:01
523 2222,Two,2,02-FEB-2002,$2.00,02-FEB-2002 02:02
524 3333,Three,3,03-MAR-2003,$3.00,03-MAR-2003 03:03
525 .,.,.,.,.  ,.
526 5555,Five,5,05-MAY-2005,$5.00,05-MAY-2005 05:05
527 ]])
528 AT_CLEANUP
529
530 AT_SETUP([Perl value formatting])
531 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
532 AT_DATA([dd.sps],
533   [DATA LIST LIST /d (DATETIME17).
534 BEGIN DATA.
535 11/9/2001+08:20
536 END DATA.
537
538 SAVE OUTFILE='dd.sav'.
539 ])
540 AT_CHECK([pspp -O format=csv dd.sps], [0],
541   [Table: Reading free-form data from INLINE.
542 Variable,Format
543 d,DATETIME17.0
544 ])
545 AT_DATA([test.pl],
546   [[use warnings;
547     use strict;
548     use PSPP;
549
550     my $sf = PSPP::Reader->open ("dd.sav");
551
552     my $dict = $sf->get_dict ();
553
554     my (@c) = $sf->get_next_case ();
555
556     my $var = $dict->get_var (0);
557     my $val = $c[0];
558     my $formatted = PSPP::format_value ($val, $var);
559     my $str = gmtime ($val - PSPP::PERL_EPOCH);
560     print "Formatted string is \"$formatted\"\n";
561     print "Perl representation is \"$str\"\n";
562 ]])
563 AT_CHECK([RUN_PERL_MODULE test.pl], [0],
564   [[Formatted string is "11-SEP-2001 08:20"
565 Perl representation is "Tue Sep 11 08:20:00 2001"
566 ]])
567 AT_CLEANUP
568
569 AT_SETUP([Perl opening nonexistent file])
570 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
571 AT_DATA([test.pl],
572   [[use warnings;
573     use strict;
574     use PSPP;
575
576     my $sf = PSPP::Reader->open ("no-such-file.sav");
577
578     die "Returns undef on opening failure" if ref $sf;
579     print $PSPP::errstr, "\n";
580 ]])
581 AT_CHECK([RUN_PERL_MODULE test.pl], [0],
582   [[An error occurred while opening `no-such-file.sav': No such file or directory.
583 ]],
584   [[Name "PSPP::errstr" used only once: possible typo at test.pl line 8.
585 ]])
586 AT_CLEANUP
587
588 AT_SETUP([Perl missing values])
589 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
590 PERL_GENERATE_SYSFILE
591 AT_DATA([test.pl],
592   [[use warnings;
593     use strict;
594     use PSPP;
595
596     my $sf = PSPP::Reader->open ("sample.sav");
597
598     my $dict = $sf->get_dict ();
599
600     my (@c) = $sf->get_next_case ();
601
602     my $stringvar = $dict->get_var (0);
603     my $numericvar = $dict->get_var (2);
604     my $val = $c[0];
605
606     die "Missing Value Negative String"
607         if PSPP::value_is_missing ($val, $stringvar);
608
609     $val = $c[2];
610
611     die "Missing Value Negative Num"
612         if PSPP::value_is_missing ($val, $numericvar);
613
614     @c = $sf->get_next_case (); 
615     @c = $sf->get_next_case (); 
616
617     $val = $c[0];
618     die "Missing Value Positive"
619         if !PSPP::value_is_missing ($val, $stringvar);
620
621     @c = $sf->get_next_case (); 
622     $val = $c[2];
623     die "Missing Value Positive SYS"
624         if !PSPP::value_is_missing ($val, $numericvar);
625
626     @c = $sf->get_next_case (); 
627     $val = $c[2];
628     die "Missing Value Positive Num"
629         if !PSPP::value_is_missing ($val, $numericvar);
630 ]])
631 AT_CHECK([RUN_PERL_MODULE test.pl])
632 AT_CLEANUP
633
634 AT_SETUP([Perl custom attributes])
635 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
636 PERL_GENERATE_SYSFILE
637 AT_DATA([test.pl],
638   [[use warnings;
639     use strict;
640     use PSPP;
641
642     my $sf = PSPP::Reader->open ("sample.sav");
643
644     my $dict = $sf->get_dict ();
645
646     my $var = $dict->get_var_by_name ("numeric");
647
648     my $attr = $var->get_attributes ();
649
650     foreach my $k (sort (keys (%$attr)))
651     {
652         my $ll = $attr->{$k};
653         print "$k =>";
654         print map "$_\n", join ', ', @$ll;
655     }
656 ]])
657 AT_CHECK([RUN_PERL_MODULE test.pl], [0],
658   [[$@Role =>0
659 colour =>blue, pink, violet
660 nationality =>foreign
661 size =>large
662 ]])
663 AT_CLEANUP
664
665 AT_SETUP([Perl Pspp.t])
666 AT_SKIP_IF([test "$WITH_PERL_MODULE" = no])
667 # Skip this test if Perl's Text::Diff module is not installed.
668 AT_CHECK([perl -MText::Diff -e '' || exit 77])
669 AT_CHECK([RUN_PERL_MODULE $abs_top_builddir/perl-module/t/Pspp.t], [0],
670   [[1..37
671 ok 1 - use PSPP;
672 ok 2 - Dictionary Creation
673 ok 3
674 ok 4 - Trap illegal variable name
675 ok 5
676 ok 6 - Accept legal variable name
677 ok 7
678 ok 8 - Trap duplicate variable name
679 ok 9
680 ok 10 - Accept valid format
681 ok 11
682 ok 12 - Create sysfile object
683 ok 13 - Write system file
684 ok 14 - Append Case
685 ok 15 - Appending Case with too many variables
686 ok 16 - existance
687 ok 17 - Append Case 2
688 ok 18 - existance2
689 ok 19 - Check output
690 ok 20 - Dictionary Creation 2
691 ok 21 - Value label for short string
692 ok 22 - Value label for long string
693 ok 23 - Check output 2
694 ok 24 - Dictionary survives sysfile
695 ok 25 - Basic reader operation
696 ok 26 - Streaming of files
697 Formatted string is "11-SEP-2001 08:20"
698 ok 27 - format_value function
699 ok 28 - Perl representation of time
700 ok 29 - Returns undef on opening failure
701 ok 30 - Error string on open failure
702 ok 31 - Missing Value Negative String
703 ok 32 - Missing Value Negative Num
704 ok 33 - Missing Value Positive
705 ok 34 - Missing Value Positive SYS
706 ok 35 - Missing Value Positive Num
707 ok 36 - Custom Attributes
708 ok 37 - Case count
709 ]],[ignore])
710 AT_CLEANUP