From 4a7928f3763a205d7dc51a05e8ed16a49e17ad2f Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Mon, 19 Jan 2015 16:45:13 +0300 Subject: [PATCH] IDEA-69974 Fold regions are not properly created if 'Collapse All' is invoked right after opening editor test case added --- ...gProcessingOnDocumentModificationTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/java/java-tests/testSrc/com/intellij/openapi/editor/impl/FoldingProcessingOnDocumentModificationTest.java b/java/java-tests/testSrc/com/intellij/openapi/editor/impl/FoldingProcessingOnDocumentModificationTest.java index 6da536d86d2c..ad12ef131055 100644 --- a/java/java-tests/testSrc/com/intellij/openapi/editor/impl/FoldingProcessingOnDocumentModificationTest.java +++ b/java/java-tests/testSrc/com/intellij/openapi/editor/impl/FoldingProcessingOnDocumentModificationTest.java @@ -16,6 +16,7 @@ package com.intellij.openapi.editor.impl; import com.intellij.codeInsight.folding.CodeFoldingManager; +import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.editor.CaretModel; import com.intellij.openapi.editor.FoldRegion; import com.intellij.testFramework.TestFileType; @@ -55,7 +56,31 @@ public class FoldingProcessingOnDocumentModificationTest extends AbstractEditorT assertFalse(foldRegion.isExpanded()); } + public void testCollapseAllHappensBeforeFirstCodeFoldingPass() throws Exception { + init("class Foo {\n" + + " void m() {\n" + + " System.out.println();\n" + + " System.out.println();\n" + + " }\n" + + "}", TestFileType.JAVA); + + buildInitialFoldRegions(); + executeAction(IdeActions.ACTION_COLLAPSE_ALL_REGIONS); + runFoldingPass(true); + assertEquals(1, myEditor.getFoldingModel().getAllFoldRegions().length); + } + + private static void buildInitialFoldRegions() { + CodeFoldingManager.getInstance(getProject()).buildInitialFoldings(myEditor); + } + private static void updateFoldRegions() { CodeFoldingManager.getInstance(getProject()).updateFoldRegions(myEditor); } + + private static void runFoldingPass(boolean firstTime) { + Runnable runnable = CodeFoldingManager.getInstance(getProject()).updateFoldRegionsAsync(myEditor, firstTime); + assertNotNull(runnable); + runnable.run(); + } }