aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/jogamp/opencl/CLException.java20
-rw-r--r--test/com/jogamp/opencl/CLExceptionTest.java37
2 files changed, 54 insertions, 3 deletions
diff --git a/src/com/jogamp/opencl/CLException.java b/src/com/jogamp/opencl/CLException.java
index e713399..4955cc4 100644
--- a/src/com/jogamp/opencl/CLException.java
+++ b/src/com/jogamp/opencl/CLException.java
@@ -14,8 +14,9 @@ public class CLException extends RuntimeException {
public final int errorcode;
public final String error;
- private final static String ERROR_CODE_DOC =
- "http://www.khronos.org/opencl/sdk/1.1/docs/man/xhtml/errors.html";
+ //man page no longer exists
+// private final static String ERROR_CODE_DOC =
+// "http://www.khronos.org/opencl/sdk/1.1/docs/man/xhtml/errors.html";
public CLException(String message) {
super(message);
@@ -24,7 +25,7 @@ public class CLException extends RuntimeException {
}
private CLException(int errorcode, String errorStr, String message) {
- super(message + "\nerror: " + errorStr + " (man page: "+ERROR_CODE_DOC+")");
+ super(message + "\nerror: " + errorStr/* + " (man page: "+ERROR_CODE_DOC+")"*/);
this.error = errorStr;
this.errorcode = errorcode;
}
@@ -113,6 +114,7 @@ public class CLException extends RuntimeException {
case CL_INVALID_BUFFER_SIZE: return "CL_INVALID_BUFFER_SIZE";
case CL_INVALID_MIP_LEVEL: return "CL_INVALID_MIP_LEVEL";
case CL_INVALID_GLOBAL_WORK_SIZE: return "CL_INVALID_GLOBAL_WORK_SIZE";
+ case CL_INVALID_PROPERTY: return "CL_INVALID_PROPERTY";
case CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR: return "CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR";
case CL_PLATFORM_NOT_FOUND_KHR: return "CL_PLATFORM_NOT_FOUND_KHR";
case CL_MISALIGNED_SUB_BUFFER_OFFSET: return "CL_MISALIGNED_SUB_BUFFER_OFFSET";
@@ -169,6 +171,7 @@ public class CLException extends RuntimeException {
case CL_INVALID_BUFFER_SIZE: return new CLInvalidBufferSizeException(message);
case CL_INVALID_MIP_LEVEL: return new CLInvalidMipLevelException(message);
case CL_INVALID_GLOBAL_WORK_SIZE: return new CLInvalidGlobalWorkSizeException(message);
+ case CL_INVALID_PROPERTY: return new CLInvalidPropertyException(message);
case CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR: return new CLInvalidGLSharegroupReferenceKhrException(message);
case CL_PLATFORM_NOT_FOUND_KHR: return new CLPlatformNotFoundKhrException(message);
case CL_MISALIGNED_SUB_BUFFER_OFFSET: return new CLMisalignedSubBufferOffsetException(message);
@@ -684,6 +687,17 @@ public class CLException extends RuntimeException {
}
/**
+ * {@link CLException} thrown on CL.CL_INVALID_PROPERTY errors.
+ * @author Michael Bien
+ */
+ public final static class CLInvalidPropertyException extends CLException {
+ private static final long serialVersionUID = CLException.serialVersionUID+CL_INVALID_PROPERTY;
+ public CLInvalidPropertyException(String message) {
+ super(CL_INVALID_PROPERTY, "CL_INVALID_PROPERTY", message);
+ }
+ }
+
+ /**
* {@link CLException} thrown on CL.CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR errors.
* @author Michael Bien
*/
diff --git a/test/com/jogamp/opencl/CLExceptionTest.java b/test/com/jogamp/opencl/CLExceptionTest.java
new file mode 100644
index 0000000..f6d7ca7
--- /dev/null
+++ b/test/com/jogamp/opencl/CLExceptionTest.java
@@ -0,0 +1,37 @@
+
+package com.jogamp.opencl;
+
+import java.lang.reflect.InvocationTargetException;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Michael Bien
+ */
+public class CLExceptionTest {
+
+ @Test
+ public void testCLExceptions() throws InstantiationException, IllegalAccessException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
+ Class<?>[] subTypes = CLException.class.getDeclaredClasses();
+
+ for (Class<?> type : subTypes) {
+
+ if(type.getName().startsWith(CLException.class.getName()+"$CL")) {
+
+ CLException exception = (CLException) type.getConstructor(String.class).newInstance("foo");
+
+ assertNotNull("can not resolve "+exception, CLException.resolveErrorCode(exception.errorcode));
+
+ try{
+ CLException.checkForError(exception.errorcode, "foo");
+ fail("expected exception for: "+exception.getClass().getName()+" code: "+exception.errorcode);
+ }catch(CLException ex) {
+ assertTrue("wrong instance; expected "+exception.getClass()+" but got "+ex.getClass(),
+ exception.getClass().equals(ex.getClass()));
+ }
+ }
+ }
+ }
+
+}