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