/*******************************************************************************
 * Copyright (c) 2009 by SAP AG, Walldorf. 
 * 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:
 *     SAP AG - initial API and implementation
 *******************************************************************************/
package org.eclipse.jst.ws.jaxws.dom.runtime.tests;

import junit.framework.Test;
import junit.framework.TestSuite;

import org.eclipse.jst.ws.jaxws.dom.runtime.tests.annotations.AnnotationFactoryTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.annotations.AnnotationsTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.annotations.ArrayValueImplTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.annotations.ComplexAnnotationImplTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.annotations.ParamValuePairImplTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.annotations.QualifiedNameValueImplTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.LocatorExtractorTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.WsDOMRuntimeManagerTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.WsDOMRuntimeRegistryTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.JaxWsDefaultsCalculatorTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.JaxWsWorkspaceResourceTests;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.Jee5WsDomRuntimeExtensionTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.ProjectAddingTests;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.WorkspaceCUFinderTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.annotation.AnnotationAdapterFactoryTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.annotation.impl.AnnotationAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.defaults.MethodPropertyDefaultsAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.defaults.ParameterPropertyDefaultsAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.defaults.SeiPropertyDefaultsAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.defaults.WsPropertyDefaultsAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.serializer.AbstractSerializerAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.serializer.MethodSerializerAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.serializer.ParameterSerializerAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.serializer.SeiSerializerAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.serializer.SerializerAdapterFactoryTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.serializer.WsSerializerAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.state.MethodPropertyStateAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.state.ParameterPropertyStateAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.state.PropertyStateAdapterFactoryTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.state.SeiPropertyStateAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.state.WsPropertyStateAdapterTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.sync.AbstractModelSynchronizerTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.sync.ImplicitSeiMethodSynchronizationTests;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.sync.MethodParamsSynchronizationTests;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.sync.ModelSynchronizationTests;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.sync.OnEventModelSyncronizerTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.sync.SeiMethodSyncronizationTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.sync.SeiSyncronizationTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.sync.WsSynchronizationTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.util.Dom2ResourceMapperTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.util.DomUtilTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.AbstractValidationConstraintTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.ConstraintStatusExtendedTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.DomValidationConstraintDescriptorTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.DomValidatorFactoryTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.EndpointIsSessionBeanConstraintTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.JaxWsDomValidatorTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.SeiValidationTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.WmValidationTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.WpValidationTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.validation.WsValidationTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.validation.MethodValidatorTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.validation.RuntimeTypeValidatorTest;
import org.eclipse.jst.ws.jaxws.dom.runtime.tests.validation.SeiValidatorTest;

public class AllTestsSuite
{
	public static Test suite()
	{
		TestSuite suite = new TestSuite();

		suite.addTestSuite(RuntimeTypeValidatorTest.class);
		suite.addTestSuite(MethodValidatorTest.class);
		suite.addTestSuite(AnnotationFactoryTest.class);
		suite.addTestSuite(AnnotationsTest.class);
		suite.addTestSuite(ParamValuePairImplTest.class);
		suite.addTestSuite(ComplexAnnotationImplTest.class);
		suite.addTestSuite(QualifiedNameValueImplTest.class);
		suite.addTestSuite(ArrayValueImplTest.class);
		suite.addTestSuite(SeiValidatorTest.class);
		suite.addTestSuite(WsDOMRuntimeRegistryTest.class);
		suite.addTestSuite(WsDOMRuntimeManagerTest.class);
		suite.addTestSuite(DomValidatorFactoryTest.class);
		suite.addTestSuite(Dom2ResourceMapperTest.class);
		suite.addTestSuite(DomUtilTest.class);
		
		// DOM tests
		suite.addTestSuite(Jee5WsDomRuntimeExtensionTest.class);
		suite.addTestSuite(JaxWsWorkspaceResourceTests.class);
		suite.addTestSuite(ProjectAddingTests.class);
		suite.addTestSuite(WorkspaceCUFinderTest.class);
		suite.addTestSuite(LocatorExtractorTest.class);
		// DOM sync tests
		suite.addTestSuite(AbstractModelSynchronizerTest.class);
		suite.addTestSuite(OnEventModelSyncronizerTest.class);
		suite.addTestSuite(ImplicitSeiMethodSynchronizationTests.class);
		suite.addTestSuite(MethodParamsSynchronizationTests.class);		
		suite.addTestSuite(ModelSynchronizationTests.class);
		suite.addTestSuite(SeiMethodSyncronizationTest.class);
		suite.addTestSuite(SeiSyncronizationTest.class);
		suite.addTestSuite(WsSynchronizationTest.class);
		suite.addTestSuite(JaxWsDefaultsCalculatorTest.class);
		// state adapters tests
		suite.addTestSuite(MethodPropertyStateAdapterTest.class);
		suite.addTestSuite(PropertyStateAdapterFactoryTest.class);
		suite.addTestSuite(SeiPropertyStateAdapterTest.class);
		suite.addTestSuite(WsPropertyStateAdapterTest.class);
		suite.addTestSuite(ParameterPropertyStateAdapterTest.class);
		// serialize adapter tests
		suite.addTestSuite(AbstractSerializerAdapterTest.class);
		suite.addTestSuite(MethodSerializerAdapterTest.class);
		suite.addTestSuite(SeiSerializerAdapterTest.class);
		suite.addTestSuite(SerializerAdapterFactoryTest.class);
		suite.addTestSuite(WsSerializerAdapterTest.class);
		suite.addTestSuite(ParameterSerializerAdapterTest.class);
		// default values adapter tests
		suite.addTestSuite(MethodPropertyDefaultsAdapterTest.class);
		suite.addTestSuite(WsPropertyDefaultsAdapterTest.class);
		suite.addTestSuite(SeiPropertyDefaultsAdapterTest.class);
		suite.addTestSuite(ParameterPropertyDefaultsAdapterTest.class);
		// other adapters tests
		suite.addTestSuite(AnnotationAdapterTest.class);
		suite.addTestSuite(AnnotationAdapterFactoryTest.class);
		// validation tests
		suite.addTestSuite(AbstractValidationConstraintTest.class);
		suite.addTestSuite(DomValidationConstraintDescriptorTest.class);
		suite.addTestSuite(JaxWsDomValidatorTest.class);
		suite.addTestSuite(SeiValidationTest.class);
		suite.addTestSuite(WsValidationTest.class);
		suite.addTestSuite(WmValidationTest.class);
		suite.addTestSuite(WpValidationTest.class);
		suite.addTestSuite(EndpointIsSessionBeanConstraintTest.class);
		
		//suite.addTestSuite(CAFWsdlTests.class);
		
		suite.addTestSuite(ConstraintStatusExtendedTest.class);

		return suite;
	}
}