/*******************************************************************************
* 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.model.validation;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.validation.IValidationContext;
import org.eclipse.emf.validation.model.IConstraintStatus;
import org.eclipse.emf.validation.model.IModelConstraint;
import org.eclipse.emf.validation.service.IConstraintDescriptor;
import org.eclipse.wst.sse.sieditor.model.api.IModelObject;
import org.eclipse.wst.sse.sieditor.model.api.IWsdlModelRoot;
import org.eclipse.wst.sse.sieditor.model.validation.IValidationService;
import org.eclipse.wst.sse.sieditor.model.validation.IValidationStatus;
import org.eclipse.wst.sse.sieditor.model.validation.impl.ValidationStatusRegistry;
import org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription;
import org.eclipse.wst.sse.sieditor.test.util.SIEditorBaseTest;
import org.eclipse.wst.sse.sieditor.ui.ServiceInterfaceEditor;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class ValidationStatusRegistryDuplicatedMessagesTest extends SIEditorBaseTest {
private final int[] actualLength = new int[] { 0 };
private IDescription modelDescription;
private IWsdlModelRoot modelRoot;
private IValidationService validationService;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
modelRoot = (IWsdlModelRoot) getModelRoot("validation/validaitionServiceTest.wsdl", "validaitionServiceTest.wsdl",
ServiceInterfaceEditor.EDITOR_ID);
modelDescription = modelRoot.getDescription();
validationService = editor.getValidationService();
}
@Test
public void testValidationStatusRegistryWithEqualStatuses() {
final List<IValidationStatus> statuses = new ArrayList<IValidationStatus>();
class ValidationStatusRegistryTest extends ValidationStatusRegistry {
@Override
public Set<IModelObject> add(Collection<IValidationStatus> statuses) {
Set<IModelObject> added = super.add(statuses);
actualLength[0] = added.size();
return added;
}
}
ValidationStatusRegistryTest registry = new ValidationStatusRegistryTest();
final String message = "Test Message";
final IModelConstraint modelConstraint = new IModelConstraint() {
@Override
public IStatus validate(IValidationContext ctx) {
return null;
}
@Override
public IConstraintDescriptor getDescriptor() {
return null;
}
};
IValidationStatus status = new IValidationStatus() {
@Override
public boolean isOK() {
return false;
}
@Override
public IModelObject getTarget() {
return modelDescription;
}
@Override
public IConstraintStatus getSourceStatus() {
return null;
}
@Override
public int getSeverity() {
return 0;
}
@Override
public Set<EObject> getResultLocus() {
return null;
}
@Override
public String getMessage() {
return message;
}
@Override
public String getId() {
return null;
}
@Override
public EObject getConstraintStatusTarget() {
return modelDescription.getComponent();
}
};
statuses.add(status);
statuses.add(status);
statuses.add(status);
registry.add(statuses);
assertEquals(actualLength[0], 1);
}
@Override
@After
public void tearDown() throws Exception {
disposeModel();
super.tearDown();
}
}