/******************************************************************************* * Copyright (c) 2008 Versant Corp. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Markus Kuppe (mkuppe <at> versant <dot> com) - initial API and implementation ******************************************************************************/ package ch.ethz.iks.slp.impl; import java.io.DataOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import ch.ethz.iks.slp.ServiceLocationException; import junit.framework.TestCase; public class AttributeParserTest extends TestCase { private static final String NEG_INTEGER = "(IntegerMax=-2147483648)"; private static final String POS_INTEGER = "(IntegerMin=2147483647)"; private static final String VENDOR_WITH_EN = "(x-28392-FOOBAR=FOOBAR)"; private static final String STRING = "(String=foobar asdflj24 aslkujh2)"; private static final String BOOLEAN = "(Boolean=false)"; private static final String BYTE = "(Byte=\\FF\\00\\01\\02\\A1\\99\\AA\\EE)"; /** * Test method for {@link ch.ethz.iks.slp.impl.SLPMessage#attributeStringToList(java.lang.String)}. */ public void testByteAttributeType() { SLPTestMessage stm = new SLPTestMessage(); String input = BYTE; List attributeStringToList = new ArrayList(); try { attributeStringToList = stm.attributeStringToList(input); } catch(ServiceLocationException e) { fail("Input " + input + " must be valid"); } assertEquals(1, attributeStringToList.size()); assertTrue(attributeStringToList.contains(BYTE)); } /** * Test method for {@link ch.ethz.iks.slp.impl.SLPMessage#attributeStringToList(java.lang.String)}. */ public void testStringAttributeType() { SLPTestMessage stm = new SLPTestMessage(); String input = STRING; List attributeStringToList = new ArrayList(); try { attributeStringToList = stm.attributeStringToList(input); } catch(ServiceLocationException e) { fail("Input " + input + " must be valid"); } assertEquals(1, attributeStringToList.size()); assertTrue(attributeStringToList.contains(STRING)); } public void testBadTag() { SLPTestMessage stm = new SLPTestMessage(); // #bad-tag = CR / LF / HTAB / "_"; List inputs = new ArrayList(); inputs.add("(bad_tag=foo)"); inputs.add("(bat\ttag=foo)"); inputs.add("(bad\rtag=foo)"); inputs.add("(bad\ntag=foo)"); for (Iterator iterator = inputs.iterator(); iterator.hasNext();) { String input = (String) iterator.next(); try { stm.attributeStringToList(input); } catch(ServiceLocationException e) { continue; } fail("Input " + input + " must throw an Exception"); } } /** * Test method for {@link ch.ethz.iks.slp.impl.SLPMessage#attributeStringToList(java.lang.String)}. */ public void testAllAttributeType() { SLPTestMessage stm = new SLPTestMessage(); String input = STRING + "," + BOOLEAN + "," + BYTE + "," + VENDOR_WITH_EN + "," + POS_INTEGER + "," + NEG_INTEGER; List attributeStringToList = new ArrayList(); try { attributeStringToList = stm.attributeStringToList(input); } catch(ServiceLocationException e) { fail("Input " + input + " must be valid"); } assertEquals(6, attributeStringToList.size()); assertTrue(attributeStringToList.contains(NEG_INTEGER)); assertTrue(attributeStringToList.contains(POS_INTEGER)); assertTrue(attributeStringToList.contains(VENDOR_WITH_EN)); assertTrue(attributeStringToList.contains(STRING)); assertTrue(attributeStringToList.contains(BOOLEAN)); assertTrue(attributeStringToList.contains(BYTE)); } // just make attributeStringToList public private class SLPTestMessage extends SLPMessage { protected int getSize() { return 0; } protected void writeTo(final DataOutputStream out) throws IOException { // no op } /* (non-Javadoc) * @see ch.ethz.iks.slp.impl.SLPMessage#attributeStringToList(java.lang.String) */ public List attributeStringToList(String input) throws ServiceLocationException { return super.attributeStringToList(input); } /* (non-Javadoc) * @see ch.ethz.iks.slp.impl.SLPMessage#attributeStringToListLiberal(java.lang.String) */ public List attributeStringToListLiberal(String input) { return super.attributeStringToListLiberal(input); } } }