package test.utils;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.axis.utils.JavaUtils;
import org.apache.axis.wsdl.toJava.Utils;
import javax.xml.rpc.holders.ByteHolder;
import javax.xml.rpc.holders.LongHolder;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Set;
import java.util.Vector;
public class TestJavaUtils extends TestCase
{
public TestJavaUtils (String name) {
super(name);
}
public static Test suite() {
return new TestSuite(TestJavaUtils.class);
}
public void setup() {
}
/**
* See JSR-101: JAX-RPC, Appendix: Mapping of XML Names
*/
public void testXmlNameToJava() {
/* Begin TABLE 20-2 Illustrative Examples from JAXRPC Spec */
assertEquals("mixedCaseName", JavaUtils.xmlNameToJava("mixedCaseName"));
assertEquals("nameWithDashes", JavaUtils.xmlNameToJava("name-with-dashes"));
assertEquals("name_with_underscore", JavaUtils.xmlNameToJava("name_with_underscore"));
assertEquals("other_punctChars", JavaUtils.xmlNameToJava("other_punct.chars"));
assertEquals("answer42", JavaUtils.xmlNameToJava("Answer42"));
/* End TABLE 20-2 Illustrative Examples from JAXRPC Spec */
assertEquals("nameWithDashes",
JavaUtils.xmlNameToJava("name-with-dashes"));
assertEquals("otherPunctChars",
JavaUtils.xmlNameToJava("other.punct\u00B7chars"));
assertEquals("answer42", JavaUtils.xmlNameToJava("Answer42"));
assertEquals("\u2160Foo", JavaUtils.xmlNameToJava("\u2160foo"));
assertEquals("foo", JavaUtils.xmlNameToJava("2foo"));
//assertEquals("_Foo_", JavaUtils.xmlNameToJava("_foo_"));
assertEquals("_foo_", JavaUtils.xmlNameToJava("_foo_"));
assertEquals("foobar", JavaUtils.xmlNameToJava("--foobar--"));
assertEquals("foo22Bar", JavaUtils.xmlNameToJava("foo22bar"));
assertEquals("foo\u2160Bar", JavaUtils.xmlNameToJava("foo\u2160bar"));
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo-bar"));
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo.bar"));
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo:bar"));
//assertEquals("foo_Bar", JavaUtils.xmlNameToJava("foo_bar"));
assertEquals("foo_bar", JavaUtils.xmlNameToJava("foo_bar"));
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo\u00B7bar"));
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo\u0387bar"));
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo\u06DDbar"));
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo\u06DEbar"));
assertEquals("fooBar", JavaUtils.xmlNameToJava("FooBar"));
assertEquals("FOOBar", JavaUtils.xmlNameToJava("FOOBar"));
assertEquals("a1BBB", JavaUtils.xmlNameToJava("A1-BBB"));
assertEquals("ABBB", JavaUtils.xmlNameToJava("A-BBB"));
assertEquals("ACCC", JavaUtils.xmlNameToJava("ACCC"));
// the following cases are ambiguous in JSR-101
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo bar"));
assertEquals("_1", JavaUtils.xmlNameToJava("-"));
}
/**
* Test for Bug 17994 - wsdl2java generates code with reserved words as variable names
*/
public void testXmlNameToJava2() {
assertEquals("_abstract", JavaUtils.xmlNameToJava("abstract"));
}
/**
* Test for Bug 17995 - wsdl2java converts namespace to uncompilable packages
*/
public void testPackageNaming() {
assertEquals("_0._1.util.liberty", Utils.makePackageName("urn:liberty:util:1.0"));
}
/**
* test the convert() function
* verify that we can convert to the Collection, List, and Set interfaces
* NOTE : These should be split out into separate tests...
*/
public void testConvert() {
Integer[] array = new Integer[4];
array[0] = new Integer(5); array[1] = new Integer(4);
array[2] = new Integer(3); array[3] = new Integer(2);
Object ret = JavaUtils.convert(array, List.class);
assertTrue("Converted array not a List", (ret instanceof List));
List list = (List)ret;
for (int i = 0; i < array.length; i++) {
assertEquals(array[i], list.get(i));
}
ret = JavaUtils.convert(array, Collection.class);
assertTrue("Converted array is not a Collection", (ret instanceof Collection));
ret = JavaUtils.convert(array, Set.class);
assertTrue("Converted array not a Set", (ret instanceof Set));
ret = JavaUtils.convert(array, Vector.class);
assertTrue("Converted array not a Vector", (ret instanceof Vector));
HashMap m = new HashMap();
m.put("abcKey", "abcVal");
m.put("defKey", "defVal");
ret = JavaUtils.convert(m, Hashtable.class);
assertTrue("Converted HashMap not a Hashtable", (ret instanceof Hashtable));
LongHolder holder = new LongHolder(1);
ret = JavaUtils.convert(holder, Object.class);
assertTrue(ret != null);
assertTrue(Long.class.isInstance(ret));
ByteHolder holder2 = new ByteHolder((byte)0);
ret = JavaUtils.convert(holder2, Object.class);
assertTrue(ret != null);
assertTrue(Byte.class.isInstance(ret));
// Make sure we convert ArrayList to array in 2D cases
Object[] arrayin = new Object[1];
ArrayList data = new ArrayList(5);
data.add("one"); data.add(new Integer(2)); data.add(new Float(4.0));
data.add(new Double(5.0)); data.add("five");
arrayin[0] = data;
ret = JavaUtils.convert(arrayin, Object[][].class);
assertTrue("Converted 2D array/ArrayList wrong", ret.getClass().equals(Object[][].class));
Object[][] outer = (Object[][]) ret;
assertEquals("Outer array of 2D array/ArrayList is wrong length", 1, outer.length);
Object[] inner = ((Object[][])ret)[0];
assertEquals("Inner array of 2D array/ArrayLis is wrong length", 1, inner.length);
// check 2D ArrayList of ArrayList
ArrayList data2D = new ArrayList(2);
data2D.add(data); data2D.add(data);
ret = JavaUtils.convert(data2D, Object[][].class);
assertTrue("Converted 2D ArrayList wrong", ret.getClass().equals(Object[][].class));
Object[][] outer2 = (Object[][]) ret;
assertEquals("Outer array of 2D ArrayList is wrong length", 2, outer2.length);
Object[] inner2 = ((Object[][]) ret)[0];
assertEquals("Inner array of 2D ArrayList is wrong length", 5, inner2.length);
}
public void test1dTo2d() throws Exception {
byte [] arg = new byte [] { '0', '1' };
byte [][] ret = (byte[][])JavaUtils.convert(arg, byte[][].class);
// ClassCastException above if problems converting
assertNotNull("Conversion result was null", ret);
assertEquals("Outer array size wrong", 1, ret.length);
assertEquals("Inner array size wrong", 2, ret[0].length);
}
/**
* test the isConvertable() function
*/
public void testIsConvert() {
assertTrue(JavaUtils.isConvertable(new Long(1),Long.class));
assertTrue(JavaUtils.isConvertable(new Long(1),long.class));
assertTrue(JavaUtils.isConvertable(new Long(1),Object.class));
assertTrue(!JavaUtils.isConvertable(new Long(1),Float.class));
Class clazz = long.class;
assertTrue(JavaUtils.isConvertable(clazz,Long.class));
assertTrue(JavaUtils.isConvertable(clazz,Object.class));
clazz = byte.class;
assertTrue(JavaUtils.isConvertable(clazz,Byte.class));
assertTrue(JavaUtils.isConvertable(clazz,Object.class));
}
/**
* Make sure we can't say convert from string[] to Calendar[]
*/
public void testIsConvert2()
{
String[] strings = new String[]{"hello"};
Calendar[] calendars = new Calendar[1];
assertTrue(!JavaUtils.isConvertable(strings, calendars.getClass()));
}
public static void main(String args[]){
TestJavaUtils tester = new TestJavaUtils("TestJavaUtils");
tester.testIsConvert();
tester.testConvert();
}
}
|