replaced <code></code> with more concise {@code}
[idea/community.git] / platform / platform-tests / testSrc / com / intellij / openapi / editor / actions / AbstractRegionToKillRingTest.java
1 /*
2  * Copyright 2000-2011 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.openapi.editor.actions;
17
18 import com.intellij.openapi.editor.SelectionModel;
19 import com.intellij.openapi.util.Pair;
20 import com.intellij.testFramework.LightPlatformCodeInsightTestCase;
21 import org.jetbrains.annotations.NotNull;
22
23 /**
24  * @author Denis Zhdanov
25  * @since 4/19/11 6:32 PM
26  */
27 public abstract class AbstractRegionToKillRingTest extends LightPlatformCodeInsightTestCase {
28
29   public void testNoSelection() throws Exception {
30     doTest("this is a test string");
31   }
32
33   public void testSingleLineSelection() throws Exception {
34     doTest("this is a t<selection>est str</selection>ing");
35   }
36
37   public void testMultiLineSelection() throws Exception {
38     doTest(
39       "this is the fir<selection>st string\n" +
40       "this is the sec</selection>ond string"
41     );
42   }
43   
44   protected abstract void doTest(@NotNull String text) throws Exception;
45
46   /**
47    * Checks current editor and returns tuple of {@code (selected text; text over than selected)}.
48    * 
49    * @return    tuple of {@code (selected text; text over than selected)}.
50    */
51   @NotNull
52   protected static Pair<String, String> parse() {
53     SelectionModel selectionModel = myEditor.getSelectionModel();
54     if (!selectionModel.hasSelection()) {
55       return new Pair<>(null, myEditor.getDocument().getText());
56     }
57     
58     CharSequence text = myEditor.getDocument().getCharsSequence();
59     String selectedText = text.subSequence(selectionModel.getSelectionStart(), selectionModel.getSelectionEnd()).toString();
60     StringBuilder nonSelectedText = new StringBuilder();
61     nonSelectedText.append(text.subSequence(0, selectionModel.getSelectionStart()))
62       .append(text.subSequence(selectionModel.getSelectionEnd(), text.length()));
63     return new Pair<>(selectedText, nonSelectedText.toString());
64   }
65 }