/******************************************************************************* * Copyright (c) 2010 SAP AG. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Emil Simeonov - initial API and implementation. * Dimitar Donchev - initial API and implementation. * Dimitar Tenev - initial API and implementation. * Nevena Manova - initial API and implementation. * Georgi Konstantinov - initial API and implementation. *******************************************************************************/ package org.eclipse.wst.sse.sieditor.test.ui.v2.typeselect; import java.util.Arrays; import java.util.Collection; import java.util.List; import junit.framework.Assert; import org.eclipse.core.resources.IFile; import org.eclipse.wst.sse.sieditor.ui.v2.typeselect.DescriptionTypeResolver; import org.eclipse.wst.sse.sieditor.ui.v2.typeselect.ITypeResolver; import org.eclipse.wst.sse.sieditor.ui.v2.typeselect.TypeResolverFactory; import org.eclipse.wst.sse.sieditor.test.util.ResourceUtils; import org.eclipse.wst.sse.sieditor.test.util.SIEditorBaseTest; import org.eclipse.xsd.XSDNamedComponent; import org.eclipse.xsd.XSDSchema; import org.junit.Test; import org.eclipse.wst.sse.sieditor.model.api.IWsdlModelRoot; import org.eclipse.wst.sse.sieditor.model.xsd.api.IStructureType; import org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription; import org.eclipse.wst.sse.sieditor.model.xsd.api.ISchema; import org.eclipse.wst.sse.sieditor.model.xsd.api.IType; import org.eclipse.wst.sse.sieditor.model.xsd.impl.UnresolvedType; /** * Test for the {@link DescriptionTypeResolver} class * * */ public class DescriptionTypeResolverTest extends SIEditorBaseTest { private static final String IMPORTED_TYPE_NAME = "Address"; private static final String IMPORTED_SCHEMA_NAMESPACE = "http://www.example.com/"; private static final String IMPORTED_TYPE_NAME_NEGATIVE = "NotExistingType"; private ITypeResolver typeResolver; private IDescription description; private IFile importedFile; @Override public void setUp() throws Exception { super.setUp(); final IFile file = ResourceUtils.copyFileIntoTestProject("pub/self/mix2/PurchaseOrderConfirmation.wsdl", Document_FOLDER_NAME, this.getProject(), "TypeResolversTest.wsdl"); refreshProjectNFile(file); importedFile = ResourceUtils.copyFileIntoTestProject("pub/xsd/example.xsd", Document_FOLDER_NAME, this.getProject(), "imported schema.xsd"); refreshProjectNFile(importedFile); IWsdlModelRoot wsdlModelRoot = getWSDLModelRoot(file); description = wsdlModelRoot.getDescription(); typeResolver = TypeResolverFactory.getInstance().createTypeResolver(description); } @Test public void testGetLocalSchemas() { List<ISchema> containedSchemas = description.getContainedSchemas(); XSDSchema[] schemas = new XSDSchema[containedSchemas.size()]; for (int i = 0; i < schemas.length; i++) { schemas[i] = containedSchemas.get(i).getComponent(); } XSDSchema[] localSchemas = typeResolver.getLocalSchemas(); Assert.assertTrue(Arrays.equals(schemas, localSchemas)); } @Test public void testResolveLocalType() { // pick a lucky type List<ISchema> containedSchemas = description.getContainedSchemas(); Collection<IType> types = containedSchemas.get(0).getAllContainedTypes(); IType type = types.iterator().next(); XSDNamedComponent xsdType = type.getComponent(); // now resolve it IType resolvedType = typeResolver.resolveType(xsdType); Assert.assertEquals(type, resolvedType); } @Test public void testResolveType() { final IType resolvedType = typeResolver.resolveType(IMPORTED_TYPE_NAME, IMPORTED_SCHEMA_NAMESPACE, importedFile); assertNotNull(resolvedType); assertNotSame(UnresolvedType.instance(), resolvedType); assertTrue(resolvedType instanceof IStructureType); assertEquals(IMPORTED_TYPE_NAME, resolvedType.getName()); assertEquals(IMPORTED_SCHEMA_NAMESPACE, resolvedType.getNamespace()); } @Test public void testResolveTypeNegative() throws Exception { final IType resolvedType = typeResolver.resolveType(IMPORTED_TYPE_NAME_NEGATIVE, IMPORTED_SCHEMA_NAMESPACE, importedFile); assertNotNull(resolvedType); assertEquals(UnresolvedType.instance(), resolvedType); } }