Package org.xmlBlaster.test.classtest

Source Code of org.xmlBlaster.test.classtest.ClientPropertyTest

package org.xmlBlaster.test.classtest;

import org.custommonkey.xmlunit.XMLTestCase;
import org.xmlBlaster.util.Global;
import org.xmlBlaster.util.qos.ClientProperty;
import org.xmlBlaster.util.qos.MsgQosData;
import org.xmlBlaster.util.qos.MsgQosSaxFactory;
import org.xmlBlaster.util.def.Constants;
import org.xmlBlaster.util.def.MethodName;

/**
* Test ClientProperty.
* <p />
* All methods starting with 'test' and without arguments are invoked automatically
* <p />
* TODO: http://xmlunit.sourceforge.net/
* <p />
* Invoke: java -Djava.compiler= junit.textui.TestRunner -noloading org.xmlBlaster.test.classtest.ClientPropertyTest
* @see org.xmlBlaster.util.qos.ClientProperty
* @see <a href="http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.clientProperty.html">The client.qos.clientProperty requirement</a>
*/
public class ClientPropertyTest extends XMLTestCase {
   protected Global glob;
   int counter = 0;

   public ClientPropertyTest(String name) {
      super(name);
   }

   protected void setUp() {
      this.glob = Global.instance();

   }

   public void testClientProperty() throws Exception {
      ClientProperty clientProperty = new ClientProperty("StringKey", null, null);
      assertEquals("", "StringKey", clientProperty.getName());
      assertEquals("", null, clientProperty.getType());
      assertEquals("", null, clientProperty.getEncoding());
      assertEquals("", false, clientProperty.isBase64());
      assertEquals("", null, clientProperty.getValueRaw());
      assertEquals("", null, clientProperty.getStringValue());
      assertEquals("", null, clientProperty.getValueRaw());

      String xml = clientProperty.toXml();
      assertXpathExists("/clientProperty[@name='StringKey']", xml);
      System.out.println(xml);
   }

