diff --git a/src/test/java/org/apache/commons/text/StringSubstitutorTest.java b/src/test/java/org/apache/commons/text/StringSubstitutorTest.java
index 1111d65..c353cff 100644
--- a/src/test/java/org/apache/commons/text/StringSubstitutorTest.java
+++ b/src/test/java/org/apache/commons/text/StringSubstitutorTest.java
@@ -53,6 +53,7 @@
     private static final String CLASSIC_RESULT = "The quick brown fox jumps over the lazy dog.";
     private static final String CLASSIC_TEMPLATE = "The ${animal} jumps over the ${target}.";
     private static final String EMPTY_EXPR = "${}";
+
     protected Map<String, String> values;
 
     private void assertEqualsCharSeq(final CharSequence expected, final CharSequence actual) {
@@ -181,7 +182,11 @@
         values = new HashMap<>();
         // shortest key and value.
         values.put("a", "1");
+        values.put("aa", "11");
+        values.put("aaa", "111");
         values.put("b", "2");
+        values.put("bb", "22");
+        values.put("bbb", "222");
         // normal key and value.
         values.put("animal", ACTUAL_ANIMAL);
         values.put("target", ACTUAL_TARGET);
@@ -660,10 +665,26 @@
      * Tests simple key replace.
      */
     @Test
-    public void testReplaceSimpleShortest() throws IOException {
+    public void testReplaceSimpleKeySize1() throws IOException {
         doTestReplace("1", "${a}", false);
     }
 
+    /**
+     * Tests simple key replace.
+     */
+    @Test
+    public void testReplaceSimpleKeySize2() throws IOException {
+        doTestReplace("11", "${aa}", false);
+    }
+
+    /**
+     * Tests simple key replace.
+     */
+    @Test
+    public void testReplaceSimpleKeySize3() throws IOException {
+        doTestReplace("111", "${aaa}", false);
+    }
+
     @Test
     public void testReplaceTakingCharSequenceReturningNull() {
         final StringSubstitutor strSubstitutor = new StringSubstitutor((StringLookup) null);
@@ -804,7 +825,8 @@
      */
     @Test
     public void testReplaceVariablesCount2() throws IOException {
-        doTestReplace("12", "${a}${b}", false);
+        //doTestReplace("12", "${a}${b}", false);
+        doTestReplace("1122", "${aa}${bb}", false);
         doTestReplace(ACTUAL_ANIMAL + ACTUAL_ANIMAL, "${animal}${animal}", false);
         doTestReplace(ACTUAL_TARGET + ACTUAL_TARGET, "${target}${target}", false);
         doTestReplace(ACTUAL_ANIMAL + ACTUAL_TARGET, "${animal}${target}", false);
@@ -816,6 +838,7 @@
     @Test
     public void testReplaceVariablesCount2NonAdjacent() throws IOException {
         doTestReplace("1 2", "${a} ${b}", false);
+        doTestReplace("11 22", "${aa} ${bb}", false);
         doTestReplace(ACTUAL_ANIMAL + " " + ACTUAL_ANIMAL, "${animal} ${animal}", false);
         doTestReplace(ACTUAL_ANIMAL + " " + ACTUAL_ANIMAL, "${animal} ${animal}", false);
         doTestReplace(ACTUAL_ANIMAL + " " + ACTUAL_ANIMAL, "${animal} ${animal}", false);
@@ -827,6 +850,7 @@
     @Test
     public void testReplaceVariablesCount3() throws IOException {
         doTestReplace("121", "${a}${b}${a}", false);
+        doTestReplace("112211", "${aa}${bb}${aa}", false);
         doTestReplace(ACTUAL_ANIMAL + ACTUAL_ANIMAL + ACTUAL_ANIMAL, "${animal}${animal}${animal}", false);
         doTestReplace(ACTUAL_TARGET + ACTUAL_TARGET + ACTUAL_TARGET, "${target}${target}${target}", false);
     }
@@ -837,6 +861,7 @@
     @Test
     public void testReplaceVariablesCount3NonAdjacent() throws IOException {
         doTestReplace("1 2 1", "${a} ${b} ${a}", false);
+        doTestReplace("11 22 11", "${aa} ${bb} ${aa}", false);
         doTestReplace(ACTUAL_ANIMAL + " " + ACTUAL_ANIMAL + " " + ACTUAL_ANIMAL, "${animal} ${animal} ${animal}",
             false);
         doTestReplace(ACTUAL_TARGET + " " + ACTUAL_TARGET + " " + ACTUAL_TARGET, "${target} ${target} ${target}",
