| import char_strings.*; | |
| public class char_strings_runme { | |
| static { | |
| try { | |
| System.loadLibrary("char_strings"); | |
| } 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); | |
| } | |
| } | |
| private static String CPLUSPLUS_MSG = "A message from the deep dark world of C++, where anything is possible."; | |
| private static String OTHERLAND_MSG = "Little message from the safe world."; | |
| public static void main(String argv[]) { | |
| long count = 10000; | |
| long i = 0; | |
| // get functions | |
| for (i=0; i<count; i++) { | |
| String str = char_strings.GetCharHeapString(); | |
| if (!str.equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test char get 1 failed, iteration " + i); | |
| char_strings.DeleteCharHeapString(); | |
| } | |
| for (i=0; i<count; i++) { | |
| String str = char_strings.GetConstCharProgramCodeString(); | |
| if (!str.equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test char get 2 failed, iteration " + i); | |
| char_strings.DeleteCharHeapString(); | |
| } | |
| for (i=0; i<count; i++) { | |
| String str = char_strings.GetCharStaticString(); | |
| if (!str.equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test char get 3 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| String str = char_strings.GetCharStaticStringFixed(); | |
| if (!str.equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test char get 4 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| String str = char_strings.GetConstCharStaticStringFixed(); | |
| if (!str.equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test char get 5 failed, iteration " + i); | |
| } | |
| // set functions | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetCharHeapString(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char set 1 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetCharStaticString(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char set 2 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetCharArrayStaticString(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char set 3 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetConstCharHeapString(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char set 4 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetConstCharStaticString(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char set 5 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetConstCharArrayStaticString(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char set 6 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetCharConstStaticString(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char set 7 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetConstCharConstStaticString(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char set 8 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetConstCharTypedefString(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char set 9 failed, iteration " + i); | |
| } | |
| // get set function | |
| for (i=0; i<count; i++) { | |
| String ping = OTHERLAND_MSG + i; | |
| String pong = char_strings.CharPingPong(ping); | |
| if (!ping.equals(pong)) | |
| throw new RuntimeException("Test PingPong 1 failed.\nExpected:" + ping + "\nReceived:" + pong); | |
| } | |
| for (i=0; i<count; i++) { | |
| String ping = OTHERLAND_MSG + i; | |
| String pong = char_strings.CharArrayPingPong(ping); | |
| if (!ping.equals(pong)) | |
| throw new RuntimeException("Test PingPong 2 failed.\nExpected:" + ping + "\nReceived:" + pong); | |
| } | |
| for (i=0; i<count; i++) { | |
| String ping = "Ping" + i; // char[16] buffer, keep short enough to fit | |
| String pong = char_strings.CharArrayDimsPingPong(ping); | |
| if (!ping.equals(pong)) | |
| throw new RuntimeException("Test PingPong 3 failed.\nExpected:" + ping + "\nReceived:" + pong); | |
| } | |
| if (char_strings.CharArrayDimsLength("Ping") != 4) | |
| throw new RuntimeException("Test CharArrayDimsLength failed"); | |
| if (char_strings.CharArrayDimsLength("0123456789abcde") != 15) | |
| throw new RuntimeException("Test CharArrayDimsLength failed"); | |
| try { | |
| char_strings.CharArrayDimsLength("0123456789abcdef"); | |
| throw new RuntimeException("Test CharArrayDimsLength overlong string failed"); | |
| } catch (IllegalArgumentException e) { | |
| } | |
| // variables | |
| for (i=0; i<count; i++) { | |
| char_strings.setGlobal_char(OTHERLAND_MSG + i); | |
| if (!char_strings.getGlobal_char().equals(OTHERLAND_MSG + i)) | |
| throw new RuntimeException("Test variables 1 failed, iteration " + i); | |
| } | |
| // global_char_array1 is a char[] with no size, so it is read only | |
| try { | |
| char_strings.class.getMethod("setGlobal_char_array1", String.class); | |
| throw new RuntimeException("global_char_array1 has a setter"); | |
| } catch (NoSuchMethodException e) { | |
| } | |
| if (!char_strings.getGlobal_char_array1().equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test variables 2 failed"); | |
| for (i=0; i<count; i++) { | |
| char_strings.setGlobal_char_array2(OTHERLAND_MSG + i); | |
| if (!char_strings.getGlobal_char_array2().equals(OTHERLAND_MSG + i)) | |
| throw new RuntimeException("Test variables 3 failed, iteration " + i); | |
| } | |
| try { | |
| char_strings.setGlobal_char_array2(CPLUSPLUS_MSG + CPLUSPLUS_MSG); | |
| throw new RuntimeException("Test variables 3 overlong string failed"); | |
| } catch (IllegalArgumentException e) { | |
| } | |
| if (!char_strings.getChar_array_no_nul().getFull().equals("abcd") || !char_strings.getChar_array_no_nul().getAfter().equals("XYZ")) | |
| throw new RuntimeException("Test full char array failed"); | |
| char_strings.setGlobal_char_one("a"); | |
| CharArrayOne one = new CharArrayOne(); | |
| one.setOne("b"); | |
| if (!char_strings.getGlobal_char_one().equals("a") || !one.getOne().equals("b")) | |
| throw new RuntimeException("Test char[1] failed"); | |
| if (char_strings.CharArrayPingPong(null) != null || char_strings.CharArrayDimsPingPong(null) != null) | |
| throw new RuntimeException("Test char array null failed"); | |
| try { | |
| char_strings.getChar_array_null().setFour(null); | |
| throw new RuntimeException("Test char array member set to null failed"); | |
| } catch (NullPointerException e) { | |
| } | |
| try { | |
| char_strings.setGlobal_char_array_null(null); | |
| throw new RuntimeException("Test char array global set to null failed"); | |
| } catch (NullPointerException e) { | |
| } | |
| if (!char_strings.getChar_array_null().getFour().equals("qqq") || !char_strings.getGlobal_char_array_null().equals("qqq")) | |
| throw new RuntimeException("Test char array set to null changed it"); | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.getGlobal_const_char().equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test variables 4 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.getGlobal_const_char_array1().equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test variables 5 failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.getGlobal_const_char_array2().equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test variables 6 failed, iteration " + i); | |
| } | |
| // char *& tests | |
| for (i=0; i<count; i++) { | |
| String str = char_strings.GetCharPointerRef(); | |
| if (!str.equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test char pointer ref get failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetCharPointerRef(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test char pointer ref set failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| String str = char_strings.GetConstCharPointerRef(); | |
| if (!str.equals(CPLUSPLUS_MSG)) | |
| throw new RuntimeException("Test const char pointer ref get failed, iteration " + i); | |
| } | |
| for (i=0; i<count; i++) { | |
| if (!char_strings.SetConstCharPointerRef(OTHERLAND_MSG + i, i)) | |
| throw new RuntimeException("Test const char pointer ref set failed, iteration " + i); | |
| } | |
| } | |
| } | |