/*******************************************************************************
 * Copyright (c) 2009, 2011 by SAP AG, Walldorf.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * 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.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.load.WsDomObtainerTest;
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.SeiSynchronizerTest;
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.persistence.sync.WsSynchronizerTest;
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.EndpointIsSessionBeanRuleTest;
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;

public class AllTestsSuite
{
    public static Test suite()
    {
        TestSuite suite = new TestSuite();

        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(WsDOMRuntimeRegistryTest.class);
        suite.addTestSuite(WsDOMRuntimeManagerTest.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);
        // 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);
        suite.addTestSuite(SeiSynchronizerTest.class);
        suite.addTestSuite(WsSynchronizerTest.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(SeiValidationTest.class);
        suite.addTestSuite(WsValidationTest.class);
        suite.addTestSuite(WmValidationTest.class);
        suite.addTestSuite(WpValidationTest.class);
        suite.addTestSuite(EndpointIsSessionBeanRuleTest.class);
        
        // DOM load tests 
        suite.addTestSuite(WsDomObtainerTest.class);

        return suite;
    }
}