package com.siberika.idea.pascal.util;
import com.google.common.collect.ImmutableMap;
import com.intellij.codeInsight.template.impl.TemplateImpl;
import org.junit.Assert;
import org.junit.Test;
/**
* Author: George Bakhtadze
* Date: 21/07/2015
*/
public class StrUtilTest {
@Test
public void testGetFieldName() throws Exception {
Assert.assertEquals("", StrUtil.getFieldName(""));
Assert.assertEquals("Method", StrUtil.getFieldName("Class.Method"));
Assert.assertEquals("Method()", StrUtil.getFieldName("Class.Method()"));
Assert.assertEquals("Method(param: System.Integer)", StrUtil.getFieldName("Class.Method(param: System.Integer)"));
Assert.assertEquals("Method: Integer", StrUtil.getFieldName("Class.Method: Integer"));
Assert.assertEquals("Method: System.Integer", StrUtil.getFieldName("Class.Method: System.Integer"));
Assert.assertEquals("Method()", StrUtil.getFieldName("Class.SubClass.Method()"));
Assert.assertEquals("Method(param: System.Integer): System.Integer", StrUtil.getFieldName("Class.SubClass.Method(param: System.Integer): System.Integer"));
Assert.assertEquals("Method(System.Integer, Word): System.Integer", StrUtil.getFieldName("Class.SubClass.Method(System.Integer, Word): System.Integer"));
}
@Test
public void testGetIncludeName() throws Exception {
Assert.assertEquals(null, StrUtil.getIncludeName("bad name"));
Assert.assertEquals("file", StrUtil.getIncludeName("{$I file}"));
Assert.assertEquals("filename", StrUtil.getIncludeName("{$i filename}"));
Assert.assertEquals("file", StrUtil.getIncludeName("{$Include file}"));
Assert.assertEquals("file", StrUtil.getIncludeName("{$Include file}"));
Assert.assertEquals("file", StrUtil.getIncludeName("{$i file }"));
Assert.assertEquals("filename", StrUtil.getIncludeName("{$inCluDe filename}"));
Assert.assertEquals("filename", StrUtil.getIncludeName("{$inCluDe 'filename'}"));
Assert.assertEquals("file name", StrUtil.getIncludeName("{$inCluDe 'file name'}"));
Assert.assertEquals(" file name ", StrUtil.getIncludeName("{$inCluDe ' file name ' }"));
Assert.assertEquals(null, StrUtil.getIncludeName("{$inCluDe ''}"));
}
@Test
public void testTemplate() throws Exception {
TemplateImpl t = (TemplateImpl) DocUtil.createTemplate("var\ni: $TYPE$", ImmutableMap.<String, String>of("TYPE", "T"), true);
Assert.assertEquals(1, t.getVariableCount());
Assert.assertEquals(1, t.getSegmentsCount());
Assert.assertEquals("TYPE", t.getVariableNameAt(0));
Assert.assertEquals("T", t.getDefaultValueAt(0).calculateResult(null).toString());
}
}