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