test_big_endian_file.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import numpy as np
  2. from h5py import File
  3. from .common import TestCase, make_name
  4. from .data_files import get_data_file_path
  5. def test_vlen_big_endian():
  6. with File(get_data_file_path("vlen_string_s390x.h5")) as f:
  7. assert f.attrs["created_on_s390x"] == 1
  8. dset = f["DSvariable"]
  9. assert dset[0] == b"Parting"
  10. assert dset[1] == b"is such"
  11. assert dset[2] == b"sweet"
  12. assert dset[3] == b"sorrow..."
  13. dset = f["DSLEfloat"]
  14. assert dset[0] == 3.14
  15. assert dset[1] == 1.61
  16. assert dset[2] == 2.71
  17. assert dset[3] == 2.41
  18. assert dset[4] == 1.2
  19. assert dset.dtype == "<f8"
  20. # Same float values with big endianness
  21. assert f["DSBEfloat"][0] == 3.14
  22. assert f["DSBEfloat"].dtype == ">f8"
  23. assert f["DSLEint"][0] == 1
  24. assert f["DSLEint"].dtype == "<u8"
  25. # Same int values with big endianness
  26. assert f["DSBEint"][0] == 1
  27. assert f["DSBEint"].dtype == ">i8"
  28. class TestEndianess(TestCase):
  29. def test_simple_int_be(self):
  30. name = make_name()
  31. fname = self.mktemp()
  32. arr = np.ndarray(shape=(1,), dtype=">i4", buffer=bytearray([0, 1, 3, 2]))
  33. be_number = 0 * 256 ** 3 + 1 * 256 ** 2 + 3 * 256 ** 1 + 2 * 256 ** 0
  34. with File(fname, mode="w") as f:
  35. f.create_dataset(name, data=arr)
  36. with File(fname, mode="r") as f:
  37. assert f[name][()][0] == be_number