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);