Mercurial > octave
changeset 21458:348e335c49dd
Fix failing BIST tests on big-endian systems
* data.cc: Fix base64_encode test relying on little-endian byte order.
* io.tst: Fix fread/fwrite tests relying on little-endian byte order.
author | Mike Miller <mtmiller@octave.org> |
---|---|
date | Wed, 16 Mar 2016 20:52:55 -0700 |
parents | 05ffef4ebf62 |
children | 385b67d48dda |
files | libinterp/corefcn/data.cc test/io.tst |
diffstat | 2 files changed, 36 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/data.cc Wed Mar 16 16:09:03 2016 -0700 +++ b/libinterp/corefcn/data.cc Wed Mar 16 20:52:55 2016 -0700 @@ -7819,7 +7819,15 @@ } /* -%!assert (base64_encode (single (pi)), "2w9JQA==") +%!test +%! ## FIXME: better test for endianness? +%! if (bitunpack (uint16 (1))(1) == 1) +%! expected = "2w9JQA=="; +%! else +%! expected = "QEkP2w=="; +%! endif +%! assert (base64_encode (single (pi)), expected); + %!assert (base64_encode (uint8 ([0 0 0])), "AAAA") %!assert (base64_encode (uint16 ([0 0 0])), "AAAAAAAA") %!assert (base64_encode (uint32 ([0 0 0])), "AAAAAAAAAAAAAAAA")
--- a/test/io.tst Wed Mar 16 16:09:03 2016 -0700 +++ b/test/io.tst Wed Mar 16 20:52:55 2016 -0700 @@ -575,6 +575,8 @@ %!test %! id = tmpfile (); +%! ## FIXME: better test for endianness? +%! big_endian = (bitunpack (uint16 (1))(1) == 0); %! fwrite (id, "abcdefg"); %! frewind (id); %! [data, count] = fread (id); @@ -582,15 +584,23 @@ %! assert (count, 7); %! frewind (id); %! [data, count] = fread (id, 'int16'); -%! assert (data, [25185; 25699; 26213]); +%! expected = [25185; 25699; 26213]; +%! if (big_endian) +%! expected = double (swapbytes (int16 (expected))); +%! endif +%! assert (data, expected); %! assert (count, 3); %! frewind (id); %! [data, count] = fread (id, [10, 2], 'int16'); -%! assert (data, [25185; 25699; 26213]); +%! assert (data, expected); %! assert (count, 3); %! frewind (id); %! [data, count] = fread (id, [2, 10], 'int16'); -%! assert (data, [25185, 26213; 25699, 0]); +%! expected = [25185, 26213; 25699, 0]; +%! if (big_endian) +%! expected = double (swapbytes (int16 (expected))); +%! endif +%! assert (data, expected); %! assert (count, 3); %! fclose (id); @@ -623,19 +633,31 @@ %!test %! id = tmpfile (); +%! ## FIXME: better test for endianness? +%! big_endian = (bitunpack (uint16 (1))(1) == 0); %! fwrite (id, char (0:15)); %! frewind (id); %! [data, count] = fread (id, [1, Inf], "4*uint16", 3); -%! assert (data, [256, 770, 1284, 1798, 3083, 3597]); +%! expected = [256, 770, 1284, 1798, 3083, 3597]; +%! if (big_endian) +%! expected = double (swapbytes (uint16 (expected))); +%! endif +%! assert (data, expected); %! assert (count, 6); %! fclose (id); %!test %! id = tmpfile (); +%! ## FIXME: better test for endianness? +%! big_endian = (bitunpack (uint16 (1))(1) == 0); %! fwrite (id, char (0:15)); %! frewind (id); %! [data, count] = fread (id, [3, Inf], "4*uint16", 3); -%! assert (data, [256, 1798; 770, 3083; 1284, 3597]); +%! expected = [256, 1798; 770, 3083; 1284, 3597]; +%! if (big_endian) +%! expected = double (swapbytes (uint16 (expected))); +%! endif +%! assert (data, expected); %! assert (count, 6); %! fclose (id);