diff options
author | Joerg Schaible <joehni@apache.org> | 2010-03-15 17:11:55 +0000 |
---|---|---|
committer | Joerg Schaible <joehni@apache.org> | 2010-03-15 17:11:55 +0000 |
commit | 022d08cfd31475073c664da109ad50bfe9539d82 (patch) | |
tree | b6e845b1c2e83e5f5f05388eca6922af655ee987 /src/test/java | |
parent | 4d7a616ccaf6c4a2aef171999f04c71d3749313d (diff) | |
download | apache-commons-lang-022d08cfd31475073c664da109ad50bfe9539d82.tar.gz |
Fix DefaultExceptionContext.addValue that overwrites information in a recursive situation (LANG-605). Allow explicit replacement of a label with the new replaceValue methods.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@923341 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/test/java')
3 files changed, 86 insertions, 40 deletions
diff --git a/src/test/java/org/apache/commons/lang3/exception/ContextedExceptionTest.java b/src/test/java/org/apache/commons/lang3/exception/ContextedExceptionTest.java index e1a851b7f..b2b1b91b5 100644 --- a/src/test/java/org/apache/commons/lang3/exception/ContextedExceptionTest.java +++ b/src/test/java/org/apache/commons/lang3/exception/ContextedExceptionTest.java @@ -26,7 +26,7 @@ import org.apache.commons.lang3.StringUtils; /** * JUnit tests for ContextedException. * @author D. Ashmore - * + * @author Apache Software Foundation */ public class ContextedExceptionTest extends TestCase { @@ -34,10 +34,6 @@ public class ContextedExceptionTest extends TestCase { private static final String TEST_MESSAGE = "Test Message"; private ContextedException contextedException; - public ContextedExceptionTest(String name) { - super(name); - } - public void testContextedException() { contextedException = new ContextedException(); String message = contextedException.getMessage(); @@ -88,8 +84,7 @@ public class ContextedExceptionTest extends TestCase { .addValue("test1", null) .addValue("test2", "some value") .addValue("test Date", new Date()) - .addValue("test Nbr", new Integer(5)) - .addValue("test Poorly written obj", new ObjectWithFaultyToString()); + .addValue("test Nbr", new Integer(5)); String message = contextedException.getMessage(); assertTrue(message.indexOf(TEST_MESSAGE)>=0); @@ -97,27 +92,49 @@ public class ContextedExceptionTest extends TestCase { assertTrue(message.indexOf("test2")>=0); assertTrue(message.indexOf("test Date")>=0); assertTrue(message.indexOf("test Nbr")>=0); - assertTrue(message.indexOf("test Poorly written obj")>=0); assertTrue(message.indexOf("some value")>=0); assertTrue(message.indexOf("5")>=0); - assertTrue(message.indexOf("Crap")>=0); assertTrue(contextedException.getValue("test1") == null); assertTrue(contextedException.getValue("test2").equals("some value")); - assertTrue(contextedException.getValue("crap") == null); - assertTrue(contextedException.getValue("test Poorly written obj") instanceof ObjectWithFaultyToString); - assertTrue(contextedException.getLabelSet().size() == 5); + assertTrue(contextedException.getLabelSet().size() == 4); assertTrue(contextedException.getLabelSet().contains("test1")); assertTrue(contextedException.getLabelSet().contains("test2")); assertTrue(contextedException.getLabelSet().contains("test Date")); assertTrue(contextedException.getLabelSet().contains("test Nbr")); + + contextedException.addValue("test2", "different value"); + assertTrue(contextedException.getLabelSet().size() == 5); + assertTrue(contextedException.getLabelSet().contains("test2")); + assertTrue(contextedException.getLabelSet().contains("test2[1]")); + + String contextMessage = contextedException.getFormattedExceptionMessage(null); + assertTrue(contextMessage.indexOf(TEST_MESSAGE) == -1); + assertTrue(contextedException.getMessage().endsWith(contextMessage)); + } + + public void testReplaceValue() { + contextedException = new ContextedException(new Exception(TEST_MESSAGE)) + .addValue("test Poorly written obj", new ObjectWithFaultyToString()); + + String message = contextedException.getMessage(); + assertTrue(message.indexOf(TEST_MESSAGE)>=0); + assertTrue(message.indexOf("test Poorly written obj")>=0); + assertTrue(message.indexOf("Crap")>=0); + + assertTrue(contextedException.getValue("crap") == null); + assertTrue(contextedException.getValue("test Poorly written obj") instanceof ObjectWithFaultyToString); + + assertTrue(contextedException.getLabelSet().size() == 1); assertTrue(contextedException.getLabelSet().contains("test Poorly written obj")); assertTrue(!contextedException.getLabelSet().contains("crap")); - contextedException.addValue("test Poorly written obj", "replacement"); - + contextedException.replaceValue("test Poorly written obj", "replacement"); + + assertTrue(contextedException.getLabelSet().size() == 1); + String contextMessage = contextedException.getFormattedExceptionMessage(null); assertTrue(contextMessage.indexOf(TEST_MESSAGE) == -1); assertTrue(contextedException.getMessage().endsWith(contextMessage)); @@ -134,10 +151,6 @@ public class ContextedExceptionTest extends TestCase { String message = contextedException.getMessage(); assertTrue(message != null); } - - public void testGetMessage() { - testAddValue(); - } static class ObjectWithFaultyToString implements Serializable { diff --git a/src/test/java/org/apache/commons/lang3/exception/ContextedRuntimeExceptionTest.java b/src/test/java/org/apache/commons/lang3/exception/ContextedRuntimeExceptionTest.java index 192d94f6b..4efb133b5 100644 --- a/src/test/java/org/apache/commons/lang3/exception/ContextedRuntimeExceptionTest.java +++ b/src/test/java/org/apache/commons/lang3/exception/ContextedRuntimeExceptionTest.java @@ -26,6 +26,7 @@ import org.apache.commons.lang3.exception.ContextedExceptionTest.ObjectWithFault /** * JUnit tests for ContextedRuntimeException. * @author D. Ashmore + * @author Apache Software Foundation * */ public class ContextedRuntimeExceptionTest extends TestCase { @@ -34,10 +35,6 @@ public class ContextedRuntimeExceptionTest extends TestCase { private static final String TEST_MESSAGE = "Test Message"; private ContextedRuntimeException contextedRuntimeException; - public ContextedRuntimeExceptionTest(String name) { - super(name); - } - public void testContextedException() { contextedRuntimeException = new ContextedRuntimeException(); String message = contextedRuntimeException.getMessage(); @@ -88,8 +85,7 @@ public class ContextedRuntimeExceptionTest extends TestCase { .addValue("test1", null) .addValue("test2", "some value") .addValue("test Date", new Date()) - .addValue("test Nbr", new Integer(5)) - .addValue("test Poorly written obj", new ObjectWithFaultyToString()); + .addValue("test Nbr", new Integer(5)); String message = contextedRuntimeException.getMessage(); assertTrue(message.indexOf(TEST_MESSAGE)>=0); @@ -97,27 +93,49 @@ public class ContextedRuntimeExceptionTest extends TestCase { assertTrue(message.indexOf("test2")>=0); assertTrue(message.indexOf("test Date")>=0); assertTrue(message.indexOf("test Nbr")>=0); - assertTrue(message.indexOf("test Poorly written obj")>=0); assertTrue(message.indexOf("some value")>=0); assertTrue(message.indexOf("5")>=0); - assertTrue(message.indexOf("Crap")>=0); assertTrue(contextedRuntimeException.getValue("test1") == null); assertTrue(contextedRuntimeException.getValue("test2").equals("some value")); - assertTrue(contextedRuntimeException.getValue("crap") == null); - assertTrue(contextedRuntimeException.getValue("test Poorly written obj") instanceof ObjectWithFaultyToString); - assertTrue(contextedRuntimeException.getLabelSet().size() == 5); + assertTrue(contextedRuntimeException.getLabelSet().size() == 4); assertTrue(contextedRuntimeException.getLabelSet().contains("test1")); assertTrue(contextedRuntimeException.getLabelSet().contains("test2")); assertTrue(contextedRuntimeException.getLabelSet().contains("test Date")); assertTrue(contextedRuntimeException.getLabelSet().contains("test Nbr")); + + contextedRuntimeException.addValue("test2", "different value"); + assertTrue(contextedRuntimeException.getLabelSet().size() == 5); + assertTrue(contextedRuntimeException.getLabelSet().contains("test2")); + assertTrue(contextedRuntimeException.getLabelSet().contains("test2[1]")); + + String contextMessage = contextedRuntimeException.getFormattedExceptionMessage(null); + assertTrue(contextMessage.indexOf(TEST_MESSAGE) == -1); + assertTrue(contextedRuntimeException.getMessage().endsWith(contextMessage)); + } + + public void testReplaceValue() { + contextedRuntimeException = new ContextedRuntimeException(new Exception(TEST_MESSAGE)) + .addValue("test Poorly written obj", new ObjectWithFaultyToString()); + + String message = contextedRuntimeException.getMessage(); + assertTrue(message.indexOf(TEST_MESSAGE)>=0); + assertTrue(message.indexOf("test Poorly written obj")>=0); + assertTrue(message.indexOf("Crap")>=0); + + assertTrue(contextedRuntimeException.getValue("crap") == null); + assertTrue(contextedRuntimeException.getValue("test Poorly written obj") instanceof ObjectWithFaultyToString); + + assertTrue(contextedRuntimeException.getLabelSet().size() == 1); assertTrue(contextedRuntimeException.getLabelSet().contains("test Poorly written obj")); assertTrue(!contextedRuntimeException.getLabelSet().contains("crap")); - contextedRuntimeException.addValue("test Poorly written obj", "replacement"); - + contextedRuntimeException.replaceValue("test Poorly written obj", "replacement"); + + assertTrue(contextedRuntimeException.getLabelSet().size() == 1); + String contextMessage = contextedRuntimeException.getFormattedExceptionMessage(null); assertTrue(contextMessage.indexOf(TEST_MESSAGE) == -1); assertTrue(contextedRuntimeException.getMessage().endsWith(contextMessage)); @@ -134,10 +152,4 @@ public class ContextedRuntimeExceptionTest extends TestCase { String message = contextedRuntimeException.getMessage(); assertTrue(message != null); } - - public void testGetMessage() { - testAddValue(); - } - - } diff --git a/src/test/java/org/apache/commons/lang3/exception/DefaultExceptionContextTest.java b/src/test/java/org/apache/commons/lang3/exception/DefaultExceptionContextTest.java index 95ab7d9c1..61c04d384 100644 --- a/src/test/java/org/apache/commons/lang3/exception/DefaultExceptionContextTest.java +++ b/src/test/java/org/apache/commons/lang3/exception/DefaultExceptionContextTest.java @@ -23,7 +23,7 @@ import org.apache.commons.lang3.exception.ContextedExceptionTest.ObjectWithFault import junit.framework.TestCase; /** - * JUnit tests for DefaultExceptionContext + * JUnit tests for DefaultExceptionContext. * @author D. Ashmore * */ @@ -46,21 +46,42 @@ public class DefaultExceptionContextTest extends TestCase { } public void testAddValue() { + defaultExceptionContext.addValue("test2", "different value"); String message = defaultExceptionContext.getFormattedExceptionMessage("This is an error"); assertTrue(message.indexOf("This is an error")>=0); assertTrue(message.indexOf("test1")>=0); assertTrue(message.indexOf("test2")>=0); + assertTrue(message.indexOf("test2[1]")>=0); assertTrue(message.indexOf("test Date")>=0); assertTrue(message.indexOf("test Nbr")>=0); assertTrue(message.indexOf("test Poorly written obj")>=0); assertTrue(message.indexOf("some value")>=0); + assertTrue(message.indexOf("different value")>=0); assertTrue(message.indexOf("5")>=0); assertTrue(message.indexOf("Crap")>=0); - - //contextedException.printStackTrace(); } + public void testReplaceValue() { + defaultExceptionContext.replaceValue("test2", "different value"); + defaultExceptionContext.replaceValue("test3", "3"); + + String message = defaultExceptionContext.getFormattedExceptionMessage("This is an error"); + assertTrue(message.indexOf("This is an error")>=0); + assertTrue(message.indexOf("test1")>=0); + assertTrue(message.indexOf("test2")>=0); + assertTrue(message.indexOf("test3")>=0); + assertTrue(message.indexOf("test Date")>=0); + assertTrue(message.indexOf("test Nbr")>=0); + assertTrue(message.indexOf("test Poorly written obj")>=0); + assertTrue(message.indexOf("different value")>=0); + assertTrue(message.indexOf("5")>=0); + assertTrue(message.indexOf("Crap")>=0); + + assertTrue(message.indexOf("test2[1]")<0); + assertTrue(message.indexOf("some value")<0); +} + public void testFormattedExceptionMessageNull() { defaultExceptionContext = new DefaultExceptionContext(); defaultExceptionContext.getFormattedExceptionMessage(null); |