package com.haskforce.highlighting.annotation.external;
import com.intellij.openapi.editor.VisualPosition;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.testFramework.UsefulTestCase;
import org.junit.Assert;
import java.util.Arrays;
/**
* Test class for GhcModUtil, which should contain the actions common to GhcMod and GhcModi
*/
public class GhcModUtilTest extends UsefulTestCase {
public void testCanHandleSimpleOutput() {
String ghcModTypeInfo = "24 31 24 45 \"Player\"\n" +
"24 1 25 52 \"Player -> [Player] -> [Player]\"";
String typeInfo = GhcModUtil.unsafeHandleTypeInfo(new VisualPosition (24, 33), new VisualPosition (24, 33), ghcModTypeInfo);
Assert.assertEquals("Player", typeInfo);
}
public void testCanHandleTypeWithSpacesOutput() {
String ghcModTypeInfo =
"24 48 24 59 \"(Player -> Bool) -> [Player] -> [Player]\"\n" +
"24 48 24 109 \"[Player] -> [Player]\"\n" +
"24 1 25 52 \"Player -> [Player] -> [Player]\"";
String typeInfo = GhcModUtil.unsafeHandleTypeInfo(new VisualPosition (24, 49), new VisualPosition (24, 49), ghcModTypeInfo);
Assert.assertEquals("(Player -> Bool) -> [Player] -> [Player]", typeInfo);
}
public void testCanHandleMultipleLines() {
String ghcModTypeInfo =
"24 48 24 59 \"(Player -> Bool) -> [Player] -> [Player]\"\n" +
"24 48 24 109 \"[Player] -> [Player]\"\n" +
"24 1 25 52 \"Player -> [Player] -> [Player]\"";
String typeInfo = GhcModUtil.unsafeHandleTypeInfo(new VisualPosition (24, 60),new VisualPosition (24, 60), ghcModTypeInfo);
Assert.assertEquals("[Player] -> [Player]", typeInfo);
}
public void testCanUseSelection() {
String ghcModTypeInfo =
"24 48 24 59 \"(Player -> Bool) -> [Player] -> [Player]\"\n" +
"24 48 24 109 \"[Player] -> [Player]\"\n" +
"24 1 25 52 \"Player -> [Player] -> [Player]\"";
String typeInfo = GhcModUtil.unsafeHandleTypeInfo(
new VisualPosition(24, 5),
new VisualPosition (24, 60), ghcModTypeInfo);
Assert.assertEquals("Player -> [Player] -> [Player]", typeInfo);
}
}