mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-21 07:51:46 +08:00
258 lines
7.9 KiB
Java
258 lines
7.9 KiB
Java
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* Copyright by The HDF Group. *
|
|
* Copyright by the Board of Trustees of the University of Illinois. *
|
|
* 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 files COPYING and Copyright.html. COPYING can be found at the root *
|
|
* of the source code distribution tree; Copyright.html can be found at the *
|
|
* root level of an installed copy of the electronic HDF5 document set and *
|
|
* is linked from the top-level documents page. It can also be found at *
|
|
* http://hdfgroup.org/HDF5/doc/Copyright.html. 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.assertEquals;
|
|
import static org.junit.Assert.assertFalse;
|
|
import static org.junit.Assert.assertTrue;
|
|
import static org.junit.Assert.fail;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.ObjectInputStream;
|
|
import java.io.ObjectOutputStream;
|
|
|
|
import hdf.hdf5lib.H5;
|
|
import hdf.hdf5lib.HDF5Constants;
|
|
|
|
import org.junit.After;
|
|
import org.junit.Before;
|
|
import org.junit.Ignore;
|
|
import org.junit.Rule;
|
|
import org.junit.Test;
|
|
import org.junit.rules.TestName;
|
|
|
|
/**
|
|
* @author xcao
|
|
*
|
|
*/
|
|
public class TestH5 {
|
|
@Rule public TestName testname = new TestName();
|
|
@Before
|
|
public void showTestName() {
|
|
System.out.print(testname.getMethodName());
|
|
}
|
|
@After
|
|
public void nextTestName() {
|
|
System.out.println();
|
|
}
|
|
|
|
/**
|
|
* Test method for {@link hdf.hdf5lib.H5#J2C(int)}.
|
|
* NOTE:
|
|
* H5F_ACC_DEBUG no longer prints any special debug info. The symbol is
|
|
* being retained and will be listed as deprecated in HDF5 1.10.0.
|
|
*/
|
|
@Test
|
|
public void testJ2C() {
|
|
int H5F_ACC_RDONLY = 0x0000;
|
|
int H5F_ACC_RDWR = 0x0001;
|
|
int H5F_ACC_TRUNC = 0x0002;
|
|
int H5F_ACC_EXCL = 0x0004;
|
|
int H5F_ACC_DEBUG = 0x0000; // HDFFV-1074 was 0x0008;
|
|
int H5F_ACC_CREAT = 0x0010;
|
|
int H5F_OBJ_FILE = 0x0001;
|
|
int H5F_OBJ_DATASET = 0x0002;
|
|
int H5F_OBJ_GROUP = 0x0004;
|
|
int H5F_OBJ_DATATYPE = 0x0008;
|
|
int H5F_OBJ_ATTR = 0x0010;
|
|
int H5F_OBJ_ALL = H5F_OBJ_FILE | H5F_OBJ_DATASET | H5F_OBJ_GROUP
|
|
| H5F_OBJ_DATATYPE | H5F_OBJ_ATTR;
|
|
int H5F_OBJ_LOCAL = 0x0020;
|
|
|
|
int definedValues[] = { H5F_ACC_RDONLY, H5F_ACC_RDWR, H5F_ACC_TRUNC,
|
|
H5F_ACC_EXCL, H5F_ACC_DEBUG, H5F_ACC_CREAT, H5F_OBJ_FILE,
|
|
H5F_OBJ_DATASET, H5F_OBJ_GROUP, H5F_OBJ_DATATYPE, H5F_OBJ_ATTR,
|
|
H5F_OBJ_ALL, H5F_OBJ_LOCAL };
|
|
|
|
int j2cValues[] = { HDF5Constants.H5F_ACC_RDONLY,
|
|
HDF5Constants.H5F_ACC_RDWR, HDF5Constants.H5F_ACC_TRUNC,
|
|
HDF5Constants.H5F_ACC_EXCL, H5F_ACC_DEBUG,
|
|
HDF5Constants.H5F_ACC_CREAT, HDF5Constants.H5F_OBJ_FILE,
|
|
HDF5Constants.H5F_OBJ_DATASET, HDF5Constants.H5F_OBJ_GROUP,
|
|
HDF5Constants.H5F_OBJ_DATATYPE, HDF5Constants.H5F_OBJ_ATTR,
|
|
HDF5Constants.H5F_OBJ_ALL, HDF5Constants.H5F_OBJ_LOCAL };
|
|
|
|
for (int i = 0; i < definedValues.length; i++) {
|
|
assertEquals(definedValues[i], j2cValues[i]);
|
|
}
|
|
|
|
assertFalse(H5F_ACC_RDONLY == HDF5Constants.H5F_ACC_RDWR);
|
|
assertFalse(H5F_OBJ_FILE == HDF5Constants.H5F_OBJ_GROUP);
|
|
}
|
|
|
|
/**
|
|
* Test method for {@link hdf.hdf5lib.H5#H5error_off()}.
|
|
*/
|
|
@Test
|
|
public void testH5error_off() {
|
|
try {
|
|
H5.H5error_off();
|
|
}
|
|
catch (Throwable err) {
|
|
fail("H5.H5error_off failed: " + err);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Test method for {@link hdf.hdf5lib.H5#H5open()}.
|
|
*/
|
|
@Test
|
|
public void testH5open() {
|
|
try {
|
|
H5.H5open();
|
|
}
|
|
catch (Throwable err) {
|
|
fail("H5.H5open failed: " + err);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Test method for {@link hdf.hdf5lib.H5#H5garbage_collect()}.
|
|
*/
|
|
@Test
|
|
public void testH5garbage_collect() {
|
|
try {
|
|
H5.H5garbage_collect();
|
|
}
|
|
catch (Throwable err) {
|
|
fail("H5.H5garbage_collect failed: " + err);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Test method for
|
|
* {@link hdf.hdf5lib.H5#H5set_free_list_limits(int, int, int, int, int, int)}
|
|
* .
|
|
*/
|
|
@Test
|
|
public void testH5set_free_list_limits() {
|
|
int reg_global_lim = 1;
|
|
int reg_list_lim = 1;
|
|
int arr_global_lim = 1;
|
|
int arr_list_lim = 1;
|
|
int blk_global_lim = 1;
|
|
int blk_list_lim = 1;
|
|
|
|
try {
|
|
H5.H5set_free_list_limits(reg_global_lim, reg_list_lim,
|
|
arr_global_lim, arr_list_lim, blk_global_lim, blk_list_lim);
|
|
}
|
|
catch (Throwable err) {
|
|
fail("H5.H5set_free_list_limits failed: " + err);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Test method for {@link hdf.hdf5lib.H5#H5get_libversion(int[])}.
|
|
*/
|
|
@Test
|
|
public void testH5get_libversion() {
|
|
int libversion[] = { 1, 9, 0 };
|
|
|
|
try {
|
|
H5.H5get_libversion(libversion);
|
|
}
|
|
catch (Throwable err) {
|
|
fail("H5.H5get_libversion: " + err);
|
|
}
|
|
|
|
for (int i = 0; i < 2; i++)
|
|
assertEquals(H5.LIB_VERSION[i], libversion[i]);
|
|
|
|
for (int i = 0; i < 2; i++)
|
|
assertFalse(libversion[i] == 0);
|
|
}
|
|
|
|
/**
|
|
* Test method for
|
|
* {@link hdf.hdf5lib.H5#H5check_version(int, int, int)}.
|
|
*/
|
|
@Test
|
|
public void testH5check_version() {
|
|
int majnum = 1, minnum = 9, relnum = 0;
|
|
|
|
try {
|
|
H5.H5check_version(majnum, minnum, relnum);
|
|
}
|
|
catch (Throwable err) {
|
|
fail("H5.H5check_version failed: " + err);
|
|
}
|
|
|
|
try {
|
|
H5.H5check_version(-1, 0, 0);
|
|
}
|
|
catch (Throwable err) {
|
|
fail("H5.H5check_version failed: " + err);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void testIsSerializable() {
|
|
H5 test = new H5();
|
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
ObjectOutputStream oos;
|
|
try {
|
|
oos = new ObjectOutputStream(out);
|
|
oos.writeObject(test);
|
|
oos.close();
|
|
}
|
|
catch (IOException err) {
|
|
err.printStackTrace();
|
|
fail("ObjectOutputStream failed: " + err);
|
|
}
|
|
assertTrue(out.toByteArray().length > 0);
|
|
|
|
}
|
|
|
|
@SuppressWarnings("static-access")
|
|
@Test
|
|
public void serializeToDisk()
|
|
{
|
|
try {
|
|
H5 test = new H5();
|
|
|
|
FileOutputStream fos = new FileOutputStream("temph5.ser");
|
|
ObjectOutputStream oos = new ObjectOutputStream(fos);
|
|
oos.writeObject(test);
|
|
oos.close();
|
|
}
|
|
catch (Exception ex) {
|
|
fail("Exception thrown during test: " + ex.toString());
|
|
}
|
|
|
|
try {
|
|
FileInputStream fis = new FileInputStream("temph5.ser");
|
|
ObjectInputStream ois = new ObjectInputStream(fis);
|
|
H5 test = (hdf.hdf5lib.H5) ois.readObject();
|
|
ois.close();
|
|
|
|
assertTrue("H5.LIB_VERSION[0]", test.LIB_VERSION[0]==H5.LIB_VERSION[0]);
|
|
assertTrue("H5.LIB_VERSION[1]", test.LIB_VERSION[1]==H5.LIB_VERSION[1]);
|
|
// assertTrue("H5.LIB_VERSION[2]", test.LIB_VERSION[2]==H5.LIB_VERSION[2]);
|
|
|
|
// Clean up the file
|
|
new File("temph5.ser").delete();
|
|
}
|
|
catch (Exception ex) {
|
|
fail("Exception thrown during test: " + ex.toString());
|
|
}
|
|
}
|
|
}
|