Mercurial > octave
changeset 21389:64efef931bd0
Add BIST tests for bitpack, bitunpack, isglobal, and typecast
* typecast.cc (Ftypecast, Fbitpack, Fbitunpack): Add BIST tests.
* variables.cc (Fisglobal): Add BIST tests.
author | Mike Miller <mtmiller@octave.org> |
---|---|
date | Tue, 01 Mar 2016 19:52:36 -0800 |
parents | b9cb3a96849a |
children | 4f994c3f88fc |
files | libinterp/corefcn/typecast.cc libinterp/corefcn/variables.cc |
diffstat | 2 files changed, 83 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/typecast.cc Tue Mar 01 18:13:40 2016 -0800 +++ b/libinterp/corefcn/typecast.cc Tue Mar 01 19:52:36 2016 -0800 @@ -256,6 +256,34 @@ return retval; } +/* +%!assert (typecast (int64 (0), "char"), char (zeros (1, 8))) +%!assert (typecast (int64 (0), "int8"), zeros (1, 8, "int8")) +%!assert (typecast (int64 (0), "uint8"), zeros (1, 8, "uint8")) +%!assert (typecast (int64 (0), "int16"), zeros (1, 4, "int16")) +%!assert (typecast (int64 (0), "uint16"), zeros (1, 4, "uint16")) +%!assert (typecast (int64 (0), "int32"), zeros (1, 2, "int32")) +%!assert (typecast (int64 (0), "uint32"), zeros (1, 2, "uint32")) +%!assert (typecast (int64 (0), "int64"), zeros (1, 1, "int64")) +%!assert (typecast (int64 (0), "uint64"), zeros (1, 1, "uint64")) +%!assert (typecast (int64 (0), "single"), zeros (1, 2, "single")) +%!assert (typecast (int64 (0), "double"), 0) +%!assert (typecast (int64 (0), "single complex"), single (0)) +%!assert (typecast (int64 ([0 0]), "double complex"), 0) + +%!assert (typecast ([], "double"), []) +%!assert (typecast (0, "double"), 0) +%!assert (typecast (inf, "double"), inf) +%!assert (typecast (-inf, "double"), -inf) +%!assert (typecast (nan, "double"), nan) + +%!error typecast () +%!error typecast (1) +%!error typecast (1, 2, 3) +%!error typecast (1, "invalid") +%!error typecast (int8 (0), "double") +*/ + template <typename ArrayType> ArrayType do_bitpack (const boolNDArray& bitp) @@ -376,6 +404,30 @@ return retval; } +/* +%!assert (bitpack (zeros (1, 8, "logical"), "char"), "\0") +%!assert (bitpack (zeros (1, 8, "logical"), "int8"), int8 (0)) +%!assert (bitpack (zeros (1, 8, "logical"), "uint8"), uint8 (0)) +%!assert (bitpack (zeros (1, 16, "logical"), "int16"), int16 (0)) +%!assert (bitpack (zeros (1, 16, "logical"), "uint16"), uint16 (0)) +%!assert (bitpack (zeros (1, 32, "logical"), "int32"), int32 (0)) +%!assert (bitpack (zeros (1, 32, "logical"), "uint32"), uint32 (0)) +%!assert (bitpack (zeros (1, 64, "logical"), "int64"), int64 (0)) +%!assert (bitpack (zeros (1, 64, "logical"), "uint64"), uint64 (0)) +%!assert (bitpack (zeros (1, 32, "logical"), "single"), single (0)) +%!assert (bitpack (zeros (1, 64, "logical"), "double"), double (0)) +%!assert (bitpack (zeros (1, 64, "logical"), "single complex"), single (0)) +%!assert (bitpack (zeros (1, 128, "logical"), "double complex"), double (0)) + +%!error bitpack () +%!error bitpack (1) +%!error bitpack (1, 2, 3) +%!error bitpack (1, "invalid") +%!error bitpack (1, "double") +%!error bitpack (false, "invalid") +%!error bitpack (false, "double") +*/ + template <typename ArrayType> boolNDArray do_bitunpack (const ArrayType& array) @@ -485,3 +537,24 @@ return retval; } + +/* +%!assert (bitunpack ("\0"), zeros (1, 8, "logical")) +%!assert (bitunpack (int8 (0)), zeros (1, 8, "logical")) +%!assert (bitunpack (uint8 (0)), zeros (1, 8, "logical")) +%!assert (bitunpack (int16 (0)), zeros (1, 16, "logical")) +%!assert (bitunpack (uint16 (0)), zeros (1, 16, "logical")) +%!assert (bitunpack (int32 (0)), zeros (1, 32, "logical")) +%!assert (bitunpack (uint32 (0)), zeros (1, 32, "logical")) +%!assert (bitunpack (int64 (0)), zeros (1, 64, "logical")) +%!assert (bitunpack (uint64 (0)), zeros (1, 64, "logical")) +%!assert (bitunpack (single (0)), zeros (1, 32, "logical")) +%!assert (bitunpack (double (0)), zeros (1, 64, "logical")) +%!assert (bitunpack (complex (single (0))), zeros (1, 64, "logical")) +%!assert (bitunpack (complex (double (0))), zeros (1, 128, "logical")) + +%!error bitunpack () +%!error bitunpack (1, 2) +%!error bitunpack ({}) +*/ +
--- a/libinterp/corefcn/variables.cc Tue Mar 01 18:13:40 2016 -0800 +++ b/libinterp/corefcn/variables.cc Tue Mar 01 19:52:36 2016 -0800 @@ -355,6 +355,16 @@ return do_isglobal (args); } +/* +%!test +%! global x; +%! assert (isglobal ("x"), true) + +%!error isglobal () +%!error isglobal ("a", "b") +%!error isglobal (1) +*/ + static octave_value safe_symbol_lookup (const std::string& symbol_name) {