   public void testClientPropertyEncoding() throws Exception {
      {
         ClientProperty clientProperty = new ClientProperty("StringKey", "String", Constants.ENCODING_BASE64);
         assertEquals("", "StringKey", clientProperty.getName());
         assertEquals("", "String", clientProperty.getType());
         assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
         assertEquals("", true, clientProperty.isBase64());
         assertEquals("", null, clientProperty.getStringValue());
         assertEquals("", null, clientProperty.getValueRaw());

         String xml = clientProperty.toXml();
         assertXpathExists("/clientProperty[@name='StringKey']", xml);
         assertXpathExists("/clientProperty[@type='String']", xml);
         assertXpathExists("/clientProperty[@encoding='"+Constants.ENCODING_BASE64+"']", xml);
         System.out.println(xml);
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='StringKey' type='String' encoding='base64'/>",
                        xml);

         clientProperty.setValue("BlaBlaBla");
         xml = clientProperty.toXml();
         assertEquals("Base64?", "QmxhQmxhQmxh", clientProperty.getValueRaw());
         assertEquals("", "BlaBlaBla", clientProperty.getStringValue());
         System.out.println(xml);
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='StringKey' type='String' encoding='base64'>QmxhQmxhQmxh</clientProperty>",
                        xml);
         try {
            assertEquals("", 99, clientProperty.getIntValue());
            fail("String to int not possible");
         }
         catch(java.lang.NumberFormatException e) {
            System.out.println("OK Expected exception NumberFormatException");
         }
         System.out.println(xml);
      }
   }

   public void testClientPropertyCtorEncoding() throws Exception {
      {
         String value = "Bla<<";
         ClientProperty clientProperty = new ClientProperty("StringKey",
                                          ClientProperty.getPropertyType(value), null, value);
         assertEquals("", "StringKey", clientProperty.getName());
         assertEquals("", null, clientProperty.getType()); // defaults to String
         assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
         assertEquals("", true, clientProperty.isBase64());
         assertEquals("", value, clientProperty.getStringValue());
         //assertEquals("", null, clientProperty.getValueRaw());

         String xml = clientProperty.toXml();
         assertXpathExists("/clientProperty[@name='StringKey']", xml);
         assertXpathExists("/clientProperty[@encoding='"+Constants.ENCODING_BASE64+"']", xml);
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='StringKey' encoding='base64'>QmxhPDw=</clientProperty>",
                        xml);
         System.out.println(xml);
      }
   }

   public void testClientPropertyAutoEncoding() throws Exception {
      ClientProperty clientProperty = new ClientProperty("StringKey", "", "");
      assertEquals("", "StringKey", clientProperty.getName());
      assertEquals("", "", clientProperty.getType());
      assertEquals("", "", clientProperty.getEncoding());
      assertEquals("", null, clientProperty.getStringValue());
      assertEquals("", null, clientProperty.getValueRaw());

      clientProperty.setValue("Bla<BlaBla");
      assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
      String xml = clientProperty.toXml();
      System.out.println(xml);
      assertEquals("Base64?", "QmxhPEJsYUJsYQ==", clientProperty.getValueRaw());
      assertEquals("", "Bla<BlaBla", clientProperty.getStringValue());
      System.out.println(xml);

      clientProperty.setValue("Bla]]>BlaBla");
      assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
      xml = clientProperty.toXml();
      //assertEquals("Base64?", "QmxhPD5CbGFCbGE=", clientProperty.getValueRaw());
      assertEquals("", "Bla]]>BlaBla", clientProperty.getStringValue());
      System.out.println(xml);
   }

   public void testClientPropertyTypes() throws Exception {
      {
         ClientProperty clientProperty = new ClientProperty("key", "int", null);
         assertEquals("", "key", clientProperty.getName());
         assertEquals("", "int", clientProperty.getType());
         assertEquals("", null, clientProperty.getEncoding());
         assertEquals("", null, clientProperty.getValueRaw());
         assertEquals("", null, clientProperty.getStringValue());
         assertEquals("", null, clientProperty.getObjectValue());

         clientProperty.setValue("9988");
         String xml = clientProperty.toXml();
         assertEquals("", "9988", clientProperty.getValueRaw());
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='key' type='int'>9988</clientProperty>",
                        xml);
         assertEquals("", 9988, clientProperty.getIntValue());
         assertTrue("Expecting Integer", clientProperty.getObjectValue() instanceof Integer);
         System.out.println(xml);
      }
      {
         ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_BOOLEAN, null);
         assertEquals("", "key", clientProperty.getName());
         assertEquals("", "boolean", clientProperty.getType());
         assertEquals("", null, clientProperty.getEncoding());
         assertEquals("", null, clientProperty.getValueRaw());
         assertEquals("", null, clientProperty.getStringValue());
         assertEquals("", null, clientProperty.getObjectValue());

         clientProperty.setValue("true");
         String xml = clientProperty.toXml();
         assertEquals("", "true", clientProperty.getValueRaw());
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='key' type='boolean'>true</clientProperty>",
                        xml);
         assertEquals("", true, clientProperty.getBooleanValue());
         assertTrue("", clientProperty.getObjectValue() instanceof Boolean);
         System.out.println(xml);
      }
      {
         ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_DOUBLE, null);
         assertEquals("", "key", clientProperty.getName());
         assertEquals("", "double", clientProperty.getType());
         assertEquals("", null, clientProperty.getEncoding());
         assertEquals("", null, clientProperty.getValueRaw());
         assertEquals("", null, clientProperty.getStringValue());
         assertEquals("", null, clientProperty.getObjectValue());

         clientProperty.setValue("12.78");
         String xml = clientProperty.toXml();
         assertEquals("", "12.78", clientProperty.getValueRaw());
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='key' type='double'>12.78</clientProperty>",
                        xml);
         assertTrue("", 12.78 == clientProperty.getDoubleValue());
         assertTrue("", clientProperty.getObjectValue() instanceof Double);
         System.out.println(xml);
      }
      {
         ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_FLOAT, null);
         assertEquals("", "key", clientProperty.getName());
         assertEquals("", "float", clientProperty.getType());
         assertEquals("", null, clientProperty.getEncoding());
         assertEquals("", false, clientProperty.isBase64());
         assertEquals("", null, clientProperty.getValueRaw());
         assertEquals("", null, clientProperty.getStringValue());
         assertEquals("", null, clientProperty.getObjectValue());

         clientProperty.setValue("12.54");
         String xml = clientProperty.toXml();
         assertEquals("", "12.54", clientProperty.getValueRaw());
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='key' type='float'>12.54</clientProperty>",
                        xml);
         assertTrue("", (float)12.54 == clientProperty.getFloatValue());
         assertTrue("", clientProperty.getObjectValue() instanceof Float);
         System.out.println(xml);
      }
      {
         ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_BYTE, null);
         assertEquals("", "key", clientProperty.getName());
         assertEquals("", "byte", clientProperty.getType());
         assertEquals("", null, clientProperty.getEncoding());
         assertEquals("", null, clientProperty.getValueRaw());
         assertEquals("", null, clientProperty.getStringValue());
         assertEquals("", null, clientProperty.getObjectValue());

         clientProperty.setValue("6");
         String xml = clientProperty.toXml();
         assertEquals("", "6", clientProperty.getValueRaw());
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='key' type='byte'>6</clientProperty>",
                        xml);
         assertTrue("", (byte)6 == clientProperty.getByteValue());
         assertTrue("", clientProperty.getObjectValue() instanceof Byte);
         System.out.println(xml);
      }
      {
         ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_LONG, null);
         assertEquals("", "key", clientProperty.getName());
         assertEquals("", "long", clientProperty.getType());
         assertEquals("", null, clientProperty.getEncoding());
         assertEquals("", null, clientProperty.getValueRaw());
         assertEquals("", null, clientProperty.getStringValue());
         assertEquals("", null, clientProperty.getObjectValue());

         clientProperty.setValue("888888");
         String xml = clientProperty.toXml();
         assertEquals("", "888888", clientProperty.getValueRaw());
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='key' type='long'>888888</clientProperty>",
                        xml);
         assertTrue("", 888888 == clientProperty.getLongValue());
         assertTrue("", clientProperty.getObjectValue() instanceof Long);
         System.out.println(xml);
      }
      {
         ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_SHORT, null);
         assertEquals("", "key", clientProperty.getName());
         assertEquals("", "short", clientProperty.getType());
         assertEquals("", null, clientProperty.getEncoding());
         assertEquals("", null, clientProperty.getValueRaw());
         assertEquals("", null, clientProperty.getStringValue());
         assertEquals("", null, clientProperty.getObjectValue());

         clientProperty.setValue("12");
         String xml = clientProperty.toXml();
         assertEquals("", "12", clientProperty.getValueRaw());
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='key' type='short'>12</clientProperty>",
                        xml);
         assertTrue("", 12 == clientProperty.getShortValue());
         assertTrue("", clientProperty.getObjectValue() instanceof Short);
         System.out.println(xml);
      }
      {
         ClientProperty clientProperty = new ClientProperty("key", null, null);
         assertEquals("", "key", clientProperty.getName());
         assertEquals("", null, clientProperty.getType());
         assertEquals("", null, clientProperty.getEncoding());
         assertEquals("", null, clientProperty.getValueRaw());
         assertEquals("", null, clientProperty.getStringValue());
         assertEquals("", null, clientProperty.getObjectValue());

         byte[] bb = new byte[6];
         bb[0] = 0;
         bb[1] = 'A';
         bb[2] = 0;
         bb[3] = 99;
         bb[4] = 0;
         bb[5] = 0;
         clientProperty.setValue(bb);
         assertEquals("", "byte[]", clientProperty.getType());
         assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
         assertEquals("", true, clientProperty.isBase64());
         String xml = clientProperty.toXml();
         byte[] newVal = clientProperty.getBlobValue();
         for (int i=0; i<bb.length; i++)
            assertTrue("Index #"+i, bb[i] == newVal[i]);
         assertXpathExists("/clientProperty[@name='key']", xml);
         assertXpathExists("/clientProperty[@type='"+Constants.TYPE_BLOB+"']", xml);
         assertXpathExists("/clientProperty[@encoding='"+Constants.ENCODING_BASE64+"']", xml);
         assertEquals("", "AEEAYwAA", clientProperty.getValueRaw());
         assertXMLEqual("comparing test xml to control xml",
                        "<clientProperty name='key' type='byte[]' encoding='base64'>AEEAYwAA</clientProperty>",
                        xml);
         assertTrue("", clientProperty.getObjectValue() instanceof byte[]);
         newVal = (byte[])clientProperty.getObjectValue();
         for (int i=0; i<bb.length; i++)
            assertTrue("Index #"+i, bb[i] == newVal[i]);
         System.out.println(xml);
      }
   }

   public void testClientPropertyParsing() throws Exception {
     
      String xml =  "<qos>\n" +
         "  <isPublish/>\n" +
         "  <clientProperty name='StringKey' type=''><![CDATA[Bla<BlaBla]]></clientProperty>\n" +
         "</qos>";     
     
      MsgQosSaxFactory parser = new MsgQosSaxFactory(this.glob);
      MsgQosData data = parser.readObject(xml);
      ClientProperty prop = data.getClientProperty("StringKey");
      System.out.println(prop.toXml());
      assertEquals("", true, prop.isBase64());
     
   }

   public void testClientPropertyParsingWithUntrimmedSpaces() throws Exception {
      MsgQosData data = new MsgQosData(this.glob, MethodName.PUBLISH);
      String name1 = "leadingSpaces";
      String val1 = "  val1";
      String name2 = "endingSpaces";
      String val2 = "val2  ";
      String name3 = "bothSpaces";
      String val3 = "  val3  ";
      String name4 = "singleSpace";
      String val4 = " val4 ";
      ClientProperty prop1 = new ClientProperty(name1, null, null, val1);
      ClientProperty prop2 = new ClientProperty(name2, null, null, val2);
      ClientProperty prop3 = new ClientProperty(name3, null, null, val3);
      ClientProperty prop4 = new ClientProperty(name4, null, null, val4);
      data.addClientProperty(prop1);
      data.addClientProperty(prop2);
      data.addClientProperty(prop3);
      data.addClientProperty(prop4);
      String xml = data.toXml();
      System.out.println("The content of the qos is '" + xml + "'");
      MsgQosSaxFactory parser = new MsgQosSaxFactory(this.glob);
      MsgQosData data1 = parser.readObject(xml);
      assertEquals(name1, val1, data1.getClientProperty(name1).getStringValue());
      assertEquals(name2, val2, data1.getClientProperty(name2).getStringValue());
      assertEquals(name3, val3, data1.getClientProperty(name3).getStringValue());
      assertEquals(name4, val4, data1.getClientProperty(name4).getStringValue());
     
   }

   public void testClientPropertyEnclosedXmlTree() throws Exception {
     
      String xml =  "<qos>\n" +
         "  <isPublish/>\n" +
         "  <clientProperty name='StringKey' type=''><BlaBla attr1='val1' attr2=' val2 '> Something </BlaBla></clientProperty>\n" +
         "</qos>";     
     
      MsgQosSaxFactory parser = new MsgQosSaxFactory(this.glob);
      MsgQosData data = parser.readObject(xml);
      ClientProperty prop = data.getClientProperty("StringKey");
      System.out.println(prop.toXml());
      // assertEquals("", true, prop.isBase64());
     
     
      String val = "<BlaBla attr1='val1' attr2=' val2 '> Something </BlaBla>";
      prop = new ClientProperty("StringKey", null, Constants.ENCODING_FORCE_PLAIN, val);
      System.out.println(prop.toXml());

      xml =  "<qos>\n" +
      "  <isPublish/>\n" +
      "  <clientProperty name='StringKey' type='' encoding='forcePlain'><qos attr1='val1' attr2=' val2 '> Something </qos></clientProperty>\n" +
      "</qos>";     
     
      parser = new MsgQosSaxFactory(this.glob);
      data = parser.readObject(xml);
      prop = data.getClientProperty("StringKey");
      System.out.println(prop.toXml());
     
      xml =  "<qos>\n" +
      "  <isPublish/>\n" +
      "  <clientProperty name='StringKey' type='' encoding='forcePlain'><clientProperty name='aaa' type='' encoding=''>Something</clientProperty></clientProperty>\n" +
      "</qos>";     
     
      parser = new MsgQosSaxFactory(this.glob);
      data = parser.readObject(xml);
      prop = data.getClientProperty("StringKey");
      System.out.println(prop.toXml());
     
      System.out.println("END");
   }

   /**
    * <pre>
    *  java org.xmlBlaster.test.classtest.ClientPropertyTest
    * </pre>
    */
   public static void main(String args[])
   {
      try {
         ClientPropertyTest testSub = new ClientPropertyTest("ClientPropertyTest");
         testSub.setUp();
         testSub.testClientPropertyEnclosedXmlTree();
         testSub.testClientProperty();
         testSub.testClientPropertyEncoding();
         testSub.testClientPropertyCtorEncoding();
         testSub.testClientPropertyTypes();
         testSub.testClientPropertyAutoEncoding();
         testSub.testClientPropertyParsing();
         testSub.testClientPropertyParsingWithUntrimmedSpaces();
         testSub.tearDown();
      }
      catch(Throwable e) {
         e.printStackTrace();
         fail(e.toString());
      }
   }
}
TOP

Related Classes of org.xmlBlaster.test.classtest.ClientPropertyTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.