Blame tests/EXPRTest.at

Packit a4aae4
# Process with autom4te to create an -*- Autotest -*- test suite.
Packit a4aae4
Packit a4aae4
AT_INIT([expr-test])
Packit a4aae4
# AT_COPYRIGHT([])
Packit a4aae4
Packit a4aae4
# AT_TESTED([expr-test])
Packit a4aae4
Packit a4aae4
AT_ARG_OPTION_ARG([baselines],
Packit a4aae4
    [--baselines=yes|no   Build the baseline file for parser test 'arg'],
Packit a4aae4
    [echo "baselines set to $at_arg_baselines";
Packit a4aae4
     baselines=$at_arg_baselines],[baselines=])
Packit a4aae4
Packit a4aae4
# Usage: _EXPR_TEST(<flags>, <dds>, <constraint>, <baseline file>, <xfail?>)
Packit a4aae4
Packit a4aae4
m4_define([_EXPR_TEST], [
Packit a4aae4
    # AT_BANNER([Test $1 $2 $3])
Packit a4aae4
    AT_SETUP([expr-test $1 $2 -k $3 ($5)])
Packit a4aae4
    AT_KEYWORDS([expr])
Packit a4aae4
Packit a4aae4
    # Added || true because expr-test returns 0 (failure) for some of
Packit a4aae4
    # these tests which is correct for the test - we expect some of
Packit a4aae4
    # the input to trigger an error response from the parser, et
Packit a4aae4
    # cetera. That's also why we capture both stdout and stderr -
Packit a4aae4
    # successful runs are sent to stdout while the errors are sent to
Packit a4aae4
    # stderr.
Packit a4aae4
Packit a4aae4
    AS_IF([test -n "$baselines" -a x$baselines = xyes],
Packit a4aae4
        [
Packit a4aae4
        AT_CHECK([$abs_builddir/expr-test $1 $2 -k $3 -f "dummy" || true], [0], [stdout], [stderr])
Packit a4aae4
        AT_CHECK([mv stdout $4.tmp])
Packit a4aae4
        ],
Packit a4aae4
        [
Packit a4aae4
        AT_CHECK([$abs_builddir/expr-test $1 $2 -k $3 -f "dummy" || true], [0], [stdout], [stderr])
Packit a4aae4
        AT_CHECK([diff -b -B $4 stdout || diff -b -B $4 stderr], [0], [ignore])
Packit a4aae4
        AT_XFAIL_IF([test "$5" = "xfail"])
Packit a4aae4
        ])
Packit a4aae4
    
Packit a4aae4
    AT_CLEANUP
Packit a4aae4
])
Packit a4aae4
Packit a4aae4
m4_define([EXPR_RESPONSE_P], [
Packit a4aae4
    # AT_BANNER([EXPR response for $1, $2, $4.])
Packit a4aae4
    # Test the serialize/deserialize methods
Packit a4aae4
    _EXPR_TEST([-w], [$abs_srcdir/expr-testsuite/$1], [$2], [$abs_srcdir/expr-testsuite/$3.base], $4)
Packit a4aae4
    # Test the intern_data method (which combines serialize and deserialze)
Packit a4aae4
    _EXPR_TEST([-W], [$abs_srcdir/expr-testsuite/$1], [$2], [$abs_srcdir/expr-testsuite/$3.base], $4)
Packit a4aae4
])
Packit a4aae4
Packit a4aae4
# The -b option to expr-test uses the 'series values' feature of the Test
Packit a4aae4
# classes.
Packit a4aae4
m4_define([EXPR_RESPONSE_B], [
Packit a4aae4
    # AT_BANNER([EXPR response for $1, $2, $4.])
Packit a4aae4
    _EXPR_TEST([-b -w], [$abs_srcdir/expr-testsuite/$1], [$2], [$abs_srcdir/expr-testsuite/$3.base], $4)
Packit a4aae4
    _EXPR_TEST([-b -W], [$abs_srcdir/expr-testsuite/$1], [$2], [$abs_srcdir/expr-testsuite/$3.base], $4)
Packit a4aae4
])
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_P([test.1], [i], [test.1], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.1], [i,j], [test.1a], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.1], ['i,j&i=j'], [test.1b], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.1], ['i&i=j'], [test.1d], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.2], [s1], [test.2], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.2], [s2], [test.2a], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.2], [s2,s3], [test.2b], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.2], [s2[[2:2:4]],s3.o], [test.2c], [pass])
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_P([test.2], [s2[[2:2:4]].m], [test.2d], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.2], [s2[[2:2:4]].m,s2[[2:2:4]].l], [test.2e], [pass])
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_P([test.2a], [s2[[2:4]].m[[0:4]],s2[[2:4]].l[[0:5]]], [test.2f], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.3], [i[[1:10]]], [test.3], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.4], ['s&s=~"^Silly.*"'], [test.4], [pass])
Packit a4aae4
Packit a4aae4
dnl In changing the TestStr class so that it writes a constant value (Silly ...: 1)
Packit a4aae4
dnl I had to hack this test to use the -b option to expr-test. EXPR_RESPONSE_P uses
Packit a4aae4
dnl only the -w/-W options, so I dropped using that macro kluge and went right for the
Packit a4aae4
dnl actual test macro. 12/2/13/ jhrg
Packit a4aae4
dnl
Packit a4aae4
dnl EXPR_RESPONSE_P([test.e], ['names.s&names.s=~".*: 3"'], [test.ea], [pass])
Packit a4aae4
    
