package fr.adrienbrault.idea.symfony2plugin.tests.config.yaml; import com.intellij.openapi.application.ApplicationInfo; import com.intellij.psi.PsiElement; import fr.adrienbrault.idea.symfony2plugin.config.yaml.YamlElementPatternHelper; import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * @author Daniel Espendiller <daniel@espendiller.net> * @see fr.adrienbrault.idea.symfony2plugin.config.yaml.YamlElementPatternHelper */ public class YamlElementPatternHelperTest extends SymfonyLightCodeInsightFixtureTestCase { private String[] dataProviders() { return new String[] { " <caret>a\n", " '<caret>'\n", " \"<caret>\"\n", " <caret>a: foo\n", " '<caret>': foo\n", " \"<caret>\": foo\n", }; } public void testGetOrmRoot() { for (String s : dataProviders()) { assertTrue(YamlElementPatternHelper.getOrmRoot().accepts(createCaretElement( "class\\Foo:\n" + s, "foo.orm.yml")) ); assertFalse(YamlElementPatternHelper.getOrmRoot().accepts(createCaretElement( "class\\Foo:\n" + s, "foo.aaa.yml")) ); } } public void testGetWithFirstRootKey() { for (String s : dataProviders()) { assertTrue(YamlElementPatternHelper.getWithFirstRootKey().accepts(createCaretElement( "class\\Foo:\n" + s, "foo.orm.yml")) ); } } public void testGetParentKeyName() { for (String s : dataProviders()) { assertTrue(YamlElementPatternHelper.getParentKeyName("requirements").accepts(createCaretElement( "requirements:\n" + s, "foo.orm.yml")) ); } } public void testGetSingleLineScalarKey() { assertTrue(YamlElementPatternHelper.getSingleLineScalarKey("class").accepts(createCaretElement( "class: <caret>a" ))); assertTrue(YamlElementPatternHelper.getSingleLineScalarKey("class").accepts(createCaretElement( "class: '<caret>'" ))); assertTrue(YamlElementPatternHelper.getSingleLineScalarKey("class").accepts(createCaretElement( "class: \"<caret>\"" ))); } public void testGetOrmParentLookup() { for (String s : dataProviders()) { assertTrue(YamlElementPatternHelper.getOrmParentLookup("requirements").accepts(createCaretElement( "requirements:\n" + s, "foo.orm.yml")) ); } } public void testGetFilterOnPrevParent() { assertTrue(YamlElementPatternHelper.getFilterOnPrevParent("services").accepts(createCaretElement( "services:\n" + " foo:\n" + " <caret>a: foo\n" , "foo.orm.yml")) ); } public void testGetInsideKeyValue() { assertTrue(YamlElementPatternHelper.getInsideKeyValue("tags").accepts(createCaretElement( "services:\n" + " foo:\n" + " tags:\n" + " - { name: <caret>}\n" )) ); assertTrue(YamlElementPatternHelper.getInsideKeyValue("services").accepts(createCaretElement( "services:\n" + " foo:\n" + " tags:\n" + " - { name: <caret>}\n" )) ); } public void testGetServiceDefinition() { String[] strings = { "@f<caret>oo", "'@f<caret>oo'", "\"@f<caret>oo\"", }; for (String s : strings) { assertTrue(YamlElementPatternHelper.getServiceDefinition().accepts(createCaretElement( "argument: " + s, "foo.orm.yml" ))); } } public void testGetServiceParameterDefinition() { String[] strings = { "%fo<caret>o%", "'%fo<caret>o%'", "\"%fo<caret>o%\"", }; for (String s : strings) { assertTrue(YamlElementPatternHelper.getServiceParameterDefinition().accepts(createCaretElement( "argument: " + s, "foo.orm.yml" ))); } } public void testGetSuperParentArrayKey() { assertTrue(YamlElementPatternHelper.getSuperParentArrayKey("services").accepts(createCaretElement( "services:\n" + " foo:\n" + " <caret>a\n" + " car: foo\n" ))); assertTrue(YamlElementPatternHelper.getSuperParentArrayKey("services").accepts(createCaretElement( "services:\n" + " foo:\n" + " \"<caret>\"\n" + " car: foo\n" ))); assertTrue(YamlElementPatternHelper.getSuperParentArrayKey("services").accepts(createCaretElement( "services:\n" + " foo:\n" + " '<caret>'\n" + " car: foo\n" ))); assertTrue(YamlElementPatternHelper.getSuperParentArrayKey("services").accepts(createCaretElement( "services:\n" + " foo:\n" + " <caret>a: foo\n" ))); assertTrue(YamlElementPatternHelper.getSuperParentArrayKey("services").accepts(createCaretElement( "services:\n" + " foo:\n" + " car: foo\n" + " <caret>a" ))); assertFalse(YamlElementPatternHelper.getSuperParentArrayKey("services").accepts(createCaretElement( "service:\n" + " foo:\n" + " car: foo\n" + " <caret>a" ))); } private PsiElement createCaretElement(@NotNull String contents) { return createCaretElement(contents, null); } private PsiElement createCaretElement(@NotNull String contents, @Nullable String file) { if(file == null) { file = "services.yml"; } myFixture.configureByText(file, contents); return myFixture.getFile().findElementAt(myFixture.getCaretOffset()); } }