mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-26 15:27:45 +07:00
fixed EA-69515, do not reverse block's subBlocks collection, added few test for NewLineBlocksIterator
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<root>
|
||||
<item name="java.lang.String String(byte[], java.lang.String) 1">
|
||||
<annotation name="org.jetbrains.annotations.NonNls" />
|
||||
<annotation name="org.jetbrains.annotations.NotNull" />
|
||||
</item>
|
||||
</root>
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
|
||||
|
||||
import java.lang.Override;
|
||||
import java.lang.Runnable;
|
||||
|
||||
|
||||
|
||||
public class T {
|
||||
|
||||
|
||||
|
||||
public void test() {
|
||||
run(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("AAAA");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.psi.autodetect;
|
||||
|
||||
import com.intellij.formatting.Block;
|
||||
import com.intellij.formatting.FormattingModel;
|
||||
import com.intellij.formatting.FormattingModelBuilder;
|
||||
import com.intellij.lang.LanguageFormatting;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.psi.formatter.common.NewLineBlocksIterator;
|
||||
import com.intellij.testFramework.LightPlatformCodeInsightTestCase;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.junit.Assert;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
public abstract class AbstractNewLineBlocksIteratorTest extends LightPlatformCodeInsightTestCase {
|
||||
|
||||
@NotNull
|
||||
protected String getFileName() {
|
||||
return getTestName(true);
|
||||
}
|
||||
|
||||
protected void checkNewLineBlocksStartOffsets(int[] newLineStartOffsets) {
|
||||
Iterator<Block> iterator = createNewLineBlocksIterator();
|
||||
|
||||
int i = 0;
|
||||
while (iterator.hasNext()) {
|
||||
Assert.assertTrue("Detected unspecified new line block start offset ", i < newLineStartOffsets.length);
|
||||
Block next = iterator.next();
|
||||
Assert.assertEquals("Block start offset do not match ", newLineStartOffsets[i++], next.getTextRange().getStartOffset());
|
||||
}
|
||||
|
||||
Assert.assertEquals("Not detected new line block start offset ", i, newLineStartOffsets.length);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected static Iterator<Block> createNewLineBlocksIterator() {
|
||||
FormattingModelBuilder builder = LanguageFormatting.INSTANCE.forContext(myFile);
|
||||
Assert.assertNotNull(builder);
|
||||
|
||||
CodeStyleSettings settings = CodeStyleSettingsManager.getInstance(getProject()).getCurrentSettings();
|
||||
FormattingModel model = builder.createModel(myFile, settings);
|
||||
|
||||
Block root = model.getRootBlock();
|
||||
Document document = PsiDocumentManager.getInstance(getProject()).getDocument(myFile);
|
||||
Assert.assertNotNull(document);
|
||||
|
||||
return new NewLineBlocksIterator(root, document);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.psi.autodetect;
|
||||
|
||||
import com.intellij.JavaTestUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class NewLineBlocksIteratorTest extends AbstractNewLineBlocksIteratorTest {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected String getTestDataPath() {
|
||||
return JavaTestUtil.getJavaTestDataPath() +
|
||||
"/psi/autodetect/";
|
||||
}
|
||||
|
||||
public void testSimpleFileNewBlockOffsetDetection() {
|
||||
configureByFile(getFileName() + ".java");
|
||||
|
||||
int[] newLineBlocksStartOffsets = new int[] {
|
||||
0, 3, 30, 60, 82, 107, 136, 154, 184, 220, 226, 232, 237
|
||||
};
|
||||
|
||||
checkNewLineBlocksStartOffsets(newLineBlocksStartOffsets);
|
||||
}
|
||||
|
||||
public void testDoNotReverseBlocks() {
|
||||
configureByFile(getFileName() + ".xml");
|
||||
|
||||
int[] newLineBlocksStartOffsets = new int[] {
|
||||
0, 39, 48, 118, 177, 235, 243
|
||||
};
|
||||
|
||||
checkNewLineBlocksStartOffsets(newLineBlocksStartOffsets);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user