| // Test case to check typemaps in various.i | |
| import java_lib_various.*; | |
| public class java_lib_various_runme { | |
| static { | |
| try { | |
| System.loadLibrary("java_lib_various"); | |
| } catch (UnsatisfiedLinkError e) { | |
| System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e); | |
| System.exit(1); | |
| } | |
| } | |
| public static void main(String argv[]) { | |
| // STRING_ARRAY typemap parameter | |
| String animals[] = {"Cat","Dog","Cow","Goat"}; | |
| if (java_lib_various.check_animals(animals) != 1) | |
| throw new RuntimeException("check_animals failed"); | |
| // STRING_ARRAY typemap return value | |
| String expected[] = { "Dave", "Mike", "Susan", "John", "Michelle" }; | |
| String got[] = java_lib_various.get_names(); | |
| for (int i=0; i<got.length; i++) | |
| if ( !got[i].equals(expected[i]) ) | |
| throw new RuntimeException("Name failed " + i + " " + got[i] + "|" + expected[i]); | |
| // STRING_ARRAY variable getter | |
| String langscheck[] = { "Hungarian", "Afrikaans", "Norwegian" }; | |
| String langs[] = java_lib_various.getLanguages(); | |
| for (int i=0; i<langs.length; i++) | |
| if ( !langs[i].equals(langscheck[i]) ) | |
| throw new RuntimeException("Languages read failed " + i + " " + langs[i] + "|" + langscheck[i]); | |
| // STRING_ARRAY variable setter | |
| String newLangs[] = { "French", "Italian", "Spanish" }; | |
| java_lib_various.setLanguages(newLangs); | |
| // STRING_ARRAY variable getter | |
| langs = java_lib_various.getLanguages(); | |
| for (int i=0; i<langs.length; i++) | |
| if ( !langs[i].equals(newLangs[i]) ) | |
| throw new RuntimeException("Languages verify failed " + i + " " + langs[i] + "|" + newLangs[i]); | |
| // STRING_ARRAY null | |
| java_lib_various.setLanguages(null); | |
| if (java_lib_various.getLanguages() != null) | |
| throw new RuntimeException("languages should be null"); | |
| // STRING_RET test | |
| { | |
| String stringOutArray[] = { "" }; | |
| java_lib_various.char_ptr_ptr_out(stringOutArray); | |
| if (!stringOutArray[0].equals("returned string")) | |
| throw new RuntimeException("Test failed: expected: returned string. got: " + stringOutArray[0]); | |
| } | |
| // STRING_RET null array test. Check that exception is thrown. | |
| try { | |
| String stringOutArray[] = null; | |
| java_lib_various.char_ptr_ptr_out(stringOutArray); | |
| throw new RuntimeException("Test failed: null array"); | |
| } catch (NullPointerException e) { | |
| } | |
| // STRING_RET empty array test. Check that exception is thrown. | |
| try { | |
| String stringOutArray[] = {}; | |
| java_lib_various.char_ptr_ptr_out(stringOutArray); | |
| throw new RuntimeException("Test failed: empty array"); | |
| } catch (IndexOutOfBoundsException e) { | |
| } | |
| // BYTE typemap check | |
| byte b[] = new byte[20]; | |
| java_lib_various.charout(b); | |
| String byjovestring = new String("by jove"); | |
| byte byjove[] = byjovestring.getBytes(); | |
| for (int i=0; i<byjovestring.length(); i++) { | |
| if (byjove[i] != b[i]) | |
| throw new RuntimeException("By jove, it failed: [" + new String(b) + "]"); | |
| } | |
| // NIOBUFFER typemap check | |
| java.nio.ByteBuffer buf = java.nio.ByteBuffer.allocateDirect(10); | |
| java_lib_various.niobuffer_fill_hello(buf); | |
| if ( | |
| (char)buf.get(0) != 'h' || | |
| (char)buf.get(1) != 'e' || | |
| (char)buf.get(2) != 'l' || | |
| (char)buf.get(3) != 'l' || | |
| (char)buf.get(4) != 'o' | |
| ) | |
| throw new RuntimeException( | |
| "nio test failed: " + | |
| (char)buf.get(0) + | |
| (char)buf.get(1) + | |
| (char)buf.get(2) + | |
| (char)buf.get(3) + | |
| (char)buf.get(4) | |
| ); | |
| } | |
| } |