From e1fd92428fcb3c19ac42dfb91d0735f7333ac153 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Sat, 6 Dec 2003 23:03:30 +0000 Subject: [PATCH] Added STRING_OUT typemap test. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5494 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- .../java/java_lib_various_runme.java | 24 +++++++++++++++++++ Examples/test-suite/java_lib_various.i | 6 +++++ 2 files changed, 30 insertions(+) diff --git a/Examples/test-suite/java/java_lib_various_runme.java b/Examples/test-suite/java/java_lib_various_runme.java index bf0d41211..e7bd86978 100644 --- a/Examples/test-suite/java/java_lib_various_runme.java +++ b/Examples/test-suite/java/java_lib_various_runme.java @@ -39,6 +39,30 @@ public class java_lib_various_runme { if ( !langs[i].equals(langscheck[i]) ) throw new RuntimeException("Languages read failed " + i + " " + langs[i] + "|" + langscheck[i]); + // 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); diff --git a/Examples/test-suite/java_lib_various.i b/Examples/test-suite/java_lib_various.i index a320be4d5..f522a8a1e 100644 --- a/Examples/test-suite/java_lib_various.i +++ b/Examples/test-suite/java_lib_various.i @@ -7,6 +7,7 @@ %apply char **STRING_ARRAY { char **get_names }; %apply char **STRING_ARRAY { char **languages }; %apply char *BYTE { char *chars }; +%apply char **STRING_OUT { char **string_ptr }; %{ char *langs[] = { "Hungarian", "Afrikaans", "Norwegian", 0 }; @@ -41,5 +42,10 @@ void charout(char *chars) { sprintf(chars, "by jove"); } +void char_ptr_ptr_out(char **string_ptr) { + static char ret[] = "returned string"; + *string_ptr = ret; +} + %}