From: Ben Pfaff Date: Fri, 15 Oct 2010 04:15:37 +0000 (-0700) Subject: data-in: Convert tests for time input formats to Autotest framework. X-Git-Tag: v0.7.6~9 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=151339dd4b016e0e98c153f51d7983477255498b;p=pspp-builds.git data-in: Convert tests for time input formats to Autotest framework. --- diff --git a/tests/automake.mk b/tests/automake.mk index 0ee684d4..30c3138d 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -10,7 +10,6 @@ TESTS_ENVIRONMENT += LC_ALL=C TESTS_ENVIRONMENT += EXEEXT=$(EXEEXT) dist_TESTS = \ - tests/formats/time-in.sh \ tests/formats/360.sh TESTS = $(dist_TESTS) $(nodist_TESTS) diff --git a/tests/data/data-in.at b/tests/data/data-in.at index 56cc0948..bfdf9ef5 100644 --- a/tests/data/data-in.at +++ b/tests/data/data-in.at @@ -185,7 +185,92 @@ sub maybe_print_space { } sub pick { - return $_[int (my_rand ($#_ + 1))]; + return $_[int (my_rand ($#_ + + 1))]; +} +EOF +} +time_in () { + data_in_prng + cat > time-in.pl << 'EOF' +#! /usr/bin/perl + +use strict; +use warnings; + +do 'my-rand.pl'; + +my ($skip, $fmt_name, @templates) = @ARGV; + +my_rand (1) foreach 1...$skip; + +my @times = (# D HH MM SS + [ 0, 0, 0, 0.00], + [ 1, 4, 50, 38.68], + [ 5, 12, 31, 35.82], + [ 0, 12, 47, 53.41], + [ 3, 1, 26, 0.69], + [ 1, 20, 58, 11.19], + [ 12, 7, 36, 5.98], + [ 52, 15, 43, 49.27], + [ 7, 4, 25, 9.24], + [ 0, 6, 49, 27.89], + [ 20, 2, 57, 52.56], + [555, 16, 45, 44.12], + [120, 21, 30, 57.27], + [ 0, 4, 25, 9.98], + [ 3, 6, 49, 27.24], + [ 5, 2, 57, 52.13], + [ 0, 16, 45, 44.35], + [ 1, 21, 30, 57.32], + [ 10, 22, 30, 4.27], + [ 22, 1, 56, 51.18]); + +open (SYNTAX, '>', "$fmt_name.sps") or die "$fmt_name.sps: create: $!\n"; +print SYNTAX "DATA LIST NOTABLE FILE='$fmt_name.data'/$fmt_name 1-40 ($fmt_name).\n"; +print SYNTAX "PRINT OUTFILE='$fmt_name.out'/$fmt_name (F16.2).\n"; +print SYNTAX "EXECUTE.\n"; +close (SYNTAX); + +my ($fn) = "$fmt_name.data"; +open (DATA, '>', $fn) or die "$fn: create: $!\n"; +select DATA; +for my $template (@templates) { + for my $time (@times) { + print_time_with_template ($time, $template) for 1...10; + } +} +close (DATA); + +sub print_time_with_template { + my ($time, $template) = @_; + my ($day, $hour, $minute, $second) = @$time; + for my $c (split ('', $template)) { + if ($c eq '+') { + print +pick ('', '-', '+'); + } elsif ($c eq 'D') { + printf (+pick ('%d', '%02d'), $day); + $day = 0; + } elsif ($c eq 'H') { + printf (+pick ('%d', '%02d'), $hour + 24 * $day); + } elsif ($c eq 'M') { + printf (+pick ('%d', '%02d'), $minute); + } elsif ($c eq 'S') { + printf (+pick ('%.0f', '%02.0f', '%.1f', '%.2f'), $second); + } elsif ($c eq ':') { + print +pick (' ', ':'); + } elsif ($c eq ' ') { + print ' '; + } else { + die; + } + } + print "\n"; +} + +sub pick { + return $_[int (my_rand ($#_ + + 1)) ]; } EOF }] @@ -2502,6 +2587,829 @@ AT_CHECK([cat datetime.out], [0], [dnl ]) AT_CLEANUP +AT_SETUP([TIME input format]) +AT_KEYWORDS([data-in]) +time_in +AT_CHECK([$PERL test-my-rand.pl]) +AT_CHECK([$PERL time-in.pl 0 time +H:M +H:M:S]) +AT_CHECK([test -s time.sps]) +AT_CHECK([test -s time.data]) +AT_CHECK([pspp -O format=csv time.sps]) +AT_CHECK([cat time.out], [0], [dnl + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + -103800.00 + 103800.00 + 103800.00 + -103800.00 + 103800.00 + -103800.00 + 103800.00 + 103800.00 + -103800.00 + 103800.00 + 477060.00 + 477060.00 + 477060.00 + 477060.00 + -477060.00 + 477060.00 + 477060.00 + 477060.00 + 477060.00 + -477060.00 + 46020.00 + -46020.00 + -46020.00 + -46020.00 + 46020.00 + 46020.00 + -46020.00 + 46020.00 + 46020.00 + -46020.00 + 264360.00 + 264360.00 + -264360.00 + -264360.00 + 264360.00 + -264360.00 + 264360.00 + -264360.00 + -264360.00 + -264360.00 + 161880.00 + 161880.00 + 161880.00 + 161880.00 + 161880.00 + -161880.00 + 161880.00 + 161880.00 + 161880.00 + -161880.00 + 1064160.00 + 1064160.00 + 1064160.00 + 1064160.00 + 1064160.00 + 1064160.00 + -1064160.00 + 1064160.00 + 1064160.00 + 1064160.00 + -4549380.00 + 4549380.00 + 4549380.00 + 4549380.00 + 4549380.00 + 4549380.00 + 4549380.00 + -4549380.00 + 4549380.00 + 4549380.00 + 620700.00 + -620700.00 + 620700.00 + 620700.00 + -620700.00 + 620700.00 + -620700.00 + -620700.00 + 620700.00 + 620700.00 + 24540.00 + -24540.00 + 24540.00 + 24540.00 + 24540.00 + 24540.00 + 24540.00 + 24540.00 + 24540.00 + 24540.00 + -1738620.00 + 1738620.00 + 1738620.00 + 1738620.00 + 1738620.00 + 1738620.00 + 1738620.00 + 1738620.00 + 1738620.00 + 1738620.00 + 48012300.00 + -48012300.00 + -48012300.00 + 48012300.00 + 48012300.00 + 48012300.00 + 48012300.00 + 48012300.00 + 48012300.00 + 48012300.00 + 10445400.00 + -10445400.00 + -10445400.00 + 10445400.00 + 10445400.00 + 10445400.00 + -10445400.00 + 10445400.00 + 10445400.00 + -10445400.00 + 15900.00 + 15900.00 + -15900.00 + 15900.00 + -15900.00 + -15900.00 + 15900.00 + 15900.00 + 15900.00 + 15900.00 + 283740.00 + -283740.00 + 283740.00 + 283740.00 + 283740.00 + -283740.00 + 283740.00 + 283740.00 + -283740.00 + 283740.00 + 442620.00 + 442620.00 + 442620.00 + 442620.00 + 442620.00 + 442620.00 + 442620.00 + 442620.00 + 442620.00 + -442620.00 + 60300.00 + 60300.00 + 60300.00 + 60300.00 + 60300.00 + -60300.00 + -60300.00 + 60300.00 + -60300.00 + -60300.00 + 163800.00 + -163800.00 + -163800.00 + -163800.00 + 163800.00 + 163800.00 + 163800.00 + 163800.00 + -163800.00 + 163800.00 + 945000.00 + -945000.00 + -945000.00 + -945000.00 + 945000.00 + 945000.00 + 945000.00 + -945000.00 + 945000.00 + 945000.00 + -1907760.00 + 1907760.00 + -1907760.00 + 1907760.00 + -1907760.00 + 1907760.00 + 1907760.00 + 1907760.00 + 1907760.00 + -1907760.00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + 103839.00 + 103838.68 + -103838.70 + -103838.68 + 103838.70 + 103838.68 + -103839.00 + 103838.68 + 103838.70 + -103839.00 + 477095.82 + 477096.00 + 477096.00 + 477095.82 + 477095.82 + 477095.82 + 477095.80 + -477095.80 + 477095.82 + -477095.82 + -46073.00 + -46073.40 + 46073.00 + 46073.40 + 46073.40 + 46073.00 + -46073.00 + 46073.00 + 46073.00 + 46073.00 + 264360.69 + -264360.70 + 264361.00 + 264360.70 + 264360.69 + 264360.70 + 264361.00 + 264360.70 + -264361.00 + 264361.00 + 161891.00 + -161891.20 + -161891.00 + 161891.00 + -161891.00 + 161891.20 + -161891.20 + -161891.20 + 161891.20 + -161891.19 + -1064166.00 + 1064165.98 + -1064166.00 + -1064166.00 + -1064165.98 + 1064166.00 + 1064166.00 + -1064166.00 + -1064165.98 + 1064166.00 + 4549429.00 + 4549429.27 + 4549429.27 + -4549429.30 + 4549429.00 + -4549429.00 + 4549429.00 + 4549429.27 + 4549429.00 + 4549429.30 + 620709.00 + -620709.24 + 620709.24 + 620709.24 + 620709.24 + 620709.20 + -620709.24 + 620709.20 + 620709.24 + 620709.24 + 24567.90 + 24567.89 + 24567.90 + 24568.00 + 24567.90 + 24568.00 + 24568.00 + -24567.90 + 24567.90 + 24568.00 + 1738672.56 + 1738673.00 + -1738672.60 + -1738672.56 + 1738673.00 + 1738673.00 + 1738673.00 + 1738672.60 + -1738672.56 + 1738672.60 + -48012344.10 + 48012344.12 + -48012344.10 + -48012344.00 + -48012344.00 + 48012344.00 + -48012344.00 + -48012344.00 + -48012344.00 + 48012344.00 + 10445457.27 + 10445457.00 + 10445457.30 + 10445457.00 + 10445457.27 + 10445457.00 + 10445457.27 + 10445457.00 + 10445457.00 + -10445457.30 + -15909.98 + 15910.00 + -15910.00 + 15910.00 + -15909.98 + 15910.00 + -15909.98 + 15909.98 + 15910.00 + 15909.98 + -283767.00 + 283767.20 + 283767.20 + 283767.00 + -283767.00 + 283767.00 + 283767.24 + 283767.00 + 283767.24 + 283767.00 + -442672.00 + 442672.13 + 442672.00 + 442672.13 + 442672.00 + 442672.00 + 442672.00 + 442672.00 + -442672.00 + 442672.13 + -60344.40 + -60344.00 + 60344.00 + 60344.35 + 60344.00 + 60344.40 + 60344.40 + -60344.00 + 60344.00 + 60344.40 + 163857.00 + 163857.00 + 163857.00 + 163857.00 + 163857.30 + -163857.30 + 163857.30 + -163857.00 + -163857.00 + 163857.30 + 945004.30 + 945004.00 + 945004.27 + 945004.30 + 945004.30 + 945004.00 + 945004.30 + 945004.00 + 945004.00 + 945004.00 + 1907811.00 + 1907811.00 + -1907811.00 + 1907811.18 + 1907811.20 + 1907811.00 + -1907811.00 + 1907811.18 + -1907811.00 + -1907811.00 +]) +AT_CLEANUP + +AT_SETUP([DTIME input format]) +AT_KEYWORDS([data-in]) +time_in +AT_CHECK([$PERL test-my-rand.pl]) +AT_CHECK([$PERL time-in.pl 2000 dtime '+D H:M' '+D H:M:S']) +AT_CHECK([test -s dtime.sps]) +AT_CHECK([test -s dtime.data]) +AT_CHECK([pspp -O format=csv dtime.sps]) +AT_CHECK([cat dtime.out], [0], [dnl + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + 103800.00 + 103800.00 + -103800.00 + 103800.00 + 103800.00 + -103800.00 + 103800.00 + -103800.00 + 103800.00 + -103800.00 + 477060.00 + 477060.00 + 477060.00 + 477060.00 + 477060.00 + 477060.00 + -477060.00 + -477060.00 + -477060.00 + 477060.00 + 46020.00 + 46020.00 + 46020.00 + 46020.00 + -46020.00 + -46020.00 + -46020.00 + 46020.00 + 46020.00 + 46020.00 + 264360.00 + 264360.00 + -264360.00 + 264360.00 + 264360.00 + 264360.00 + 264360.00 + -264360.00 + -264360.00 + -264360.00 + -161880.00 + -161880.00 + 161880.00 + 161880.00 + 161880.00 + -161880.00 + 161880.00 + -161880.00 + 161880.00 + -161880.00 + 1064160.00 + 1064160.00 + 1064160.00 + 1064160.00 + 1064160.00 + 1064160.00 + -1064160.00 + 1064160.00 + 1064160.00 + 1064160.00 + -4549380.00 + 4549380.00 + -4549380.00 + -4549380.00 + -4549380.00 + 4549380.00 + 4549380.00 + 4549380.00 + 4549380.00 + 4549380.00 + -620700.00 + 620700.00 + 620700.00 + -620700.00 + 620700.00 + 620700.00 + 620700.00 + -620700.00 + 620700.00 + 620700.00 + -24540.00 + 24540.00 + 24540.00 + 24540.00 + -24540.00 + 24540.00 + 24540.00 + -24540.00 + 24540.00 + -24540.00 + 1738620.00 + 1738620.00 + 1738620.00 + -1738620.00 + -1738620.00 + -1738620.00 + 1738620.00 + 1738620.00 + 1738620.00 + 1738620.00 + 48012300.00 + 48012300.00 + 48012300.00 + 48012300.00 + 48012300.00 + -48012300.00 + -48012300.00 + 48012300.00 + -48012300.00 + -48012300.00 + -10445400.00 + 10445400.00 + -10445400.00 + 10445400.00 + 10445400.00 + 10445400.00 + 10445400.00 + 10445400.00 + 10445400.00 + 10445400.00 + 15900.00 + 15900.00 + 15900.00 + 15900.00 + 15900.00 + -15900.00 + 15900.00 + 15900.00 + 15900.00 + 15900.00 + -283740.00 + 283740.00 + -283740.00 + -283740.00 + 283740.00 + 283740.00 + 283740.00 + 283740.00 + 283740.00 + -283740.00 + 442620.00 + -442620.00 + -442620.00 + 442620.00 + 442620.00 + -442620.00 + -442620.00 + -442620.00 + 442620.00 + 442620.00 + 60300.00 + -60300.00 + 60300.00 + 60300.00 + 60300.00 + 60300.00 + 60300.00 + 60300.00 + 60300.00 + 60300.00 + 163800.00 + 163800.00 + -163800.00 + 163800.00 + -163800.00 + -163800.00 + -163800.00 + 163800.00 + 163800.00 + -163800.00 + 945000.00 + 945000.00 + 945000.00 + 945000.00 + -945000.00 + 945000.00 + 945000.00 + 945000.00 + 945000.00 + -945000.00 + -1907760.00 + 1907760.00 + 1907760.00 + 1907760.00 + -1907760.00 + -1907760.00 + -1907760.00 + 1907760.00 + -1907760.00 + -1907760.00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + .00 + 103838.70 + 103838.70 + 103839.00 + 103838.68 + 103838.70 + 103839.00 + 103838.70 + -103839.00 + 103839.00 + 103839.00 + 477095.80 + 477095.80 + -477095.80 + 477095.82 + 477095.82 + 477095.82 + -477095.82 + 477095.82 + 477096.00 + -477096.00 + -46073.00 + 46073.00 + -46073.00 + 46073.41 + 46073.00 + 46073.40 + 46073.00 + 46073.41 + 46073.41 + -46073.00 + 264360.70 + 264360.70 + 264360.69 + 264361.00 + -264360.70 + 264360.69 + -264360.70 + 264360.69 + -264361.00 + 264360.69 + 161891.00 + -161891.20 + -161891.19 + 161891.19 + 161891.00 + 161891.20 + 161891.20 + 161891.00 + 161891.00 + 161891.20 + -1064165.98 + 1064166.00 + 1064166.00 + 1064166.00 + 1064165.98 + 1064166.00 + 1064166.00 + -1064165.98 + 1064165.98 + -1064166.00 + 4549429.27 + 4549429.27 + 4549429.27 + 4549429.27 + 4549429.00 + 4549429.27 + -4549429.27 + 4549429.00 + 4549429.27 + 4549429.27 + -620709.00 + 620709.20 + 620709.00 + -620709.20 + -620709.24 + -620709.00 + 620709.00 + 620709.24 + -620709.24 + 620709.00 + -24567.89 + 24567.90 + 24568.00 + 24567.89 + 24568.00 + 24568.00 + 24567.90 + -24568.00 + -24567.89 + -24568.00 + 1738672.56 + -1738672.56 + 1738672.56 + -1738672.60 + -1738673.00 + 1738672.56 + 1738673.00 + -1738672.60 + 1738672.60 + 1738672.56 + 48012344.00 + -48012344.12 + -48012344.00 + 48012344.12 + -48012344.12 + -48012344.00 + 48012344.12 + -48012344.00 + -48012344.00 + -48012344.00 + -10445457.00 + 10445457.00 + 10445457.00 + 10445457.00 + -10445457.00 + -10445457.00 + 10445457.00 + 10445457.00 + 10445457.00 + -10445457.30 + -15909.98 + 15910.00 + -15909.98 + 15910.00 + 15910.00 + -15910.00 + -15910.00 + -15910.00 + -15910.00 + 15909.98 + -283767.24 + 283767.20 + 283767.24 + 283767.24 + 283767.00 + 283767.20 + 283767.20 + 283767.24 + -283767.00 + 283767.24 + 442672.13 + -442672.13 + 442672.00 + 442672.13 + 442672.10 + 442672.00 + 442672.00 + -442672.10 + 442672.00 + -442672.10 + -60344.35 + 60344.00 + 60344.00 + -60344.00 + 60344.00 + 60344.35 + 60344.00 + 60344.35 + 60344.00 + 60344.00 + -163857.00 + -163857.00 + 163857.32 + 163857.00 + -163857.30 + -163857.00 + 163857.30 + 163857.00 + 163857.00 + -163857.00 + -945004.00 + -945004.30 + 945004.27 + 945004.27 + -945004.27 + -945004.27 + -945004.00 + -945004.27 + -945004.00 + 945004.30 + 1907811.00 + 1907811.00 + 1907811.00 + 1907811.00 + 1907811.20 + 1907811.18 + 1907811.18 + 1907811.18 + 1907811.18 + 1907811.00 +]) +AT_CLEANUP AT_SETUP([binary and hexadecimal input (IB, PIB, and PIBHEX formats)]) AT_CHECK([$PERL -e 'print pack "n", $_ foreach 0...65535' > binhex-in.data]) diff --git a/tests/formats/time-in.sh b/tests/formats/time-in.sh deleted file mode 100755 index 0c9a7195..00000000 --- a/tests/formats/time-in.sh +++ /dev/null @@ -1,986 +0,0 @@ -#! /bin/sh - -TEMPDIR=/tmp/pspp-tst-$$ -mkdir -p $TEMPDIR -trap 'cd /; rm -rf $TEMPDIR' 0 - -# ensure that top_builddir are absolute -if [ -z "$top_builddir" ] ; then top_builddir=. ; fi -if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi -top_builddir=`cd $top_builddir; pwd` -PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT -: ${PERL:=perl} - -# ensure that top_srcdir is absolute -top_srcdir=`cd $top_srcdir; pwd` - -STAT_CONFIG_PATH=$top_srcdir/config -export STAT_CONFIG_PATH - -fail() -{ - echo $activity - echo FAILED - exit 1; -} - - -no_result() -{ - echo $activity - echo NO RESULT; - exit 2; -} - -pass() -{ - exit 0; -} - -cd $TEMPDIR - -activity="write PRNG fragment" -cat > my-rand.pl <<'EOF' -# This random number generator and the test for it below are drawn -# from Park and Miller, "Random Number Generators: Good Ones are Hard -# to Come By", Communications of the ACM 31:10 (October 1988). It is -# documented to function properly on systems with a 46-bit or longer -# real significand, which includes systems that have 64-bit IEEE reals -# (with 53-bit significand). The test should catch any systems for -# which this is not true, in any case. - -our ($seed) = 1; -sub my_rand { - my ($modulo) = @_; - my ($a) = 16807; - my ($m) = 2147483647; - my ($tmp) = $a * $seed; - $seed = $tmp - $m * int ($tmp / $m); - return $seed % $modulo; -} -EOF -if [ $? -ne 0 ] ; then no_result ; fi - -activity="write PRNG test program" -cat > test-my-rand.pl <<'EOF' -#! /usr/bin/perl -use strict; -use warnings; -do 'my-rand.pl'; -my_rand (1) foreach 1...10000; -our $seed; -die $seed if $seed != 1043618065; -EOF -if [ $? -ne 0 ] ; then no_result ; fi - -activity="test PRNG" -$PERL test-my-rand.pl -if [ $? -ne 0 ] ; then no_result ; fi - -activity="write program to generate PSPP syntax and data" -cat > time-in.pl <<'EOF' -#! /usr/bin/perl - -use strict; -use warnings; - -do 'my-rand.pl'; - -my @formats = (["time", "+H:M", "+H:M:S"], - ["dtime", "+D H:M", "+D H:M:S"]); - -my @times = (# D HH MM SS - [ 0, 0, 0, 0.00], - [ 1, 4, 50, 38.68], - [ 5, 12, 31, 35.82], - [ 0, 12, 47, 53.41], - [ 3, 1, 26, 0.69], - [ 1, 20, 58, 11.19], - [ 12, 7, 36, 5.98], - [ 52, 15, 43, 49.27], - [ 7, 4, 25, 9.24], - [ 0, 6, 49, 27.89], - [ 20, 2, 57, 52.56], - [555, 16, 45, 44.12], - [120, 21, 30, 57.27], - [ 0, 4, 25, 9.98], - [ 3, 6, 49, 27.24], - [ 5, 2, 57, 52.13], - [ 0, 16, 45, 44.35], - [ 1, 21, 30, 57.32], - [ 10, 22, 30, 4.27], - [ 22, 1, 56, 51.18]); - -open (SYNTAX, '>', 'time-in.pspp') or die "time-in.pspp: create: $!\n"; -for my $format (@formats) { - my ($name) = @$format; - print SYNTAX "DATA LIST file='$name.data'/$name 1-40 ($name).\n"; - print SYNTAX "PRINT OUTFILE='$name.out'/$name (F16.2).\n"; - print SYNTAX "EXECUTE.\n"; -} -close (SYNTAX); - -for my $format (@formats) { - my ($fmt_name, @templates) = @$format; - my ($fn) = "$fmt_name.data"; - open (DATA, '>', $fn) or die "$fn: create: $!\n"; - select DATA; - for my $template (@templates) { - for my $time (@times) { - print_time_with_template ($time, $template) for 1...10; - } - } - close (DATA); -} - -sub print_time_with_template { - my ($time, $template) = @_; - my ($day, $hour, $minute, $second) = @$time; - for my $c (split ('', $template)) { - if ($c eq '+') { - print +pick ('', '-', '+'); - } elsif ($c eq 'D') { - printf (+pick ('%d', '%02d'), $day); - $day = 0; - } elsif ($c eq 'H') { - printf (+pick ('%d', '%02d'), $hour + 24 * $day); - } elsif ($c eq 'M') { - printf (+pick ('%d', '%02d'), $minute); - } elsif ($c eq 'S') { - printf (+pick ('%.0f', '%02.0f', '%.1f', '%.2f'), $second); - } elsif ($c eq ':') { - print +pick (' ', ':'); - } elsif ($c eq ' ') { - print ' '; - } else { - die; - } - } - print "\n"; -} - -sub pick { - return $_[int (my_rand ($#_ + 1))]; -} -EOF -if [ $? -ne 0 ] ; then no_result ; fi - -activity="generate PSPP syntax and data" -$PERL time-in.pl -if [ $? -ne 0 ] ; then no_result ; fi - -activity="run program" -$SUPERVISOR $PSPP -o pspp.csv time-in.pspp -if [ $? -ne 0 ] ; then no_result ; fi - -activity="compare time.out output" -diff -u time.out - <