summaryrefslogtreecommitdiffstats
path: root/java/test/TestH5Arw.java
diff options
context:
space:
mode:
authorAllen Byrne <50328838+byrnHDF@users.noreply.github.com>2021-04-19 22:19:58 (GMT)
committerGitHub <noreply@github.com>2021-04-19 22:19:58 (GMT)
commitc9caf426a88b51a2740a73e8083eb05cbee4a0ce (patch)
tree33729d54929a5daf85bc2669a128e13338f8d9dd /java/test/TestH5Arw.java
parent30861588e0bd10aad25fd8a1eb249ec2ac3944d5 (diff)
downloadhdf5-c9caf426a88b51a2740a73e8083eb05cbee4a0ce.zip
hdf5-c9caf426a88b51a2740a73e8083eb05cbee4a0ce.tar.gz
hdf5-c9caf426a88b51a2740a73e8083eb05cbee4a0ce.tar.bz2
1 10 Merge of long double fix and compiler flags (#531)
* HDFFV-10865 - merge from dev, HDFArray perf fix. * Remove duplicate setting * Whitespace changes after clang format * Undo version 11 clang format changes * Merge CMake changes from develop * test testing script merge from develop * Update supported platforms * PR#3 merge from develop * Merge gcc 10 diagnostics option from develop * Merge #318 OSX changes from develop * Merge small changes from develop * Minor non-space formatting changes * #386 copyright corrections for java folder * Merges from develop #358 patches from vtk #361 fix header guard spelling * Merge updates #358 patches from vtk #361 fix header guard spelling * format fix * Fix missing underscore and make H5public.h closer to dev * Merges from develop #340 clang -Wformat-security warnings #360 Fixed uninitialized warnings header guard underscore cleanup JNI cleanup * format alignment * Add missing test ref file * Merge #380 from develop * Finish java merges from develop * Fix java issues with tests and javadoc * Correct use of attribute access plist * Remove debug code * Remove unused variable * Change file access to read only for java tests * Split clang format operations. * More javadoc comments * Remove pre-split setting * format source * Change windows TS to use older VS. * Mostly all javadoc fixes, one argument rename. * synch file * Merge of long double fix and compiler flags * HDFFV-11229 merge changes from develop * HDFFV-11229 correct test script * HDFFV-11229 update autotools test script for two ref files * HDFFV-11229 merge dev changes for long double display in tools * Committing clang-format changes * minor whitespace * remove unneeded macro * Committing clang-format changes Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Diffstat (limited to 'java/test/TestH5Arw.java')
-rw-r--r--java/test/TestH5Arw.java449
1 files changed, 449 insertions, 0 deletions
diff --git a/java/test/TestH5Arw.java b/java/test/TestH5Arw.java
new file mode 100644
index 0000000..282b736
--- /dev/null
+++ b/java/test/TestH5Arw.java
@@ -0,0 +1,449 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+
+import hdf.hdf5lib.H5;
+import hdf.hdf5lib.HDF5Constants;
+import hdf.hdf5lib.HDFNativeData;
+import hdf.hdf5lib.callbacks.H5A_iterate_cb;
+import hdf.hdf5lib.callbacks.H5A_iterate_t;
+import hdf.hdf5lib.exceptions.HDF5Exception;
+import hdf.hdf5lib.exceptions.HDF5LibraryException;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
+
+public class TestH5Arw {
+ @Rule public TestName testname = new TestName();
+ private static final String H5_INTS_FILE = "tintsattrs.h5";
+ private static final String H5_FLTS_FILE = "tfloatsattrs.h5";
+ private static final int DIM_X = 8;
+ private static final int DIM8_Y = 8;
+ private static final int DIM16_Y = 16;
+ private static final int DIM32_Y = 32;
+ private static final int DIM64_Y = 64;
+ private static final int DIM128_Y = 128;
+ private static final String DATASETU08 = "DU08BITS";
+ private static final String DATASETS08 = "DS08BITS";
+ private static final String DATASETU16 = "DU16BITS";
+ private static final String DATASETS16 = "DS16BITS";
+ private static final String DATASETU32 = "DU32BITS";
+ private static final String DATASETS32 = "DS32BITS";
+ private static final String DATASETU64 = "DU64BITS";
+ private static final String DATASETS64 = "DS64BITS";
+ private static final String DATASETF32 = "DS32BITS";
+ private static final String DATASETF64 = "DS64BITS";
+ private static final String DATASETF128 = "DS128BITS";
+ private static final int RANK = 2;
+ long H5fid = HDF5Constants.H5I_INVALID_HID;
+ long H5aid = HDF5Constants.H5I_INVALID_HID;
+ long H5did = HDF5Constants.H5I_INVALID_HID;
+
+ private final void _closeH5file() throws HDF5LibraryException {
+ if (H5aid >= 0)
+ try {H5.H5Aclose(H5aid);} catch (Exception ex) {}
+ if (H5did >= 0)
+ try {H5.H5Dclose(H5did);} catch (Exception ex) {}
+ if (H5fid > 0)
+ try {H5.H5Fclose(H5fid);} catch (Exception ex) {}
+ }
+
+ public void openH5file(String filename, String dsetname) {
+ try {
+ H5fid = H5.H5Fopen(filename,
+ HDF5Constants.H5F_ACC_RDONLY, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("TestH5Arw._openH5file: " + err);
+ }
+ assertTrue("TestH5Arw._openH5file: H5.H5Fopen: ", H5fid >= 0);
+ try {
+ H5did = H5.H5Dopen(H5fid, dsetname, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("TestH5Arw._openH5file: " + err);
+ }
+ assertTrue("TestH5Arw._openH5file: H5.H5Dopen: ", H5did >= 0);
+ try {
+ H5aid = H5.H5Aopen(H5did, dsetname, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("TestH5Arw._openH5file: " + err);
+ }
+ assertTrue("TestH5Arw._openH5file: H5.H5Aopen: ", H5aid >= 0);
+ }
+
+ @After
+ public void closeH5file() throws HDF5LibraryException {
+ if (H5aid >= 0)
+ try {H5.H5Aclose(H5aid);} catch (Exception ex) {}
+ if (H5did >= 0)
+ try {H5.H5Aclose(H5did);} catch (Exception ex) {}
+ if (H5fid > 0)
+ try {H5.H5Fclose(H5fid);} catch (Exception ex) {}
+ H5fid = HDF5Constants.H5I_INVALID_HID;
+ H5did = HDF5Constants.H5I_INVALID_HID;
+ H5aid = HDF5Constants.H5I_INVALID_HID;
+ System.out.println();
+ }
+
+ @Before
+ public void verifyCount()
+ throws NullPointerException, HDF5Exception {
+ assertTrue("H5 open ids is 0", H5.getOpenIDCount()==0);
+ System.out.print(testname.getMethodName());
+ }
+
+ @Test
+ public void testH5Aread_8bit_ints() {
+ byte[][] attr_data = new byte[DIM_X][DIM8_Y];
+
+ try {
+ openH5file(H5_INTS_FILE, DATASETU08);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("testH5Aread_8bit_ints: openH5file: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_UINT8, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_8bit_ints: H5Aread: " + err);
+ }
+
+ // End access to the attribute and release resources used by it.
+ try {
+ H5.H5Aclose(H5aid);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ }
+
+ // End access to the dataset and release resources used by it.
+ try {
+ H5.H5Dclose(H5did);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ }
+
+ // Open an existing dataset.
+ try {
+ H5did = H5.H5Dopen(H5fid, DATASETS08, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_8bit_ints: H5Dopen: " + err);
+ }
+
+ // Open an existing attribute.
+ try {
+ H5aid = H5.H5Aopen(H5did, DATASETS08, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_8bit_ints: H5Aopen: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_INT8, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_8bit_ints: H5Aread: " + err);
+ }
+ }
+
+ @Test
+ public void testH5Aread_16bit_ints() {
+ short[][] attr_data = new short[DIM_X][DIM16_Y];
+
+ try {
+ openH5file(H5_INTS_FILE, DATASETU16);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("testH5Aread_16bit_ints: openH5file: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_UINT16, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_16bit_ints: H5Aread: " + err);
+ }
+
+ // End access to the attribute and release resources used by it.
+ try {
+ H5.H5Aclose(H5aid);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ }
+
+ // End access to the dataset and release resources used by it.
+ try {
+ H5.H5Dclose(H5did);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ }
+
+ // Open an existing dataset.
+ try {
+ H5did = H5.H5Dopen(H5fid, DATASETS16, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_16bit_ints: H5Dopen: " + err);
+ }
+
+ // Open an existing attribute.
+ try {
+ H5aid = H5.H5Aopen(H5did, DATASETS16, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_16bit_ints: H5Aopen: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_INT16, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_16bit_ints: H5Aread: " + err);
+ }
+ }
+
+ @Test
+ public void testH5Aread_32bit_ints() {
+ int[][] attr_data = new int[DIM_X][DIM16_Y];
+
+ try {
+ openH5file(H5_INTS_FILE, DATASETU32);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("testH5Aread_32bit_ints: openH5file: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_UINT32, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_32bit_ints: H5Aread: " + err);
+ }
+
+ // End access to the attribute and release resources used by it.
+ try {
+ H5.H5Aclose(H5aid);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ }
+
+ // End access to the dataset and release resources used by it.
+ try {
+ H5.H5Dclose(H5did);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ }
+
+ // Open an existing dataset.
+ try {
+ H5did = H5.H5Dopen(H5fid, DATASETS32, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_32bit_ints: H5Dopen: " + err);
+ }
+
+ // Open an existing attribute.
+ try {
+ H5aid = H5.H5Aopen(H5did, DATASETS32, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_32bit_ints: H5Aopen: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_INT32, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_32bit_ints: H5Aread: " + err);
+ }
+ }
+
+ @Test
+ public void testH5Aread_64bit_ints() {
+ long[][] attr_data = new long[DIM_X][DIM64_Y];
+
+ try {
+ openH5file(H5_INTS_FILE, DATASETU64);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("testH5Aread_64bit_ints: openH5file: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_UINT64, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_64bit_ints: H5Aread: " + err);
+ }
+
+ // End access to the attribute and release resources used by it.
+ try {
+ H5.H5Aclose(H5aid);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ }
+
+ // End access to the dataset and release resources used by it.
+ try {
+ H5.H5Dclose(H5did);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ }
+
+ // Open an existing dataset.
+ try {
+ H5did = H5.H5Dopen(H5fid, DATASETS64, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_64bit_ints: H5Dopen: " + err);
+ }
+
+ // Open an existing attribute.
+ try {
+ H5aid = H5.H5Aopen(H5did, DATASETS64, HDF5Constants.H5P_DEFAULT);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_64bit_ints: H5Aopen: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_INT64, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_64bit_ints: H5Aread: " + err);
+ }
+ }
+
+ @Test
+ public void testH5Aread_32bit_floats() {
+ float[][] attr_data = new float[DIM_X][DIM32_Y];
+
+ try {
+ openH5file(H5_FLTS_FILE, DATASETF32);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("testH5Aread_32bit_floats: openH5file: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_FLOAT, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_32bit_floats: H5Aread: " + err);
+ }
+ for (int i = 0; i < DIM_X; i++)
+ assertTrue("testH5Aread_32bit_floats - H5.H5Aread: ", attr_data[i][0] == (32 - i));
+ }
+
+ @Test
+ public void testH5Aread_64bit_floats() {
+ double[][] attr_data = new double[DIM_X][DIM64_Y];
+
+ try {
+ openH5file(H5_FLTS_FILE, DATASETF64);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("testH5Aread_64bit_floats: openH5file: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_DOUBLE, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_64bit_floats: H5Aread: " + err);
+ }
+ for (int i = 0; i < DIM_X; i++)
+ assertTrue("testH5Aread_64bit_floats - H5.H5Aread: ", attr_data[i][0] == (64 - i));
+ }
+
+ @Test
+ public void testH5Aread_128bit_floats() {
+ byte[][][] attr_data = new byte[DIM_X][DIM128_Y][8];
+
+ try {
+ openH5file(H5_FLTS_FILE, DATASETF128);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("testH5Aread_128bit_floats: openH5file: " + err);
+ }
+
+ // Read data.
+ try {
+ H5.H5Aread(H5aid, HDF5Constants.H5T_NATIVE_LDOUBLE, attr_data);
+ }
+ catch (Exception err) {
+ err.printStackTrace();
+ fail("testH5Aread_128bit_floats: H5Aread: " + err);
+ }
+ }
+
+}