1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group.                                               *
3  * Copyright by the Board of Trustees of the University of Illinois.         *
4  * All rights reserved.                                                      *
5  *                                                                           *
6  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
7  * terms governing use, modification, and redistribution, is contained in    *
8  * the COPYING file, which can be found at the root of the source code       *
9  * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.  *
10  * If you do not have access to either file, you may request a copy from     *
11  * help@hdfgroup.org.                                                        *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13 
14 package test;
15 
16 import static org.junit.Assert.assertEquals;
17 import static org.junit.Assert.assertFalse;
18 import static org.junit.Assert.assertNotNull;
19 import static org.junit.Assert.assertTrue;
20 import static org.junit.Assert.fail;
21 
22 import java.util.ArrayList;
23 
24 import hdf.hdf5lib.H5;
25 import hdf.hdf5lib.HDF5Constants;
26 import hdf.hdf5lib.exceptions.HDF5LibraryException;
27 import hdf.hdf5lib.callbacks.H5E_walk_cb;
28 import hdf.hdf5lib.callbacks.H5E_walk_t;
29 import hdf.hdf5lib.structs.H5E_error2_t;
30 
31 import org.junit.After;
32 import org.junit.Before;
33 import org.junit.Ignore;
34 import org.junit.Rule;
35 import org.junit.Test;
36 import org.junit.rules.TestName;
37 
38 public class TestH5Eparams {
39     @Rule public TestName testname = new TestName();
40     long hdf_java_classid = -1;
41     long current_stackid = -1;
42 
43     @Before
H5Eget_stack_class()44     public void H5Eget_stack_class() {
45         assertTrue("H5 open ids is 0",H5.getOpenIDCount()==0);
46         System.out.print(testname.getMethodName());
47 
48         hdf_java_classid = -1;
49         try {
50             hdf_java_classid = H5.H5Eregister_class("HDF-Java-Error", "hdf-java", "2.5");
51             current_stackid = H5.H5Eget_current_stack();
52         }
53         catch (Throwable err) {
54             err.printStackTrace();
55             fail("H5.H5Eget_stack_class: " + err);
56         }
57     }
58 
59     @After
H5Erestore_stack_class()60     public void H5Erestore_stack_class() {
61         try {
62             H5.H5Eunregister_class(hdf_java_classid);
63             hdf_java_classid = -1;
64             H5.H5Eclose_stack(current_stackid);
65             current_stackid = -1;
66         }
67         catch (Throwable err) {
68             err.printStackTrace();
69             fail("H5.H5Erestore_stack_class: " + err);
70         }
71         System.out.println();
72     }
73 
74     @Test
testH5Eget_class_name()75     public void testH5Eget_class_name() {
76         try {
77             String class_name = H5.H5Eget_class_name(hdf_java_classid);
78             assertNotNull("H5.H5Eget_class_name: " + class_name, class_name);
79             assertEquals("H5.H5Eget_class_name: ", "HDF-Java-Error", class_name);
80         }
81         catch (Throwable err) {
82             err.printStackTrace();
83             fail("H5.H5Eget_class_name: " + err);
84         }
85     }
86 
87     @Test
testH5Eprint2()88     public void testH5Eprint2() {
89         try {
90             assertFalse(current_stackid < 0);
91             H5.H5Eprint2(current_stackid, null);
92         }
93         catch (Throwable err) {
94             err.printStackTrace();
95             fail("H5.H5Eprint2: " + err);
96         }
97     }
98 
99     @Ignore("Tested with create_msg_major[minor]")
100     public void testH5Eclose_msg() {
101         fail("Not yet implemented");
102     }
103 
104     @Test(expected = NullPointerException.class)
105     public void testH5Ecreate_msg_name_null() throws Throwable {
106         H5.H5Ecreate_msg(hdf_java_classid, HDF5Constants.H5E_MAJOR, null);
107     }
108 
109     @Test
110     public void testH5Ecreate_msg_major() {
111         try {
112             long err_id = H5.H5Ecreate_msg(hdf_java_classid, HDF5Constants.H5E_MAJOR, "Error in Test");
113             assertFalse("H5.H5Ecreate_msg_major: " + err_id, err_id < 0);
114             H5.H5Eclose_msg(err_id);
115         }
116         catch (Throwable err) {
117             err.printStackTrace();
118             fail("H5.H5Ecreate_msg_major: " + err);
119         }
120     }
121 
122     @Test
123     public void testH5Ecreate_msg_minor() {
124         try {
125             long err_id = H5.H5Ecreate_msg(hdf_java_classid, HDF5Constants.H5E_MINOR, "Error in Test Function");
126             assertFalse("H5.H5Ecreate_msg_minor: " + err_id, err_id < 0);
127             H5.H5Eclose_msg(err_id);
128         }
129         catch (Throwable err) {
130             err.printStackTrace();
131             fail("H5.H5Ecreate_msg_minor: " + err);
132         }
133     }
134 
135     @Test
136     public void testH5Eget_msg() {
137         int[] error_msg_type = { HDF5Constants.H5E_MINOR };
138         long err_id = -1;
139         String msg = null;
140         try {
141             err_id = H5.H5Ecreate_msg(hdf_java_classid, HDF5Constants.H5E_MAJOR, "Error in Test");
142         }
143         catch (Throwable err) {
144             err.printStackTrace();
145             fail("H5.H5Eget_msg: " + err);
146         }
147         assertFalse("H5.H5Eget_msg: H5Ecreate_msg - " + err_id, err_id < 0);
148         try {
149             msg = H5.H5Eget_msg(err_id, error_msg_type);
150         }
151         catch (Throwable err) {
152             err.printStackTrace();
153             fail("H5.H5Eget_msg: " + err);
154         }
155         assertNotNull("H5.H5Eget_msg: " + msg, msg);
156         assertEquals("H5.H5Eget_msg: ", "Error in Test", msg);
157         assertEquals("H5.H5Eget_msg: ", HDF5Constants.H5E_MAJOR, error_msg_type[0]);
158         try {
159             H5.H5Eclose_msg(err_id);
160         }
161         catch (Throwable err) {
162             err.printStackTrace();
163             fail("H5.H5Eget_msg: " + err);
164         }
165     }
166 
167     @Test
168     public void testH5Ecreate_stack() {
169         long stk_id = -1;
170         try {
171             stk_id = H5.H5Ecreate_stack();
172         }
173         catch (Throwable err) {
174             err.printStackTrace();
175             fail("H5.H5Ecreate_stack: " + err);
176         }
177         assertFalse("H5.H5Ecreate_stack: " + stk_id, stk_id < 0);
178         try {
179             H5.H5Eclose_stack(stk_id);
180         }
181         catch (Throwable err) {
182             err.printStackTrace();
183             fail("H5.H5Ecreate_stack: " + err);
184         }
185     }
186 
187     @Test
188     public void testH5EprintInt() {
189         assertFalse(current_stackid < 0);
190         try {
191             H5.H5Eprint2(current_stackid, null);
192         }
193         catch (Throwable err) {
194             err.printStackTrace();
195             fail("H5.H5EprintInt: " + err);
196         }
197     }
198 
199     @Test
200     public void testH5EclearInt() {
201         try {
202             H5.H5Eclear(current_stackid);
203         }
204         catch (Throwable err) {
205             err.printStackTrace();
206             fail("H5.H5EclearInt: " + err);
207         }
208     }
209 
210     @Test
211     public void testH5Eclear2() {
212         try {
213             H5.H5Eclear2(current_stackid);
214         }
215         catch (Throwable err) {
216             err.printStackTrace();
217             fail("H5.H5Eclear2: " + err);
218         }
219     }
220 
221     @Test
222     public void testH5Eauto_is_v2() {
223         boolean is_v2 = false;
224         try {
225             is_v2 = H5.H5Eauto_is_v2(current_stackid);
226         }
227         catch (Throwable err) {
228             err.printStackTrace();
229             fail("H5.H5Eauto_is_v2: " + err);
230         }
231         assertTrue("H5.H5Eauto_is_v2: ", is_v2);
232     }
233 
234     @Test
235     public void testH5Eget_num() {
236         long num_msg = -1;
237         try {
238             num_msg = H5.H5Eget_num(current_stackid);
239         }
240         catch (Throwable err) {
241             err.printStackTrace();
242             fail("H5.H5Eget_num: " + err);
243         }
244         assertTrue("H5.H5Eget_num", num_msg == 0);
245     }
246 
247     @Test
248     public void testH5Eget_num_with_msg() {
249         try {
250             H5.H5Eset_current_stack(current_stackid);
251         }
252         catch (Throwable err) {
253             err.printStackTrace();
254             fail("H5.H5Epop: " + err);
255         }
256         try {
257             H5.H5Fopen("test", 0, 1);
258         }
259         catch (Throwable err) {
260         }
261 
262         // save current stack contents
263         try {
264             current_stackid = H5.H5Eget_current_stack();
265         }
266         catch (HDF5LibraryException err) {
267             err.printStackTrace();
268             fail("H5.H5Epop: " + err);
269         }
270 
271         long num_msg = -1;
272         try {
273             num_msg = H5.H5Eget_num(current_stackid);
274         }
275         catch (Throwable err) {
276             err.printStackTrace();
277             fail("H5.H5Epop: " + err);
278         }
279         assertTrue("H5.H5Eget_num_with_msg #:" + num_msg, num_msg > 0);
280     }
281 
282 }
283