/******************************************************************************* * 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.common; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.easymock.EasyMock.createMock; import org.eclipse.core.runtime.IStatus; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.wst.sse.sieditor.model.validation.IValidationStatus; import org.eclipse.wst.sse.sieditor.model.validation.IValidationStatusProvider; import org.eclipse.wst.sse.sieditor.ui.v2.common.IProblemDecoratableControl; import org.eclipse.wst.sse.sieditor.ui.v2.common.IProblemDecorator; import org.eclipse.wst.sse.sieditor.ui.v2.common.ProblemDecorator; import org.junit.Test; import org.eclipse.wst.sse.sieditor.model.api.IModelObject; /** * A test for the {@link ProblemDecorator} * * * */ public class ProblemDecoratorTest { /** * Ensures that {@link ProblemDecorator#updateDecorations()} method will * call the decorate methods of the bound UI controls. */ @Test public void testUpdateDecoration() { // ///////////// define data and mock objects /////////////// int severity = 111; String message = "test message"; IModelObject modelObject = createMock(IModelObject.class); IProblemDecoratableControl controlForInvalidFeature = createMock(IProblemDecoratableControl.class); IProblemDecoratableControl controlForValidFeature = createMock(IProblemDecoratableControl.class); final IValidationStatusProvider validationStatusProvider = createMock(IValidationStatusProvider.class); IValidationStatus validationStatus = createMock(IValidationStatus.class); EStructuralFeature validFeature = createMock(EStructuralFeature.class); EStructuralFeature invalidFeature = createMock(EStructuralFeature.class); List<IValidationStatus> statusList = new ArrayList<IValidationStatus>(); statusList.add(validationStatus); Set<EObject> resultLocus = new HashSet<EObject>(); resultLocus.add(invalidFeature); // ///////////// define behavior /////////////// expect(validationStatusProvider.isValid(modelObject)).andReturn(false).once(); expect(validationStatusProvider.getStatus(modelObject)).andReturn(statusList).once(); expect(validationStatus.getSeverity()).andReturn(severity).once(); expect(validationStatus.getMessage()).andReturn(message).once(); expect(validationStatus.getResultLocus()).andReturn(resultLocus).once(); controlForInvalidFeature.decorate(IStatus.OK, null); controlForInvalidFeature.decorate(severity, message); controlForValidFeature.decorate(IStatus.OK, null); // ///////////// create the instance to be tested /////////////// IProblemDecorator decorator = new ProblemDecorator() { @Override protected IValidationStatusProvider getValidationStatusProvider() { return validationStatusProvider; } }; decorator.setModelObject(modelObject); decorator.bind(invalidFeature, controlForInvalidFeature); decorator.bind(validFeature, controlForValidFeature); replay(modelObject, controlForInvalidFeature, controlForValidFeature, validationStatusProvider, validationStatus, validFeature); // ///////////invoke the method being tested /////////////// decorator.updateDecorations(); verify(modelObject, controlForInvalidFeature, controlForValidFeature, validationStatusProvider, validationStatus, validFeature); } }