Three new boundary tests for VariableFormatterTest.java.

git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@224561 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Gary D. Gregory 2005-07-23 22:26:02 +00:00
parent cdb9168538
commit c8d6447928
1 changed files with 46 additions and 10 deletions

View File

@ -30,7 +30,13 @@ import org.apache.commons.lang.text.VariableFormatter.MapVariableResolver;
* @version $Id$
*/
public class VariableFormatterTest extends TestCase {
private static final String KEY_TARGET = "target";
private static final String KEY_ANIMAL = "animal";
static final String REPLACE_TEMPLATE = "The ${animal} jumps over the ${target}.";
static final String REPLACE_TEMPLATE_NO_ESCAPE = "The {animal} jumps over the {target}.";
static final String REPLACE_TEMPLATE_NO_PREFIX = "The $animal} jumps over the $target}.";
static final String REPLACE_TEMPLATE_NO_SUFFIX = "The ${animal jumps over the ${target.";
private VariableFormatter format;
@ -59,8 +65,8 @@ public class VariableFormatterTest extends TestCase {
protected void setUp() throws Exception {
super.setUp();
Map map = new HashMap();
map.put("animal", "quick brown fox");
map.put("target", "lazy dog");
map.put(KEY_ANIMAL, "quick brown fox");
map.put(KEY_TARGET, "lazy dog");
setValues(map);
setFormat(new VariableFormatter(map));
}
@ -78,8 +84,8 @@ public class VariableFormatterTest extends TestCase {
*/
public void testCyclicReplacement() {
Map valuesMap = new HashMap();
valuesMap.put("animal", "${critter}");
valuesMap.put("target", "${pet}");
valuesMap.put(KEY_ANIMAL, "${critter}");
valuesMap.put(KEY_TARGET, "${pet}");
valuesMap.put("pet", "${petCharacteristic} dog");
valuesMap.put("petCharacteristic", "lazy");
valuesMap.put("critter", "${critterSpeed} ${critterColor} ${critterType}");
@ -160,8 +166,8 @@ public class VariableFormatterTest extends TestCase {
public void testNonInstanceMethods() {
assertEquals("The quick brown fox jumps over the lazy dog.", VariableFormatter
.replace(values, REPLACE_TEMPLATE));
values.put("animal", "cow");
values.put("target", "moon");
values.put(KEY_ANIMAL, "cow");
values.put(KEY_TARGET, "moon");
assertEquals("The cow jumps over the moon.", VariableFormatter.replace(values, "&", ";",
"The &animal; jumps over the ⌖."));
}
@ -186,8 +192,8 @@ public class VariableFormatterTest extends TestCase {
*/
public void testRecursiveReplacement() {
Map valuesMap = new HashMap();
valuesMap.put("animal", "${critter}");
valuesMap.put("target", "${pet}");
valuesMap.put(KEY_ANIMAL, "${critter}");
valuesMap.put(KEY_TARGET, "${pet}");
valuesMap.put("pet", "${petCharacteristic} dog");
valuesMap.put("petCharacteristic", "lazy");
valuesMap.put("critter", "${critterSpeed} ${critterColor} ${critterType}");
@ -204,13 +210,43 @@ public class VariableFormatterTest extends TestCase {
public void testReplace() {
assertEquals("The quick brown fox jumps over the lazy dog.", this.getFormat().replaceObject(REPLACE_TEMPLATE));
Map map = this.getValueMap();
map.put("animal", "cow");
map.put("target", "moon");
map.put(KEY_ANIMAL, "cow");
map.put(KEY_TARGET, "moon");
assertEquals("The cow jumps over the moon.", this.getFormat().replace(REPLACE_TEMPLATE));
assertEquals("Variable ${var} is unknown!", this.getFormat().replace("Variable ${var} is unknown!"));
}
/**
* Tests a replace template with missing escape strings.
*/
public void testReplaceNoEscape() {
testReplaceNoElement(REPLACE_TEMPLATE_NO_ESCAPE);
}
/**
* Tests a replace template with missing prefix strings.
*/
public void testReplaceNoPrefix() {
testReplaceNoElement(REPLACE_TEMPLATE_NO_PREFIX);
}
/**
* Tests a replace template with missing postfix strings.
*/
public void testReplaceNoSuffix() {
testReplaceNoElement(REPLACE_TEMPLATE_NO_SUFFIX);
}
void testReplaceNoElement(String badReplaceTemplate) {
assertEquals(badReplaceTemplate, this.getFormat().replaceObject(badReplaceTemplate));
Map map = this.getValueMap();
map.put(KEY_ANIMAL, "cow");
map.put(KEY_TARGET, "moon");
assertEquals("The cow jumps over the moon.", this.getFormat().replace(REPLACE_TEMPLATE));
assertEquals(badReplaceTemplate, this.getFormat().replaceObject(badReplaceTemplate));
}
/**
* Tests source texts with nothing to replace.
*/