| /* |
| * Copyright 2000-2014 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.codeInsight; |
| |
| import com.intellij.psi.xml.XmlFile; |
| import com.intellij.psi.xml.XmlTag; |
| import com.intellij.testFramework.LightPlatformTestCase; |
| import com.intellij.xml.XmlAttributeDescriptor; |
| import com.intellij.xml.XmlElementDescriptor; |
| import com.intellij.xml.XmlNSDescriptor; |
| |
| /** |
| * @author Mike |
| */ |
| public class XmlInsightTest extends LightPlatformTestCase { |
| public void testDocumentDescriptor1() throws Exception { |
| XmlFile file = createFile("<root><a></a><b></b><a></a></root>"); |
| XmlNSDescriptor descriptor = createDescriptor(file); |
| |
| XmlElementDescriptor element = descriptor.getElementDescriptor(file.getDocument().getRootTag()); |
| assertNotNull(element); |
| assertEquals("root", element.getName()); |
| |
| element = descriptor.getElementDescriptor(file.getDocument().getRootTag().getSubTags()[0]); |
| assertNotNull(element); |
| assertEquals("a", element.getName()); |
| |
| element = descriptor.getElementDescriptor(file.getDocument().getRootTag().getSubTags()[1]); |
| assertNotNull(element); |
| assertEquals("b", element.getName()); |
| |
| element = descriptor.getElementDescriptor(file.getDocument().getRootTag().getSubTags()[2]); |
| assertNotNull(element); |
| assertEquals("a", element.getName()); |
| } |
| |
| public void testElementDescriptor1() throws Exception { |
| XmlFile file = createFile("<root><a></a><b></b><a></a></root>"); |
| XmlNSDescriptor descriptor = createDescriptor(file); |
| |
| XmlTag rootTag = file.getDocument().getRootTag(); |
| XmlElementDescriptor element = descriptor.getElementDescriptor(rootTag); |
| |
| XmlElementDescriptor[] elements = element.getElementsDescriptors(rootTag); |
| |
| assertEquals(2, elements.length); |
| assertEquals("a", elements[0].getName()); |
| assertEquals("b", elements[1].getName()); |
| } |
| |
| public void testElementDescriptor2() throws Exception { |
| XmlFile file = createFile("<root><a><b/></a><a><c/></a></root>"); |
| XmlNSDescriptor descriptor = createDescriptor(file); |
| |
| XmlTag rootTag = file.getDocument().getRootTag(); |
| XmlElementDescriptor element = descriptor.getElementDescriptor(rootTag); |
| element = element.getElementsDescriptors(rootTag)[0]; |
| |
| XmlElementDescriptor[] elements = element.getElementsDescriptors(rootTag.getSubTags()[0]); |
| |
| assertEquals(2, elements.length); |
| assertEquals("b", elements[0].getName()); |
| assertEquals("c", elements[1].getName()); |
| } |
| |
| public void testElementDescriptor3() throws Exception { |
| XmlFile file = createFile("<root><a><b/><c></c></a><a><c/></a></root>"); |
| XmlNSDescriptor descriptor = createDescriptor(file); |
| |
| XmlTag rootTag = file.getDocument().getRootTag(); |
| XmlElementDescriptor element = descriptor.getElementDescriptor(rootTag); |
| element = element.getElementsDescriptors(rootTag)[0]; |
| |
| XmlElementDescriptor[] elements = element.getElementsDescriptors(rootTag.getSubTags()[0]); |
| |
| assertEquals(2, elements.length); |
| assertEquals("b", elements[0].getName()); |
| //assertTrue(elements[0].getContentType() == XmlElementDescriptor.CONTENT_TYPE_EMPTY); |
| |
| assertEquals("c", elements[1].getName()); |
| //assertTrue(elements[1].getContentType() == XmlElementDescriptor.CONTENT_TYPE_CHILDREN); |
| } |
| |
| public void testElementDescriptor4() throws Exception { |
| XmlFile file = createFile("<root><a attr2=''></a><a attr1=''></a></root>"); |
| XmlNSDescriptor descriptor = createDescriptor(file); |
| |
| XmlTag rootTag = file.getDocument().getRootTag(); |
| XmlElementDescriptor element = descriptor.getElementDescriptor(rootTag); |
| element = element.getElementsDescriptors(rootTag)[0]; |
| |
| XmlAttributeDescriptor[] attributes = element.getAttributesDescriptors(rootTag); |
| |
| assertEquals(2, attributes.length); |
| assertEquals("attr1", attributes[0].getName()); |
| assertEquals("attr2", attributes[1].getName()); |
| } |
| |
| public void testAttributeDescriptor1() throws Exception { |
| XmlFile file = createFile("<root><a attr1=''></a><a attr2='' attr1=''></a></root>"); |
| XmlNSDescriptor descriptor = createDescriptor(file); |
| |
| XmlTag rootTag = file.getDocument().getRootTag(); |
| XmlElementDescriptor element = descriptor.getElementDescriptor(rootTag); |
| element = element.getElementsDescriptors(rootTag)[0]; |
| |
| XmlAttributeDescriptor[] attributes = element.getAttributesDescriptors(rootTag); |
| |
| assertEquals("attr1", attributes[0].getName()); |
| assertTrue(attributes[0].isRequired()); |
| |
| assertEquals("attr2", attributes[1].getName()); |
| assertTrue(!attributes[1].isRequired()); |
| } |
| |
| public void testAttributeDescriptor2() throws Exception { |
| XmlFile file = createFile("<root><a c='' a=''></a></root>"); |
| XmlNSDescriptor descriptor = createDescriptor(file); |
| |
| XmlTag rootTag = file.getDocument().getRootTag(); |
| XmlElementDescriptor element = descriptor.getElementDescriptor(rootTag); |
| element = element.getElementsDescriptors(rootTag)[0]; |
| |
| XmlAttributeDescriptor[] attributes = element.getAttributesDescriptors(rootTag); |
| |
| assertEquals("c", attributes[0].getName()); |
| assertTrue(attributes[0].isRequired()); |
| |
| assertEquals("a", attributes[1].getName()); |
| assertTrue(attributes[1].isRequired()); |
| } |
| |
| private static XmlFile createFile(String text) { |
| return (XmlFile)createFile("test.xml", text); |
| } |
| |
| private static XmlNSDescriptor createDescriptor(XmlFile file) { |
| return file.getDocument().getRootTagNSDescriptor(); |
| } |
| |
| } |