changeset 22284:a7e68243a326

new tests for type conversions * test/build-conv-tests.sh: New file * test/module.mk: Update.
author John W. Eaton <jwe@octave.org>
date Sat, 13 Aug 2016 17:26:10 -0400
parents 564203123065
children 5f23465ee406
files test/build-conv-tests.sh test/module.mk
diffstat 2 files changed, 186 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/build-conv-tests.sh	Sat Aug 13 17:26:10 2016 -0400
@@ -0,0 +1,178 @@
+#!/bin/sh
+
+cat <<EOF
+## !!! DO NOT EDIT !!!
+## THIS IS AN AUTOMATICALLY GENERATED FILE
+## modify build-conv-tests.sh to generate the tests you need.
+
+
+%!shared r,dq,sq,b,bm,dm,cdm,fdm,fcdm,pm,sm,sbm,scm,s,m,cs,cm,fs,fm,fcs,fcm,i8s,i16s,i32s,i64s,i8m,i16m,i32m,i64m,ui8s,ui16s,ui32s,ui64s,ui8m,ui16m,ui32m,ui64m
+%!test
+%! r = 1:5;
+%! dq = "foo";
+%! sq = 'bar';
+%! b = true;
+%! bm = rand (5) > 0.5;
+%! dm = eye (5);
+%! cdm = eye (5) * i;
+%! fdm = eye (5, "single");
+%! fcdm = eye (5, "single") * single (i);
+%! [~, ~, pm] = qr (rand (5));
+%! sm = sprand (5, 5, 0.1);
+%! sbm = sparse (rand (5) > 0.5);
+%! scm = sprand (5, 5, 0.1) * i;
+%! s = rand ();
+%! m = rand (5);
+%! cs = 13 * i;
+%! cm = rand (5) * i;
+%! fs = rand ("single");
+%! fm = rand (5, "single");
+%! fcs = rand ("single") * single (i);
+%! fcm = rand (5, "single") * single (i);
+%! i8s = int8 (rand () * 10);
+%! i16s = int16 (rand () * 10);
+%! i32s = int32 (rand () * 10);
+%! i64s = int64 (rand () * 10);
+%! i8m = int8 (rand (5) * 10);
+%! i16m = int16 (rand (5) * 10);
+%! i32m = int32 (rand (5) * 10);
+%! i64m = int64 (rand (5) * 10);
+%! ui8s = uint8 (rand () * 10);
+%! ui16s = uint16 (rand () * 10);
+%! ui32s = uint32 (rand () * 10);
+%! ui64s = uint64 (rand () * 10);
+%! ui8m = uint8 (rand (5) * 10);
+%! ui16m = uint16 (rand (5) * 10);
+%! ui32m = uint32 (rand (5) * 10);
+%! ui64m = uint64 (rand (5) * 10);
+%! 
+%!assert (typeinfo (r), "range")
+%!assert (typeinfo (dq), "string")
+%!assert (typeinfo (sq), "sq_string")
+%!assert (typeinfo (b), "bool")
+%!assert (typeinfo (bm), "bool matrix")
+%!assert (typeinfo (dm), "diagonal matrix")
+%!assert (typeinfo (cdm), "complex diagonal matrix")
+%!assert (typeinfo (fdm), "float diagonal matrix")
+%!assert (typeinfo (fcdm), "float complex diagonal matrix")
+%!assert (typeinfo (pm), "permutation matrix")
+%!assert (typeinfo (sm), "sparse matrix")
+%!assert (typeinfo (sbm), "sparse bool matrix")
+%!assert (typeinfo (scm), "sparse complex matrix")
+%!assert (typeinfo (s), "scalar")
+%!assert (typeinfo (m), "matrix")
+%!assert (typeinfo (cs), "complex scalar")
+%!assert (typeinfo (cm), "complex matrix")
+%!assert (typeinfo (fs), "float scalar")
+%!assert (typeinfo (fm), "float matrix")
+%!assert (typeinfo (fcs), "float complex scalar")
+%!assert (typeinfo (fcm), "float complex matrix")
+%!assert (typeinfo (i8s), "int8 scalar")
+%!assert (typeinfo (i16s), "int16 scalar")
+%!assert (typeinfo (i32s), "int32 scalar")
+%!assert (typeinfo (i64s), "int64 scalar")
+%!assert (typeinfo (i8m), "int8 matrix")
+%!assert (typeinfo (i16m), "int16 matrix")
+%!assert (typeinfo (i32m), "int32 matrix")
+%!assert (typeinfo (i64m), "int64 matrix")
+%!assert (typeinfo (ui8s), "uint8 scalar")
+%!assert (typeinfo (ui16s), "uint16 scalar")
+%!assert (typeinfo (ui32s), "uint32 scalar")
+%!assert (typeinfo (ui64s), "uint64 scalar")
+%!assert (typeinfo (ui8m), "uint8 matrix")
+%!assert (typeinfo (ui16m), "uint16 matrix")
+%!assert (typeinfo (ui32m), "uint32 matrix")
+%!assert (typeinfo (ui64m), "uint64 matrix")
+%!
+%!assert (class (r), "double")
+%!assert (class (dq), "char")
+%!assert (class (sq), "char")
+%!assert (class (b), "logical")
+%!assert (class (bm), "logical")
+%!assert (class (dm), "double")
+%!assert (class (cdm), "double")
+%!assert (class (fdm), "single")
+%!assert (class (fcdm), "single")
+%!assert (class (pm), "double")
+%!assert (class (sm), "double")
+%!assert (class (sbm), "logical")
+%!assert (class (scm), "double")
+%!assert (class (s), "double")
+%!assert (class (m), "double")
+%!assert (class (cs), "double")
+%!assert (class (cm), "double")
+%!assert (class (fs), "single")
+%!assert (class (fm), "single")
+%!assert (class (fcs), "single")
+%!assert (class (fcm), "single")
+%!assert (class (i8s), "int8")
+%!assert (class (i16s), "int16")
+%!assert (class (i32s), "int32")
+%!assert (class (i64s), "int64")
+%!assert (class (i8m), "int8")
+%!assert (class (i16m), "int16")
+%!assert (class (i32m), "int32")
+%!assert (class (i64m), "int64")
+%!assert (class (ui8s), "uint8")
+%!assert (class (ui16s), "uint16")
+%!assert (class (ui32s), "uint32")
+%!assert (class (ui64s), "uint64")
+%!assert (class (ui8m), "uint8")
+%!assert (class (ui16m), "uint16")
+%!assert (class (ui32m), "uint32")
+%!assert (class (ui64m), "uint64")
+EOF
+
+## There are no single or integer sparse matrices.
+
+sparse_vars="sm sbm scm"
+sparse_conversions="double logical"
+
+for c in $sparse_conversions; do
+  echo ""
+  for v in $sparse_vars; do
+    echo "%!assert (class ($c ($v)), \"$c\")"
+  done
+done
+
+char_vars="dq sq"
+bool_vars="b bm"
+real_vars="r s m fs fm dm fdm pm"
+complex_vars="cs cm fcs fcm cdm fcdm"
+signed_int_vars="i8s i16s i32s i64s i8m i16m i32m i64m"
+unsigned_int_vars="ui8s ui16s ui32s ui64s ui8m ui16m ui32m ui64m"
+int_vars="$signed_int_vars $unsigned_int_vars"
+
+bool_conversions="logical"
+float_conversions="double single"
+int_conversions="int8 int16 int32 int64 uint8 uint16 uint32 uint64"
+all_conversions="$bool_conversions $float_conversions $int_conversions"
+
+## Strings can't be converted to logical.
+
+for v in $char_vars; do
+  echo ""
+  for c in $float_conversions $int_conversions; do
+    echo "%!assert (class ($c ($v)), \"$c\")"
+  done
+done
+
+## Octave doesn't have complex integers.
+
+for v in $complex_vars; do
+  echo ""
+  for c in $bool_conversions $float_conversions; do
+    echo "%!assert (class ($c ($v)), \"$c\")"
+  done
+done
+
+## Logical and real-value numeric values should be convertible to any
+## double, single, logical or integer type.
+
+for v in $bool_vars $real_vars $int_vars; do
+  echo ""
+  for c in $all_conversions; do
+    echo "%!assert (class ($c ($v)), \"$c\")"
+  done
+done
+
--- a/test/module.mk	Sat Aug 13 17:49:18 2016 -0400
+++ b/test/module.mk	Sat Aug 13 17:26:10 2016 -0400
@@ -98,6 +98,11 @@
 	$(SHELL) $(srcdir)/test/build-sparse-tests.sh > $@-t && \
 	mv $@-t $@
 
+test/conv.tst: test/build-conv-tests.sh | test/$(octave_dirstamp)
+	$(AM_V_GEN)rm -f $@-t $@ && \
+	$(SHELL) $(srcdir)/test/build-conv-tests.sh > $@-t && \
+	mv $@-t $@
+
 GENERATED_BC_OVERLOADS_DIRS := \
   $(shell $(SHELL) $(srcdir)/test/build-bc-overload-tests.sh test --list-dirs)
 
@@ -112,12 +117,14 @@
 	touch $@
 
 GENERATED_TEST_FILES = \
+  test/conv.tst \
   test/sparse.tst \
   test/.bc-overload-tests-stamp
 
 fixedtestsdir := $(octtestsdir)/fixed
 
 TEST_INST_FILES = \
+  test/conv.tst \
   test/sparse.tst \
   $(GENERATED_BC_OVERLOADS_FILES) \
   $(filter-out test/fntests.m, $(TEST_FILES))
@@ -145,6 +152,7 @@
 BUILT_SOURCES += $(GENERATED_TEST_FILES)
 
 test_EXTRA_DIST += \
+  test/build-conv-tests.sh \
   test/build-sparse-tests.sh \
   test/build-bc-overload-tests.sh \
   test/bc-overloads-expected \