You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2011/12/24 21:03:01 UTC
svn commit: r1223008 -
/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestCombinedConfiguration.java
Author: oheger
Date: Sat Dec 24 20:03:01 2011
New Revision: 1223008
URL: http://svn.apache.org/viewvc?rev=1223008&view=rev
Log:
Converted tests to JUnit 4, fixed warnings, used JUnit facilities for managing temporary files.
Modified:
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestCombinedConfiguration.java
Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestCombinedConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestCombinedConfiguration.java?rev=1223008&r1=1223007&r2=1223008&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestCombinedConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestCombinedConfiguration.java Sat Dec 24 20:03:01 2011
@@ -16,6 +16,14 @@
*/
package org.apache.commons.configuration;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
@@ -23,15 +31,12 @@ import java.io.PrintWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.text.MessageFormat;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Set;
import junit.framework.Assert;
-import junit.framework.TestCase;
import org.apache.commons.configuration.event.ConfigurationEvent;
import org.apache.commons.configuration.event.ConfigurationListener;
@@ -43,13 +48,17 @@ import org.apache.commons.configuration.
import org.apache.commons.configuration.tree.OverrideCombiner;
import org.apache.commons.configuration.tree.UnionCombiner;
import org.apache.commons.configuration.tree.xpath.XPathExpressionEngine;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
/**
* Test class for CombinedConfiguration.
*
* @version $Id$
*/
-public class TestCombinedConfiguration extends TestCase
+public class TestCombinedConfiguration
{
/** Constant for the name of a sub configuration. */
private static final String TEST_NAME = "SUBCONFIG";
@@ -75,11 +84,9 @@ public class TestCombinedConfiguration e
/** Constant for the content of a properties reload test file.*/
private static final String RELOAD_PROPS_CONTENT = "propsReload = {0}";
- /** Constant for the directory for writing test files.*/
- private static final File TEST_DIR = new File("target");
-
- /** A list with files created during a test.*/
- private Collection testFiles;
+ /** Helper object for managing temporary files. */
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
/** The configuration to be tested. */
private CombinedConfiguration config;
@@ -87,36 +94,18 @@ public class TestCombinedConfiguration e
/** The test event listener. */
private CombinedListener listener;
- protected void setUp() throws Exception
+ @Before
+ public void setUp() throws Exception
{
- super.setUp();
config = new CombinedConfiguration();
listener = new CombinedListener();
config.addConfigurationListener(listener);
}
/**
- * Performs clean-up after a test run. If test files have been created, they
- * are removed now.
- */
- protected void tearDown() throws Exception
- {
- if (testFiles != null)
- {
- for (Iterator it = testFiles.iterator(); it.hasNext();)
- {
- File f = (File) it.next();
- if (f.exists())
- {
- assertTrue("Cannot delete test file: " + f, f.delete());
- }
- }
- }
- }
-
- /**
* Tests accessing a newly created combined configuration.
*/
+ @Test
public void testInit()
{
assertEquals("Already configurations contained", 0, config
@@ -132,6 +121,7 @@ public class TestCombinedConfiguration e
/**
* Tests adding a configuration (without further information).
*/
+ @Test
public void testAddConfiguration()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -149,6 +139,7 @@ public class TestCombinedConfiguration e
/**
* Tests adding a configuration with a name.
*/
+ @Test
public void testAddConfigurationWithName()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -159,7 +150,7 @@ public class TestCombinedConfiguration e
assertSame("Added config not found", c, config.getConfiguration(0));
assertSame("Added config not found by name", c, config
.getConfiguration(TEST_NAME));
- Set names = config.getConfigurationNames();
+ Set<String> names = config.getConfigurationNames();
assertEquals("Wrong number of config names", 1, names.size());
assertTrue("Name not found", names.contains(TEST_NAME));
assertTrue("Wrong property value", config.getBoolean(TEST_KEY));
@@ -170,24 +161,18 @@ public class TestCombinedConfiguration e
* Tests adding a configuration with a name when this name already exists.
* This should cause an exception.
*/
+ @Test(expected = ConfigurationRuntimeException.class)
public void testAddConfigurationWithNameTwice()
{
config.addConfiguration(setUpTestConfiguration(), TEST_NAME);
- try
- {
- config.addConfiguration(setUpTestConfiguration(), TEST_NAME,
- "prefix");
- fail("Could add config with same name!");
- }
- catch (ConfigurationRuntimeException cex)
- {
- // ok
- }
+ config.addConfiguration(setUpTestConfiguration(), TEST_NAME,
+ "prefix");
}
/**
* Tests adding a configuration and specifying an at position.
*/
+ @Test
public void testAddConfigurationAt()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -200,6 +185,7 @@ public class TestCombinedConfiguration e
* Tests adding a configuration with a complex at position. Here the at path
* contains a dot, which must be escaped.
*/
+ @Test
public void testAddConfigurationComplexAt()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -216,7 +202,7 @@ public class TestCombinedConfiguration e
*/
private void checkAddConfig(AbstractConfiguration c)
{
- Collection listeners = c.getConfigurationListeners();
+ Collection<ConfigurationListener> listeners = c.getConfigurationListeners();
assertEquals("Wrong number of configuration listeners", 1, listeners
.size());
assertTrue("Combined config is no listener", listeners.contains(config));
@@ -226,22 +212,16 @@ public class TestCombinedConfiguration e
* Tests adding a null configuration. This should cause an exception to be
* thrown.
*/
+ @Test(expected = IllegalArgumentException.class)
public void testAddNullConfiguration()
{
- try
- {
- config.addConfiguration(null);
- fail("Could add null configuration!");
- }
- catch (IllegalArgumentException iex)
- {
- // ok
- }
+ config.addConfiguration(null);
}
/**
* Tests accessing properties if no configurations have been added.
*/
+ @Test
public void testAccessPropertyEmpty()
{
assertFalse("Found a key", config.containsKey(TEST_KEY));
@@ -252,6 +232,7 @@ public class TestCombinedConfiguration e
/**
* Tests accessing properties if multiple configurations have been added.
*/
+ @Test
public void testAccessPropertyMulti()
{
config.addConfiguration(setUpTestConfiguration());
@@ -267,6 +248,7 @@ public class TestCombinedConfiguration e
/**
* Tests removing a configuration.
*/
+ @Test
public void testRemoveConfiguration()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -279,6 +261,7 @@ public class TestCombinedConfiguration e
/**
* Tests removing a configuration by index.
*/
+ @Test
public void testRemoveConfigurationAt()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -290,6 +273,7 @@ public class TestCombinedConfiguration e
/**
* Tests removing a configuration by name.
*/
+ @Test
public void testRemoveConfigurationByName()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -302,6 +286,7 @@ public class TestCombinedConfiguration e
/**
* Tests removing a configuration with a name.
*/
+ @Test
public void testRemoveNamedConfiguration()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -313,6 +298,7 @@ public class TestCombinedConfiguration e
/**
* Tests removing a named configuration by index.
*/
+ @Test
public void testRemoveNamedConfigurationAt()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -324,6 +310,7 @@ public class TestCombinedConfiguration e
/**
* Tests removing a configuration that was not added prior.
*/
+ @Test
public void testRemoveNonContainedConfiguration()
{
assertFalse("Could remove non contained config", config
@@ -334,6 +321,7 @@ public class TestCombinedConfiguration e
/**
* Tests removing a configuration by name, which is not contained.
*/
+ @Test
public void testRemoveConfigurationByUnknownName()
{
assertNull("Could remove configuration by unknown name", config
@@ -361,6 +349,7 @@ public class TestCombinedConfiguration e
* Tests if an update of a contained configuration leeds to an invalidation
* of the combined configuration.
*/
+ @Test
public void testUpdateContainedConfiguration()
{
AbstractConfiguration c = setUpTestConfiguration();
@@ -374,6 +363,7 @@ public class TestCombinedConfiguration e
/**
* Tests if setting a node combiner causes an invalidation.
*/
+ @Test
public void testSetNodeCombiner()
{
NodeCombiner combiner = new UnionCombiner();
@@ -386,29 +376,23 @@ public class TestCombinedConfiguration e
/**
* Tests setting a null node combiner. This should cause an exception.
*/
+ @Test(expected = IllegalArgumentException.class)
public void testSetNullNodeCombiner()
{
- try
- {
- config.setNodeCombiner(null);
- fail("Could set null node combiner!");
- }
- catch (IllegalArgumentException iex)
- {
- // ok
- }
+ config.setNodeCombiner(null);
}
/**
* Tests cloning a combined configuration.
*/
+ @Test
public void testClone()
{
config.addConfiguration(setUpTestConfiguration());
config.addConfiguration(setUpTestConfiguration(), TEST_NAME, "conf2");
config.addConfiguration(new PropertiesConfiguration(), "props");
- CombinedConfiguration cc2 = (CombinedConfiguration) config.clone();
+ CombinedConfiguration cc2 = config.clone();
assertEquals("Wrong number of contained configurations", config
.getNumberOfConfigurations(), cc2.getNumberOfConfigurations());
assertSame("Wrong node combiner", config.getNodeCombiner(), cc2
@@ -435,10 +419,11 @@ public class TestCombinedConfiguration e
/**
* Tests if the cloned configuration is decoupled from the original.
*/
+ @Test
public void testCloneModify()
{
config.addConfiguration(setUpTestConfiguration(), TEST_NAME);
- CombinedConfiguration cc2 = (CombinedConfiguration) config.clone();
+ CombinedConfiguration cc2 = config.clone();
assertTrue("Name is missing", cc2.getConfigurationNames().contains(
TEST_NAME));
cc2.removeConfiguration(TEST_NAME);
@@ -450,6 +435,7 @@ public class TestCombinedConfiguration e
* Tests clearing a combined configuration. This should remove all contained
* configurations.
*/
+ @Test
public void testClear()
{
config.addConfiguration(setUpTestConfiguration(), TEST_NAME, "test");
@@ -468,6 +454,7 @@ public class TestCombinedConfiguration e
/**
* Tests if file-based configurations can be reloaded.
*/
+ @Test
public void testReloading() throws Exception
{
config.setForceReloadCheck(true);
@@ -496,6 +483,7 @@ public class TestCombinedConfiguration e
* Tests whether the reload check works with a subnode configuration. This
* test is related to CONFIGURATION-341.
*/
+ @Test
public void testReloadingSubnodeConfig() throws IOException,
ConfigurationException
{
@@ -515,6 +503,7 @@ public class TestCombinedConfiguration e
* Tests whether reloading works for a combined configuration nested in
* another combined configuration.
*/
+ @Test
public void testReloadingNestedCC() throws IOException,
ConfigurationException
{
@@ -554,6 +543,7 @@ public class TestCombinedConfiguration e
* Tests the gestSource() method when the source property is defined in a
* hierarchical configuration.
*/
+ @Test
public void testGetSourceHierarchical()
{
setUpSourceTest();
@@ -565,6 +555,7 @@ public class TestCombinedConfiguration e
* Tests whether the source configuration can be detected for non
* hierarchical configurations.
*/
+ @Test
public void testGetSourceNonHierarchical()
{
setUpSourceTest();
@@ -576,6 +567,7 @@ public class TestCombinedConfiguration e
* Tests the getSource() method when the passed in key is not contained.
* Result should be null in this case.
*/
+ @Test
public void testGetSourceUnknown()
{
setUpSourceTest();
@@ -587,23 +579,17 @@ public class TestCombinedConfiguration e
* Tests the getSource() method when a null key is passed in. This should
* cause an exception.
*/
+ @Test(expected = IllegalArgumentException.class)
public void testGetSourceNull()
{
- try
- {
- config.getSource(null);
- fail("Could resolve source for null key!");
- }
- catch (IllegalArgumentException iex)
- {
- // ok
- }
+ config.getSource(null);
}
/**
* Tests the getSource() method when the passed in key belongs to the
* combined configuration itself.
*/
+ @Test
public void testGetSourceCombined()
{
setUpSourceTest();
@@ -616,6 +602,7 @@ public class TestCombinedConfiguration e
* Tests the getSource() method when the passed in key refers to multiple
* values, which are all defined in the same source configuration.
*/
+ @Test
public void testGetSourceMulti()
{
setUpSourceTest();
@@ -629,26 +616,20 @@ public class TestCombinedConfiguration e
* Tests the getSource() method when the passed in key refers to multiple
* values defined by different sources. This should cause an exception.
*/
+ @Test(expected = IllegalArgumentException.class)
public void testGetSourceMultiSources()
{
setUpSourceTest();
final String key = "list.key";
config.getConfiguration(CHILD1).addProperty(key, "1,2,3");
config.getConfiguration(CHILD2).addProperty(key, "a,b,c");
- try
- {
- config.getSource(key);
- fail("Multiple sources not detected!");
- }
- catch (IllegalArgumentException iex)
- {
- //ok
- }
+ config.getSource(key);
}
/**
* Tests whether escaped list delimiters are treated correctly.
*/
+ @Test
public void testEscapeListDelimiters()
{
PropertiesConfiguration sub = new PropertiesConfiguration();
@@ -661,6 +642,7 @@ public class TestCombinedConfiguration e
* Tests whether an invalidate event is fired only after a change. This test
* is related to CONFIGURATION-315.
*/
+ @Test
public void testInvalidateAfterChange()
{
ConfigurationEvent event = new ConfigurationEvent(config, 0, null,
@@ -676,6 +658,7 @@ public class TestCombinedConfiguration e
* Tests using a conversion expression engine for child configurations with
* strange keys. This test is related to CONFIGURATION-336.
*/
+ @Test
public void testConversionExpressionEngine()
{
PropertiesConfiguration child = new PropertiesConfiguration();
@@ -699,6 +682,7 @@ public class TestCombinedConfiguration e
* configuration is accessed concurrently. This test is related to
* CONFIGURATION-344.
*/
+ @Test
public void testDeadlockWithReload() throws ConfigurationException,
InterruptedException
{
@@ -712,6 +696,7 @@ public class TestCombinedConfiguration e
{
boolean error = false;
+ @Override
public void run()
{
for (int i = 0; i < count && !error; i++)
@@ -742,29 +727,31 @@ public class TestCombinedConfiguration e
assertFalse("Failure in thread", reloadThread.error);
}
+ @Test
public void testGetConfigurations() throws Exception
{
config.addConfiguration(setUpTestConfiguration());
config.addConfiguration(setUpTestConfiguration(), TEST_NAME, "conf2");
AbstractConfiguration pc = new PropertiesConfiguration();
config.addConfiguration(pc, "props");
- List list = config.getConfigurations();
+ List<AbstractConfiguration> list = config.getConfigurations();
assertNotNull("No list of configurations returned", list);
assertTrue("Incorrect number of configurations", list.size() == 3);
- AbstractConfiguration c = ((AbstractConfiguration)list.get(2));
+ AbstractConfiguration c = list.get(2);
assertTrue("Incorrect configuration", c == pc);
}
+ @Test
public void testGetConfigurationNameList() throws Exception
{
config.addConfiguration(setUpTestConfiguration());
config.addConfiguration(setUpTestConfiguration(), TEST_NAME, "conf2");
AbstractConfiguration pc = new PropertiesConfiguration();
config.addConfiguration(pc, "props");
- List list = config.getConfigurationNameList();
+ List<String> list = config.getConfigurationNameList();
assertNotNull("No list of configurations returned", list);
assertTrue("Incorrect number of configurations", list.size() == 3);
- String name = ((String)list.get(1));
+ String name = list.get(1);
assertNotNull("No name returned", name);
assertTrue("Incorrect configuration name", TEST_NAME.equals(name));
}
@@ -774,6 +761,7 @@ public class TestCombinedConfiguration e
* combined configuration are detected. This test is related to
* CONFIGURATION-368.
*/
+ @Test
public void testReloadWithSubNodeConfig() throws Exception
{
final String reloadContent = "<config><default><xmlReload1>{0}</xmlReload1></default></config>";
@@ -795,6 +783,7 @@ public class TestCombinedConfiguration e
.getInt("xmlReload1"));
}
+ @Test
public void testConcurrentGetAndReload() throws Exception
{
final int threadCount = 5;
@@ -833,6 +822,7 @@ public class TestCombinedConfiguration e
* Tests whether a combined configuration can be copied to an XML
* configuration. This test is related to CONFIGURATION-445.
*/
+ @Test
public void testCombinedCopyToXML() throws ConfigurationException
{
XMLConfiguration x1 = new XMLConfiguration();
@@ -875,6 +865,7 @@ public class TestCombinedConfiguration e
this.index = index;
this.count = count;
}
+ @Override
public void run()
{
failures[index] = 0;
@@ -911,12 +902,6 @@ public class TestCombinedConfiguration e
{
out = new PrintWriter(new FileWriter(file));
out.print(content);
-
- if (testFiles == null)
- {
- testFiles = new ArrayList();
- }
- testFiles.add(file);
}
finally
{
@@ -939,7 +924,7 @@ public class TestCombinedConfiguration e
*/
private File writeFile(String fileName, String content) throws IOException
{
- File file = new File(TEST_DIR, fileName);
+ File file = folder.newFile(fileName);
writeFile(file, content);
return file;
}