/* * Created on Jul 5, 2005 * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * * Copyright @2005 the original author or authors. */ package org.springmodules.remoting.xmlrpc.support; import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import junit.framework.TestCase; /** * <p> * Unit Tests for <code>{@link XmlRpcElementFactoryImpl}</code>. * </p> * * @author Alex Ruiz * * @version $Revision$ $Date$ */ public class XmlRpcElementFactoryImplTests extends TestCase { /** * Primary object that is under test. */ private XmlRpcElementFactoryImpl factory; /** * Constructor. * * @param name * the name of the test case to construct. */ public XmlRpcElementFactoryImplTests(String name) { super(name); } /** * Sets up the test fixture. */ protected void setUp() throws Exception { super.setUp(); this.factory = new XmlRpcElementFactoryImpl(); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcArray}</code> if the specified argument * is an array (not an array of <code>byte</code>). */ public void testCreateXmlRpcElementWithArrayArgument() { String[] source = { "Luke", "Leia", "Han" }; XmlRpcArray expected = new XmlRpcArray(); int nameCount = source.length; for (int i = 0; i < nameCount; i++) { expected.add(new XmlRpcString(source[i])); } XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcBoolean}</code> if the specified * argument is a <code>Boolean</code>. */ public void testCreateXmlRpcElementWithBooleanArgument() { Boolean source = Boolean.TRUE; XmlRpcBoolean expected = new XmlRpcBoolean(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcBase64}</code> if the specified argument * is an array of <code>byte</code>. */ public void testCreateXmlRpcElementWithByteArrayArgument() { byte[] source = { 9, 8, 8 }; XmlRpcBase64 expected = new XmlRpcBase64(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcString}</code> if the specified argument * is a <code>Character</code>. */ public void testCreateXmlRpcElementWithCharacterArgument() { Character source = new Character('t'); XmlRpcString expected = new XmlRpcString(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcArray}</code> if the specified argument * is a <code>java.util.Collection</code>. */ public void testCreateXmlRpcElementWithCollectionArgument() { String[] names = { "Luke", "Leia", "Han" }; Collection source = Arrays.asList(names); XmlRpcArray expected = new XmlRpcArray(); int nameCount = names.length; for (int i = 0; i < nameCount; i++) { expected.add(new XmlRpcString(names[i])); } XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcDateTime}</code> if the specified * argument is a <code>java.util.Date</code>. */ public void testCreateXmlRpcElementWithDateArgument() { Date source = new Date(); XmlRpcDateTime expected = new XmlRpcDateTime(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcDouble}</code> if the specified argument * is a <code>Double</code>. */ public void testCreateXmlRpcElementWithDoubleArgument() { Double source = new Double(43.99); XmlRpcDouble expected = new XmlRpcDouble(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcDouble}</code> if the specified argument * is a <code>Float</code>. */ public void testCreateXmlRpcElementWithFloatArgument() { Float source = new Float(43.99f); XmlRpcDouble expected = new XmlRpcDouble(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcInteger}</code> if the specified * argument is a <code>Integer</code>. */ public void testCreateXmlRpcElementWithIntegerArgument() { Integer source = new Integer(44); XmlRpcInteger expected = new XmlRpcInteger(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcStruct}</code> if the specified argument * is a JavaBean. */ public void testCreateXmlRpcElementWithJavaBeanArgument() { XmlRpcStruct expected = new XmlRpcStruct(); expected.add("id", new XmlRpcInteger(new Integer(45))); expected.add("name", new XmlRpcString("Anakin")); List expectedMembers = Arrays.asList(expected.getMembers()); Person source = new Person(); source.setId(new Integer(45)); source.setName("Anakin"); XmlRpcStruct actual = (XmlRpcStruct) this.factory .createXmlRpcElement(source); List actualMembers = Arrays.asList(actual.getMembers()); assertEquals("<XML-RPC struct member count>", expectedMembers.size(), actualMembers.size()); assertTrue("<XML-RPC struct members>. Expected: " + expectedMembers + " but was: " + actualMembers, expectedMembers .containsAll(actualMembers)); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcString}</code> if the specified argument * is a <code>Long</code>. */ public void testCreateXmlRpcElementWithLongArgument() { Long source = new Long(434); XmlRpcString expected = new XmlRpcString(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcStruct}</code> if the specified argument * is a <code>java.util.Map</code>. */ public void testCreateXmlRpcElementWithMapArgument() { XmlRpcStruct expected = new XmlRpcStruct(); expected.add("Luke", new XmlRpcString("Jedi")); expected.add("Leia", new XmlRpcString("Princess")); List expectedMembers = Arrays.asList(expected.getMembers()); Map source = new HashMap(); source.put("Luke", "Jedi"); source.put("Leia", "Princess"); XmlRpcStruct actual = (XmlRpcStruct) this.factory .createXmlRpcElement(source); List actualMembers = Arrays.asList(actual.getMembers()); assertEquals("<XML-RPC struct member count>", expectedMembers.size(), actualMembers.size()); assertTrue("<XML-RPC struct members>. Expected: " + expectedMembers + " but was: " + actualMembers, expectedMembers .containsAll(actualMembers)); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcString}</code> if the specified argument * is <code>null</code>. */ public void testCreateXmlRpcElementWithNullArgument() { XmlRpcString expected = new XmlRpcString(""); XmlRpcElement actual = this.factory.createXmlRpcElement(null); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcInteger}</code> if the specified * argument is a <code>Short</code>. */ public void testCreateXmlRpcElementWithShortArgument() { Short source = new Short((short) 4); XmlRpcInteger expected = new XmlRpcInteger(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } /** * Verifies that the method * <code>{@link XmlRpcElementFactoryImpl#createXmlRpcElement(Object)}</code> * creates a new <code>{@link XmlRpcString}</code> if the specified argument * is a <code>String</code>. */ public void testCreateXmlRpcElementWithStringArgument() { String source = "X-Wing"; XmlRpcString expected = new XmlRpcString(source); XmlRpcElement actual = this.factory.createXmlRpcElement(source); assertEquals("<XML-RPC element>", expected, actual); } }