Packit a4aae4
_EXPR_TEST([-b -w], [$abs_srcdir/expr-testsuite/test.e], ['names.s&names.s=~".*: 3"'], 
Packit a4aae4
    [$abs_srcdir/expr-testsuite/test.ea.base], [pass])
Packit a4aae4
    
Packit a4aae4
_EXPR_TEST([-b -W], [$abs_srcdir/expr-testsuite/test.e], ['names.s&names.s=~".*: 3"'], 
Packit a4aae4
    [$abs_srcdir/expr-testsuite/test.ea.base], [pass])
Packit a4aae4
Packit a4aae4
dnl since 'Silly ...:5' will never be produced, this tests what happens when the sequence
Packit a4aae4
dnl does not contain the value. Note that this test does not have to be rewritten because
Packit a4aae4
dnl of the change to the TestStr code. 12/2/13 jhrg
Packit a4aae4
EXPR_RESPONSE_P([test.e], ['names.s&names.s=~".*: 5"'], [test.eb], [pass])
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_P([test.5], [g[[0:2:4]][[0]][[0]]], [test.5], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.5], [g[[0:2:4]][[0:2:4]][[0:2:4]]], [test.5a], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.6], [i], [test.6], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.6], [i[[1:2]][[2:4]]], [test.6a], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.5], [g.val[[0:1]][[0:1]][[0:1]]], [test.5b], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.5], [g.length], [test.5c], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.5], [g.length,g.width], [test.5d], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.2], [j,o], [test.2g], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.8], ["data%23i[[0:2:9]][[0:2]]"], [test.8], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.7], [x,y,f], [test.7], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.8], ["x%23y,y"], [test.8a], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.8], ["data%20name,y"], [test.8b], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.9], ["Data-Set-2.fakeDim0[[0:3]],Data-Set-2.fakeDim1[[0:3]]"], [test.9], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.5], [g[[1:4:9]]], [test.5e], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.6], [i[[1:4:9]]], [test.6b], [pass])
Packit a4aae4
Packit a4aae4
# New tests for server functions that take arrays and include array projections
Packit a4aae4
# Added 10/23/13 jhrg
Packit a4aae4
EXPR_RESPONSE_P([test.6], [scale\(i,2\)], [test.6.func1], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.6], [scale\(i[[2:4]][[3:6]],2\)], [test.6.func2], [pass])
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_P([test.5], [scale\(i[[3]],2\)], [test.5.func3], [pass])
Packit a4aae4
# This doesn't work yet 10/23/13 jhrg 
Packit a4aae4
EXPR_RESPONSE_P([test.5], [scale\(j,2\)], [test.5.func4], [pass])
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_P([test.a], ["" -b], [test.a], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.a], ["&i<2000" -b], [test.aa], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.a], ["j&i>2000" -b], [test.ab], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.a], ["i,j&i<0" -b], [test.ac], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.b], ["" -b], [test.b], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.b], ["i,f" -b], [test.ba], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.b], ["i,f&i<2000" -b], [test.bb], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.b], ["i,f&f<0" -b], [test.bc], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.b], ["i,j&i<2000" -b], [test.bd], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.b], ["&i<0" -b], [test.be], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.d], ["" -b], [test.d], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.d], ["i,f,a" -b], [test.da], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.d], ["i,f,a&i<2000" -b], [test.db], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.d], ["i,f,a&f<0" -b], [test.dc], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.d], ["i,f,a&a<10" -b], [test.dd], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.d], ["i,f&i<2000" -b], [test.de], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.d], ["i&i<2000" -b], [test.df], [pass])
Packit a4aae4
EXPR_RESPONSE_P([test.d], ["i,f,a&i<0" -b], [test.dg], [pass])
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_B([test.61], [i], [data.61a], [pass])
Packit a4aae4
EXPR_RESPONSE_B([test.61], [ i[[0:2]][[0:2]] ], [data.61b], [pass])
Packit a4aae4
EXPR_RESPONSE_B([test.61], [ i[[1:2]][[0:2]] ], [data.61c], [pass])
Packit a4aae4
EXPR_RESPONSE_B([test.61], [ i[[1:2]][[1:2]] ], [data.61d], [pass])
Packit a4aae4
EXPR_RESPONSE_B([test.c0], [SST], [data.z1], [pass])
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_B([test.f], [""], [test.fa], [pass])
Packit a4aae4
EXPR_RESPONSE_B([test.f], ["&i<3000"], [test.fb], [pass])
Packit a4aae4
Packit a4aae4
# tests for zero-length arrays. jhrg 1/28/16
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_B([test.21.dds], [""], [data.21], [pass])
Packit a4aae4
EXPR_RESPONSE_B([test.22.dds], [""], [data.22], [pass])
Packit a4aae4
EXPR_RESPONSE_B([test.23.dds], [""], [data.23], [pass])
Packit a4aae4
EXPR_RESPONSE_B([test.24.dds], [""], [data.24], [pass])
Packit a4aae4
Packit a4aae4
# Empty Structures. jhrg 1/29/16
Packit a4aae4
Packit a4aae4
EXPR_RESPONSE_B([test.25.dds], [""], [data.25], [pass])
Packit a4aae4
EXPR_RESPONSE_B([test.26.dds], [""], [data.26], [pass])
Packit a4aae4