@@ -143,9 +143,12 @@ void placeholderValueContainingSeparatorIsHandledAsIs() {
143143
144144 @ Test
145145 void placeholdersWithoutEscapeCharAreNotEscaped () {
146- PlaceholderResolver resolver = mockPlaceholderResolver ("p1" , "v1" );
146+ PlaceholderResolver resolver = mockPlaceholderResolver ("p1" , "v1" , "p2" , "v2" , "p3" , "v3" , "p4" , "v4" );
147147 assertThat (this .parser .replacePlaceholders ("\\ ${p1}" , resolver )).isEqualTo ("\\ v1" );
148- verifyPlaceholderResolutions (resolver , "p1" );
148+ assertThat (this .parser .replacePlaceholders ("\\ \\ ${p2}" , resolver )).isEqualTo ("\\ \\ v2" );
149+ assertThat (this .parser .replacePlaceholders ("\\ ${p3}\\ " , resolver )).isEqualTo ("\\ v3\\ " );
150+ assertThat (this .parser .replacePlaceholders ("a\\ ${p4}\\ z" , resolver )).isEqualTo ("a\\ v4\\ z" );
151+ verifyPlaceholderResolutions (resolver , "p1" , "p2" , "p3" , "p4" );
149152 }
150153
151154 @ Test
@@ -295,7 +298,13 @@ static Stream<Arguments> escapedPlaceholders() {
295298 Arguments .of ("${p4}" , "adc${p1}" ),
296299 Arguments .of ("${p5}" , "adcv1" ),
297300 Arguments .of ("${p6}" , "adcdef${p1}" ),
298- Arguments .of ("${p7}" , "adc\\ ${" )
301+ Arguments .of ("${p7}" , "adc\\ ${" ),
302+ // Double backslash
303+ Arguments .of ("DOMAIN\\ \\ ${user.name}" , "DOMAIN\\ ${user.name}" ),
304+ // Triple backslash
305+ Arguments .of ("triple\\ \\ \\ ${backslash}" , "triple\\ \\ ${backslash}" ),
306+ // Multiple escaped placeholders
307+ Arguments .of ("start\\ ${prop1}middle\\ ${prop2}end" , "start${prop1}middle${prop2}end" )
299308 );
300309 }
301310
0 commit comments