mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 06:05:01 +07:00
IDEA-108433 ("replace String concatenation with MessageFormat.format()" intention escapes curly brackets incorrectly)
This commit is contained in:
+20
-19
@@ -3,36 +3,37 @@
|
||||
*/
|
||||
package com.intellij.codeInspection;
|
||||
|
||||
import com.intellij.codeInsight.intention.impl.ConcatenationToMessageFormatAction;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiExpression;
|
||||
import com.intellij.psi.util.PsiConcatenationUtil;
|
||||
import com.intellij.testFramework.LightIdeaTestCase;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ConcatenationToMessageFormatActionTest extends LightIdeaTestCase {
|
||||
|
||||
public void doTest(String expressionText, String messageFormatText, String... foundExpressionTexts) {
|
||||
final PsiExpression expression = JavaPsiFacade.getElementFactory(getProject()).createExpressionFromText(expressionText, null);
|
||||
final StringBuilder result = new StringBuilder();
|
||||
final ArrayList<PsiExpression> args = new ArrayList<PsiExpression>();
|
||||
PsiConcatenationUtil.buildFormatString(expression, result, args, false);
|
||||
assertEquals(messageFormatText, result.toString());
|
||||
assertEquals(foundExpressionTexts.length, args.size());
|
||||
for (int i = 0; i < foundExpressionTexts.length; i++) {
|
||||
final String foundExpressionText = foundExpressionTexts[i];
|
||||
assertEquals(foundExpressionText, args.get(i).getText());
|
||||
}
|
||||
}
|
||||
|
||||
public void test1() throws Exception{
|
||||
final String text = "\"aaa 'bbb' '\" + ((java.lang.String)ccc) + \"'\"";
|
||||
final PsiExpression expression = JavaPsiFacade.getInstance(getProject()).getElementFactory().createExpressionFromText(
|
||||
text, null
|
||||
);
|
||||
final StringBuilder result = new StringBuilder();
|
||||
ConcatenationToMessageFormatAction.buildMessageFormatString(expression,
|
||||
result,
|
||||
new ArrayList<PsiExpression>());
|
||||
assertEquals("aaa ''bbb'' ''{0}''", result.toString());
|
||||
doTest("\"aaa 'bbb' '\" + ((java.lang.String)ccc) + \"'\"", "aaa ''bbb'' ''{0}''", "ccc");
|
||||
}
|
||||
|
||||
public void test2() throws Exception {
|
||||
final String text = "1 + 2 + 3 + \"{}'\" + '\\n' + ((java.lang.String)ccc)";
|
||||
final PsiExpression expression = JavaPsiFacade.getElementFactory(getProject()).createExpressionFromText(text, null);
|
||||
final StringBuilder result = new StringBuilder();
|
||||
final ArrayList<PsiExpression> args = new ArrayList<PsiExpression>();
|
||||
ConcatenationToMessageFormatAction.buildMessageFormatString(expression, result, args);
|
||||
assertEquals("{0}'{'}''\\n{1}", result.toString());
|
||||
assertEquals(2, args.size());
|
||||
assertEquals("1 + 2 + 3", args.get(0).getText());
|
||||
assertEquals("ccc", args.get(1).getText());
|
||||
doTest("1 + 2 + 3 + \"{}'\" + '\\n' + ((java.lang.String)ccc)", "{0}'{}'''\\n{1}", "1 + 2 + 3", "ccc");
|
||||
}
|
||||
|
||||
public void test3() throws Exception {
|
||||
doTest("\"Test{A = \" + 1 + \", B = \" + 2 + \", C = \" + 3 + \"}\"", "Test'{'A = {0}, B = {1}, C = {2}'}'", "1", "2", "3");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user