/* * JBoss, Home of Professional Open Source. * Copyright 2008, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.test.util.test; import java.io.File; import org.jboss.util.StringPropertyReplacer; import org.jboss.test.JBossTestCase; /** * Unit tests for the custom JBoss property editors * * @see org.jboss.util.StringPropertyReplacer * @author <a href="Adrian.Brock@HappeningTimes.com">Adrian.Brock</a> * @version $Revision: 81036 $ */ public class PropertyPatternUnitTestCase extends JBossTestCase { static final String simpleKey = "org.jboss.test.util.test.Simple"; static final String simple = "AProperty"; static final String anotherKey = "org.jboss.test.util.test.Another"; static final String another = "BProperty"; static final String doesNotExist = "org.jboss.test.util.test.DoesNotExist"; static final String before = "Before"; static final String between = "Between"; static final String after = "After"; static final String fileSeparatorKey = "/"; static final String pathSeparatorKey = ":"; String longWithNoProperties = new String("\n"+ " BLOB_TYPE=OBJECT_BLOB\n"+ " INSERT_TX = INSERT INTO JMS_TRANSACTIONS (TXID) values(?)\n"+ " INSERT_MESSAGE = INSERT INTO JMS_MESSAGES (MESSAGEID, DESTINATION, MESSAGEBLOB, TXID, TXOP) VALUES(?,?,?,?,?)\n"+ " SELECT_ALL_UNCOMMITED_TXS = SELECT TXID FROM JMS_TRANSACTIONS\n"+ " SELECT_MAX_TX = SELECT MAX(TXID) FROM JMS_MESSAGES\n"+ " SELECT_MESSAGES_IN_DEST = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE DESTINATION=?\n"+ " SELECT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=?\n"+ " MARK_MESSAGE = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE MESSAGEID=? AND DESTINATION=?\n"+ " UPDATE_MESSAGE = UPDATE JMS_MESSAGES SET MESSAGEBLOB=? WHERE MESSAGEID=? AND DESTINATION=?\n"+ " UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=?\n"+ " UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=?\n"+ " DELETE_MARKED_MESSAGES_WITH_TX = DELETE FROM JMS_MESSAGES WHERE TXID IS NOT NULL AND TXOP=?\n"+ " DELETE_TX = DELETE FROM JMS_TRANSACTIONS WHERE TXID = ?\n"+ " DELETE_MARKED_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXID=? AND TXOP=?\n"+ " DELETE_MESSAGE = DELETE FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=?\n"+ " CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER NOT NULL, \\\n"+ " DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1), \\\n"+ " MESSAGEBLOB OBJECT, PRIMARY KEY (MESSAGEID, DESTINATION) )\n"+ " CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER )\n"); static { System.setProperty(simpleKey, simple); System.setProperty(anotherKey, another); } public PropertyPatternUnitTestCase(String name) { super(name); } public void testEmptyPattern() throws Exception { assertEquals("Empty pattern", "", StringPropertyReplacer.replaceProperties("")); } public void testNoPattern() throws Exception { assertEquals("No pattern", "xxx", StringPropertyReplacer.replaceProperties("xxx")); } public void testNoProperty() throws Exception { assertEquals("No pattern", "${xxx}", StringPropertyReplacer.replaceProperties("${xxx}")); } public void testNoPropertyWithDefault() throws Exception { assertEquals("No pattern", "xxx-default", StringPropertyReplacer.replaceProperties("${xxx:xxx-default}")); } public void testPropertyWithDefault() throws Exception { assertEquals("Simple pattern", simple, StringPropertyReplacer.replaceProperties("${"+simpleKey+":simpleDefault}")); } public void testSimpleProperty() throws Exception { assertEquals("Simple pattern", simple, StringPropertyReplacer.replaceProperties("${"+simpleKey+"}")); } public void testFileSeparatorProperty() throws Exception { assertEquals("File Separator", before + File.separator + after, StringPropertyReplacer.replaceProperties(before + "${" + fileSeparatorKey + "}" + after)); } public void testPathSeparatorProperty() throws Exception { assertEquals("Path Separator", before + File.pathSeparator + after, StringPropertyReplacer.replaceProperties(before + "${" + pathSeparatorKey + "}" + after)); } public void testStringBeforeProperty() throws Exception { assertEquals("String before pattern", before + simple, StringPropertyReplacer.replaceProperties(before + "${"+simpleKey+"}")); } public void testStringAfterProperty() throws Exception { assertEquals("String after pattern", simple + after, StringPropertyReplacer.replaceProperties("${"+simpleKey+"}" + after)); } public void testStringBeforeAfterProperty() throws Exception { assertEquals("String before and after pattern", before + simple + after, StringPropertyReplacer.replaceProperties(before + "${"+simpleKey+"}" + after)); } public void testStringBeforeBetweenProperty() throws Exception { assertEquals("String before and between pattern", before + simple + between + another, StringPropertyReplacer.replaceProperties(before + "${"+simpleKey+"}" + between + "${" + anotherKey + "}")); } public void testStringAfterBetweenProperty() throws Exception { assertEquals("String after and between pattern", simple + between + another + after, StringPropertyReplacer.replaceProperties("${"+simpleKey+"}" + between + "${" + anotherKey + "}" + after)); } public void testStringBeforeAfterBetweenProperty() throws Exception { assertEquals("String before, after and between pattern", before + simple + between + another + after, StringPropertyReplacer.replaceProperties(before + "${"+simpleKey+"}" + between + "${" + anotherKey + "}" + after)); } public void testDollarBeforeProperty() throws Exception { assertEquals("Dollar before pattern", "$" + simple, StringPropertyReplacer.replaceProperties("$${"+simpleKey+"}")); } public void testSpaceBetweenDollarAndProperty() throws Exception { assertEquals("Dollar before pattern", "$ {"+simpleKey+"}", StringPropertyReplacer.replaceProperties("$ {"+simpleKey+"}")); } public void testPropertyDoesNotExist() throws Exception { assertEquals("Property does not exist", "${"+doesNotExist+"}", StringPropertyReplacer.replaceProperties("${"+doesNotExist+"}")); } public void testPathologicalProperties() throws Exception { assertEquals("$", StringPropertyReplacer.replaceProperties("$")); assertEquals("{", StringPropertyReplacer.replaceProperties("{")); assertEquals("}", StringPropertyReplacer.replaceProperties("}")); assertEquals("${", StringPropertyReplacer.replaceProperties("${")); assertEquals("$}", StringPropertyReplacer.replaceProperties("$}")); assertEquals("{$", StringPropertyReplacer.replaceProperties("{$")); assertEquals("{}", StringPropertyReplacer.replaceProperties("{}")); assertEquals("{{", StringPropertyReplacer.replaceProperties("{{")); assertEquals("}$", StringPropertyReplacer.replaceProperties("}$")); assertEquals("}{", StringPropertyReplacer.replaceProperties("}{")); assertEquals("}}", StringPropertyReplacer.replaceProperties("}}")); assertEquals("}}", StringPropertyReplacer.replaceProperties("}}")); assertEquals("${}", StringPropertyReplacer.replaceProperties("${}")); assertEquals("$}{", StringPropertyReplacer.replaceProperties("$}{")); assertEquals("}${", StringPropertyReplacer.replaceProperties("}${")); assertEquals("}{$", StringPropertyReplacer.replaceProperties("}{$")); assertEquals("{$}", StringPropertyReplacer.replaceProperties("{$}")); assertEquals("{}$", StringPropertyReplacer.replaceProperties("{}$")); } public void testLongWithNoProperties() throws Exception { long start = System.currentTimeMillis(); assertEquals("No properties in long string", longWithNoProperties, StringPropertyReplacer.replaceProperties(longWithNoProperties)); long end = System.currentTimeMillis(); assertTrue("Shouldn't take very long", end - start < 1000); } /** * Override the testServerFound since these test don't need the JBoss server */ public void testServerFound() { } }