|
23 | 23 | import org.junit.Test; |
24 | 24 |
|
25 | 25 | import org.eclipse.jdt.testplugin.JavaProjectHelper; |
| 26 | +import org.eclipse.jdt.testplugin.TestOptions; |
26 | 27 |
|
27 | 28 | import org.eclipse.jdt.core.ICompilationUnit; |
28 | 29 | import org.eclipse.jdt.core.IJavaProject; |
|
38 | 39 | import org.eclipse.jdt.ui.text.java.IInvocationContext; |
39 | 40 | import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal; |
40 | 41 |
|
| 42 | +import org.eclipse.jdt.internal.ui.fix.MultiFixMessages; |
| 43 | +import org.eclipse.jdt.internal.ui.text.correction.AssistContext; |
41 | 44 | import org.eclipse.jdt.internal.ui.text.correction.CorrectionMessages; |
42 | 45 |
|
43 | 46 | public class AssistQuickFixTest15 extends QuickFixTest { |
@@ -2075,4 +2078,143 @@ public void foo(String name, String id) { |
2075 | 2078 | assertExpectedExistInProposals(proposals, new String[] { expected }); |
2076 | 2079 | } |
2077 | 2080 |
|
| 2081 | + @Test |
| 2082 | + public void testStringConcatToTextBlock() throws Exception { |
| 2083 | + //Testing new quick assist to place text block quotes on their own lines if option is enabled |
| 2084 | + fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin"); |
| 2085 | + fJProject1.setRawClasspath(projectSetup.getDefaultClasspath(), null); |
| 2086 | + JavaProjectHelper.set15CompilerOptions(fJProject1, false); |
| 2087 | + fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); |
| 2088 | + |
| 2089 | + String str= """ |
| 2090 | + module test { |
| 2091 | + } |
| 2092 | + """; |
| 2093 | + IPackageFragment def= fSourceFolder.createPackageFragment("", false, null); |
| 2094 | + def.createCompilationUnit("module-info.java", str, false, null); |
| 2095 | + |
| 2096 | + IPackageFragment pack1= fSourceFolder.createPackageFragment("test1", false, null); |
| 2097 | + |
| 2098 | + Hashtable<String, String> options = TestOptions.getDefaultOptions(); |
| 2099 | + options.put(DefaultCodeFormatterConstants.FORMATTER_PUT_TEXT_BLOCK_QUOTES_ON_NEW_LINE, DefaultCodeFormatterConstants.TRUE); |
| 2100 | + JavaCore.setOptions(options); |
| 2101 | + |
| 2102 | + String example1 = """ |
| 2103 | + package test1; |
| 2104 | + public class TestQuickAssistTextBlock { |
| 2105 | +
|
| 2106 | + String str1 = "asd" + "bsd\\n" + "cpp" + "osd"; |
| 2107 | +
|
| 2108 | + public void foo1() { |
| 2109 | + System.out.println(str1); |
| 2110 | + } |
| 2111 | +
|
| 2112 | + public static void main(String[] args) { |
| 2113 | + TestQuickAssistTextBlock qatb = new TestQuickAssistTextBlock(); |
| 2114 | + qatb.foo1(); |
| 2115 | + } |
| 2116 | + } |
| 2117 | + """; |
| 2118 | + ICompilationUnit cu = pack1.createCompilationUnit("TestQuickAssistTextBlock.java", example1, false, null); |
| 2119 | + int offset= example1.indexOf("asd"); |
| 2120 | + AssistContext context= getCorrectionContext(cu, offset, 0); |
| 2121 | + ArrayList<IJavaCompletionProposal> proposals= collectAssists(context, false); |
| 2122 | + assertCorrectLabels(proposals); |
| 2123 | + assertProposalExists(proposals, MultiFixMessages.StringConcatToTextBlockCleanUp_description); |
| 2124 | + String expected = """ |
| 2125 | + package test1; |
| 2126 | + public class TestQuickAssistTextBlock { |
| 2127 | +
|
| 2128 | + String str1 =\s |
| 2129 | + \"\"\" |
| 2130 | + asd\\ |
| 2131 | + bsd |
| 2132 | + cpp\\ |
| 2133 | + osd\\ |
| 2134 | + \"\"\"; |
| 2135 | +
|
| 2136 | + public void foo1() { |
| 2137 | + System.out.println(str1); |
| 2138 | + } |
| 2139 | +
|
| 2140 | + public static void main(String[] args) { |
| 2141 | + TestQuickAssistTextBlock qatb = new TestQuickAssistTextBlock(); |
| 2142 | + qatb.foo1(); |
| 2143 | + } |
| 2144 | + } |
| 2145 | + """; |
| 2146 | + assertExpectedExistInProposals(proposals, new String[] { expected }); |
| 2147 | + options.put(DefaultCodeFormatterConstants.FORMATTER_PUT_TEXT_BLOCK_QUOTES_ON_NEW_LINE, DefaultCodeFormatterConstants.FALSE); |
| 2148 | + JavaCore.setOptions(options); |
| 2149 | + } |
| 2150 | + |
| 2151 | + @Test |
| 2152 | + public void testStringBufferToTextBlock() throws Exception { |
| 2153 | + //Testing new quick assist to place text block quotes on their own lines if option is enabled |
| 2154 | + fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin"); |
| 2155 | + fJProject1.setRawClasspath(projectSetup.getDefaultClasspath(), null); |
| 2156 | + JavaProjectHelper.set15CompilerOptions(fJProject1, false); |
| 2157 | + fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); |
| 2158 | + |
| 2159 | + String str= """ |
| 2160 | + module test { |
| 2161 | + } |
| 2162 | + """; |
| 2163 | + IPackageFragment def= fSourceFolder.createPackageFragment("", false, null); |
| 2164 | + def.createCompilationUnit("module-info.java", str, false, null); |
| 2165 | + |
| 2166 | + IPackageFragment pack1= fSourceFolder.createPackageFragment("test1", false, null); |
| 2167 | + |
| 2168 | + Hashtable<String, String> options = TestOptions.getDefaultOptions(); |
| 2169 | + options.put(DefaultCodeFormatterConstants.FORMATTER_PUT_TEXT_BLOCK_QUOTES_ON_NEW_LINE, DefaultCodeFormatterConstants.TRUE); |
| 2170 | + JavaCore.setOptions(options); |
| 2171 | + |
| 2172 | + String example1 = """ |
| 2173 | + package test1; |
| 2174 | + public class TestQuickAssistTextBlock { |
| 2175 | +
|
| 2176 | + String str1 ="asd\\nbsd\\nasm\\n\\t\\tcpp\\n"; |
| 2177 | +
|
| 2178 | + public void foo1() { |
| 2179 | + System.out.println(str1); |
| 2180 | + } |
| 2181 | +
|
| 2182 | + public static void main(String[] args) { |
| 2183 | + TestQuickAssistTextBlock qatb = new TestQuickAssistTextBlock(); |
| 2184 | + qatb.foo1(); |
| 2185 | + } |
| 2186 | + } |
| 2187 | + """; |
| 2188 | + ICompilationUnit cu = pack1.createCompilationUnit("TestQuickAssistTextBlock.java", example1, false, null); |
| 2189 | + int offset= example1.indexOf("asd"); |
| 2190 | + AssistContext context= getCorrectionContext(cu, offset, 10); |
| 2191 | + ArrayList<IJavaCompletionProposal> proposals= collectAssists(context, false); |
| 2192 | + assertCorrectLabels(proposals); |
| 2193 | + assertProposalExists(proposals, MultiFixMessages.StringToTextBlock_description); |
| 2194 | + String expected = """ |
| 2195 | + package test1; |
| 2196 | + public class TestQuickAssistTextBlock { |
| 2197 | +
|
| 2198 | + String str1 = |
| 2199 | + \"\"\" |
| 2200 | + asd |
| 2201 | + bsd |
| 2202 | + asm |
| 2203 | + cpp |
| 2204 | + \"\"\"; |
| 2205 | +
|
| 2206 | + public void foo1() { |
| 2207 | + System.out.println(str1); |
| 2208 | + } |
| 2209 | +
|
| 2210 | + public static void main(String[] args) { |
| 2211 | + TestQuickAssistTextBlock qatb = new TestQuickAssistTextBlock(); |
| 2212 | + qatb.foo1(); |
| 2213 | + } |
| 2214 | + } |
| 2215 | + """; |
| 2216 | + assertExpectedExistInProposals(proposals, new String[] { expected }); |
| 2217 | + options.put(DefaultCodeFormatterConstants.FORMATTER_PUT_TEXT_BLOCK_QUOTES_ON_NEW_LINE, DefaultCodeFormatterConstants.FALSE); |
| 2218 | + JavaCore.setOptions(options); |
| 2219 | + } |
2078 | 2220 | } |
0 commit comments