/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 tests.xmlschema30; import com.google.common.testing.EqualsTester; import org.apache.ws.commons.schema.XmlSchema; import org.apache.ws.commons.schema.XmlSchemaCollection; import org.apache.ws.commons.schema.XmlSchemaElement; import org.apache.ws.commons.schema.XmlSchemaGroup; import org.apache.ws.commons.schema.XmlSchemaType; import org.apache.ws.commons.schema.constants.Constants; import org.junit.BeforeClass; import org.junit.Test; import tests.Resources; import javax.xml.namespace.QName; import javax.xml.transform.stream.StreamSource; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; /** * This test checks implementations of <strong>equals</strong> and <strong>hashCode</strong> methods on the following * classes: * <ul> * <li>{@link org.apache.ws.commons.schema.utils.XmlSchemaNamedImpl XmlSchemaNamedImpl}</li> * <li>{@link org.apache.ws.commons.schema.utils.XmlSchemaNamedWithFormImpl XmlSchemaNamedWithFormImpl}</li> * <li>{@link org.apache.ws.commons.schema.XmlSchemaType XmlSchemaType}</li> * <li>{@link org.apache.ws.commons.schema.XmlSchemaGroup XmlSchemaGroup}</li> * <li>{@link org.apache.ws.commons.schema.XmlSchemaElement XmlSchemaElement}</li> * </ul> */ public class NamedItemsEqualityTest { static private final String CUSTOM_SCHEMA_NS = "http://example.com/test"; static private XmlSchema BASE_SCHEMA; static private XmlSchema CUSTOM_SCHEMA; @BeforeClass static public void setUp() throws FileNotFoundException { InputStream is = new FileInputStream(Resources.asURI("XMLSCHEMA-30/test.xsd")); XmlSchemaCollection schemaCol = new XmlSchemaCollection(); schemaCol.read(new StreamSource(is)); BASE_SCHEMA = schemaCol.schemaForNamespace(Constants.URI_2001_SCHEMA_XSD); CUSTOM_SCHEMA = schemaCol.schemaForNamespace(CUSTOM_SCHEMA_NS); } @Test public void testXmlSchemaTypes() { XmlSchemaType stringSimpleType = BASE_SCHEMA.getTypeByName( Constants.XSD_STRING ); XmlSchemaType decimalSimpleType = BASE_SCHEMA.getTypeByName( Constants.XSD_DECIMAL ); XmlSchemaType customSimpleType = CUSTOM_SCHEMA.getTypeByName("customSimpleType"); XmlSchemaType customComplexType = CUSTOM_SCHEMA.getTypeByName("customComplexTypeType"); new EqualsTester() .addEqualityGroup( stringSimpleType, stringSimpleType) .addEqualityGroup( decimalSimpleType, decimalSimpleType) .addEqualityGroup( customSimpleType, customSimpleType) .addEqualityGroup( customComplexType, customComplexType) .testEquals(); } @Test public void testXmlSchemaElements() { XmlSchemaElement customSimpleElem = CUSTOM_SCHEMA.getElementByName("customTopSimpleElement"); XmlSchemaElement customComplexElement = CUSTOM_SCHEMA.getElementByName("customTopComplexElement"); new EqualsTester() .addEqualityGroup( customSimpleElem, customSimpleElem) .addEqualityGroup( customComplexElement, customComplexElement) .testEquals(); } @Test public void testXmlSchemaGroup() { final QName grp1QName = new QName(CUSTOM_SCHEMA_NS, "customGroup1"); final QName grp2QName = new QName(CUSTOM_SCHEMA_NS, "customGroup2"); XmlSchemaGroup grp1 = CUSTOM_SCHEMA.getGroupByName(grp1QName); XmlSchemaGroup grp2 = CUSTOM_SCHEMA.getGroupByName(grp2QName); new EqualsTester() .addEqualityGroup( grp1, grp1) .addEqualityGroup( grp2, grp2) .testEquals(); } }