📄 elementdeclarationtestcase.java
字号:
package org.xbrlapi.fragment.tests;/** * Tests the implementation of the org.xbrlapi.ElementDeclaration interface. * Uses the DOM-based data store to ensure rapid testing. * @author Geoffrey Shuetrim (geoff@galexy.net) */import java.net.URL;import org.xbrlapi.Concept;import org.xbrlapi.DOMLoadingTestCase;import org.xbrlapi.ElementDeclaration;import org.xbrlapi.FragmentList;import org.xbrlapi.utilities.Constants;import org.xbrlapi.utilities.XBRLException;public class ElementDeclarationTestCase extends DOMLoadingTestCase { private final String STARTING_POINT = "test.data.multi.concept.schema"; protected void setUp() throws Exception { super.setUp(); loader.discover(this.getURL(STARTING_POINT)); } private URL smallSchemaURL = null; private String documentStart = "<?xml version=\"1.0\"?>\n" +"<schema targetNamespace=\"http://www.xbrlapi.org/targetNamespace/\"\n" + "xmlns:tns=\"http://www.xbrlapi.org/targetNamespace/\"\n" + "xmlns=\"http://www.w3.org/2001/XMLSchema\"\n" + "xmlns:xbrli=\"http://www.xbrl.org/2003/instance\"\n" + "xmlns:link=\"http://www.xbrl.org/2003/linkbase\"\n" + "xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n" + "elementFormDefault=\"qualified\">\n" + "<import namespace=\"http://www.xbrl.org/2003/instance\"\n" + "schemaLocation=\"http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd\"/>\n" + "<element name=\"A\"\n" + "id=\"A\"\n" + "type=\"xbrli:monetaryItemType\"\n" + "substitutionGroup=\"xbrli:item\"\n"; private String documentEnd = "xbrli:periodType=\"instant\"/>\n</schema>\n"; protected void tearDown() throws Exception { super.tearDown(); } public ElementDeclarationTestCase(String arg0) { super(arg0); } /** * Test retrieval of the value for the nillable attribute. */ public void testGetNillable() { try { String xml = documentStart + documentEnd; URL url = new URL("http://www.xbrlapi.org/default.xsd"); loader.discover(url,xml); FragmentList<ElementDeclaration> fragments = store.<ElementDeclaration>query("/" + Constants.XBRLAPIPrefix + ":" + "fragment[" + Constants.XBRLAPIPrefix + ":" + "data/xsd:element/@nillable='true']"); for (int i=0; i< fragments.getLength(); i++) { ElementDeclaration fragment = fragments.getFragment(i); assertTrue(fragment.getFragmentIndex() + " is nillable", fragment.isNillable()); } fragments = store.<ElementDeclaration>query("/" + Constants.XBRLAPIPrefix + ":" + "fragment[" + Constants.XBRLAPIPrefix + ":" + "data/xsd:element/@nillable='false']"); for (int i=0; i< fragments.getLength(); i++) { ElementDeclaration fragment = fragments.getFragment(i); assertFalse(fragment.getFragmentIndex() + " is not nillable", fragment.isNillable()); } fragments = store.<ElementDeclaration>query("/" + Constants.XBRLAPIPrefix + ":" + "fragment/" + Constants.XBRLAPIPrefix + ":" + "data/xsd:element[count(@nillable)=0]"); for (int i=0; i< fragments.getLength(); i++) { ElementDeclaration fragment = fragments.getFragment(i); assertFalse(fragment.getFragmentIndex() + " is not nillable", fragment.isNillable()); } } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } } /** * Test retrieval of the value for the nillable attribute. */ public void testGetFormQualified() { try { FragmentList<ElementDeclaration> fragments = store.<ElementDeclaration>getFragments("ElementDeclaration"); for (int i=0; i< fragments.getLength(); i++) { ElementDeclaration fragment = fragments.getFragment(i); assertTrue(fragment.getFragmentIndex() + " is element form qualified", fragment.getSchema().isElementFormQualified()); } } catch (XBRLException e) { fail(e.getMessage()); } } /** * Test retrieval of the value for the default attribute. */ public void testGetDefault() { try { String xml = documentStart + " default=\"12.4\" " + documentEnd; URL url = new URL("http://www.xbrlapi.org/default.xsd"); loader.discover(url,xml); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } // Missing default attribute try { FragmentList<ElementDeclaration> fragments = store.<ElementDeclaration>query("/" + Constants.XBRLAPIPrefix + ":" + "fragment/" + Constants.XBRLAPIPrefix + ":" + "data/xsd:element[count(@default)=0]"); for (int i=0; i< fragments.getLength(); i++) { ElementDeclaration fragment = fragments.getFragment(i); assertNull(fragment.getFragmentIndex() + " has not default", fragment.getDefault()); } } catch (XBRLException e) { fail(e.getMessage()); } // Available attribute try { FragmentList<ElementDeclaration> fragments = store.<ElementDeclaration>query("/" + Constants.XBRLAPIPrefix + ":" + "fragment/" + Constants.XBRLAPIPrefix + ":" + "data/xsd:element[count(@default)=1]"); for (int i=0; i< fragments.getLength(); i++) { ElementDeclaration fragment = fragments.getFragment(i); assertNotNull(fragment.getFragmentIndex() + " has not default", fragment.getDefault()); } } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } } /** * Test retrieval of the value for the fixed attribute. */ public void testGetFixed() { // Missing default attribute try { FragmentList<ElementDeclaration> fragments = store.<ElementDeclaration>getFragments("ElementDeclaration"); ElementDeclaration fragment = fragments.getFragment(0); assertNull(fragment.getFixed()); } catch (XBRLException e) { fail(e.getMessage()); } // Available attribute try { String xml = documentStart + " fixed=\"12.4\" " + documentEnd; URL url = new URL("http://www.xbrlapi.org/default.xsd"); loader.discover(url,xml); String query = "/" + Constants.XBRLAPIPrefix + ":" + "fragment[" + Constants.XBRLAPIPrefix + ":" + "data/*/@fixed='12.4']"; FragmentList<ElementDeclaration> fragments = store.<ElementDeclaration>query(query); ElementDeclaration fragment = fragments.getFragment(0); store.serialize(fragment.getMetadataRootElement()); assertEquals("12.4", fragment.getFixed()); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } } /** * Test getting the information about the data type. */ public void testGetTypeInformation() { try { FragmentList<Concept> fragments = store.getFragments("Concept"); assertTrue(fragments.getLength() > 0); for (Concept fragment: fragments) { String type = fragment.getDataRootElement().getAttribute("type"); assertEquals(type, fragment.getTypeQName()); String prefix = fragment.getPrefixFromQName(type); assertEquals(Constants.XBRL21Prefix , fragment.getTypeNamespaceAlias()); String namespace = fragment.getNamespaceFromQName(type,fragment.getDataRootElement()); assertEquals(namespace, fragment.getTypeNamespace()); String localname = fragment.getLocalnameFromQName(type); assertEquals(fragment.getTypeLocalname(), localname); } } catch (XBRLException e) { fail(e.getMessage()); } } /** * Test getting the information about the substitution group. */ public void testGetSubstitutionGroupInformation() { try { FragmentList<Concept> fragments = store.getFragments("Concept"); assertTrue(fragments.getLength() > 0); for (Concept fragment: fragments) { String sg = fragment.getDataRootElement().getAttribute("substitutionGroup"); assertEquals(sg, fragment.getSubstitutionGroupQName()); String prefix = fragment.getPrefixFromQName(sg); assertEquals(Constants.XBRL21Prefix , fragment.getSubstitutionGroupNamespaceAlias()); String namespace = fragment.getNamespaceFromQName(sg,fragment.getDataRootElement()); assertEquals(namespace, fragment.getSubstitutionGroupNamespace()); String localname = fragment.getLocalnameFromQName(sg); assertEquals(fragment.getSubstitutionGroupLocalname(), localname); } } catch (XBRLException e) { fail(e.getMessage()); } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -