Mercurial > octave-nkf
diff test/build_bc_overload_tests.sh @ 10090:655ab6f6c369
add tests for built-in class overloads
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 13 Jan 2010 08:44:24 +0100 |
parents | |
children | ffc5426c85a4 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/build_bc_overload_tests.sh Wed Jan 13 08:44:24 2010 +0100 @@ -0,0 +1,92 @@ +#!/bin/sh + +# Copyright (C) 2010 VZLU Prague +# +# This file is part of Octave. +# +# Octave is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at +# your option) any later version. +# +# Octave is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with Octave; see the file COPYING. If not, see +# <http://www.gnu.org/licenses/>. + +CLASSES="double single char logical int8 int16 int32 int64 \ +uint8 uint16 uint32 uint64 struct cell function_handle" + +for class in $CLASSES ; do + DIR=\@$class + test -d $DIR || mkdir $DIR || { echo "error: could not create $DIR" ; exit ; } + cat > $DIR/tbcover.m <<end +% DO NOT EDIT - generated automatically +function s = tbcover (x, y) + s = '$class'; +end +done + +cat > tbcover.m <<end +% DO NOT EDIT - generated automatically +function s = tbcover (x, y) + s = 'none'; +end + +if test "$1" == "overloads_only" ; then + exit +fi + +cat > test_bc_overloads.m <<end +## THIS IS AN AUTOMATICALLY GENERATED FILE --- DO NOT EDIT --- +## instead modify build_bc_overload_tests.sh to generate the tests that you want. + +%!shared ex +%! ex.double = 1; +%! ex.single = single(1); +%! ex.logical = true; +%! ex.char = 'char'; +%! ex.int8 = int8 (1); +%! ex.int16 = int16 (1); +%! ex.int32 = int32 (1); +%! ex.int64 = int64 (1); +%! ex.uint8 = uint8 (1); +%! ex.uint16 = uint16 (1); +%! ex.uint32 = uint32 (1); +%! ex.uint64 = uint64 (1); +%! ex.cell = {}; +%! ex.struct = struct (); +%! ex.function_handle = @numel; + +end + +cat bc_overloads_expected |\ +while read cl1 cl2 clr ; do + cat >> test_bc_overloads.m <<end +%% Name call +%!assert (tbcover (ex.$cl1, ex.$cl2), "$clr") +%% Handle call +%!assert ((@tbcover) (ex.$cl1, ex.$cl2), "$clr") + +end +done + +cat >> test_bc_overloads.m <<end +%%test handles through cellfun +%!test +%! f = fieldnames (ex); +%! n = numel (f); +%! s = c1 = c2 = cell (n); +%! for i = 1:n +%! for j = 1:n +%! c1{i,j} = ex.(f{i}); +%! c2{i,j} = ex.(f{j}); +%! s{i,j} = tbcover (ex.(f{i}), ex.(f{j})); +%! endfor +%! endfor +%! assert (cellfun (@tbcover, c1, c2, "uniformoutput", false), s); +end