/******************************************************************************* * Copyright (c) 2006-2013 The RCP Company and others. * 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: * The RCP Company - initial API and implementation *******************************************************************************/ package com.rcpcompany.uibindings.extests.participants; import static com.rcpcompany.test.utils.BaseTestUtils.*; import static com.rcpcompany.test.utils.ExtensionTestUtils.*; import static org.junit.Assert.*; import java.util.List; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.edit.command.SetCommand; import org.junit.Before; import org.junit.Test; import com.rcpcompany.uibindings.IAssignmentParticipantsManager; import com.rcpcompany.uibindings.IManager; import com.rcpcompany.uibindings.internal.InternalConstants; import com.rcpcompany.uibindings.moao.IMOAOPackage; import com.rcpcompany.uibindings.participants.IAssignmentParticipant; import com.rcpcompany.uibindings.participants.IAssignmentParticipantContext; import com.rcpcompany.uibindings.tests.shop.ShopFactory; import com.rcpcompany.uibindings.tests.shop.ShopItem; import com.rcpcompany.uibindings.tests.shop.ShopItemGroup; import com.rcpcompany.uibindings.tests.shop.ShopPackage; import com.rcpcompany.uibindings.tests.utils.BaseUIBTestUtils; /** * Test of {@link IManager#getAssignmentParticiantsManager()}. * * @author Tonny Madsen, The RCP Company */ public class ManagerAssignmentParticipantsManagerTest { private IManager MANAGER; @Before public void before() { BaseUIBTestUtils.resetAll(); MANAGER = IManager.Factory.getManager(); } @Test public void testGetAPM() { final IAssignmentParticipantsManager m = MANAGER.getAssignmentParticiantsManager(); assertNotNull(m); assertEquals(m, MANAGER.getAssignmentParticiantsManager()); } /** * Number of entries. */ @Test public void testNoGlobalParticipants() { assertNoLog(new Runnable() { @Override public void run() { final IAssignmentParticipantsManager m = MANAGER.getAssignmentParticiantsManager(); final List<IConfigurationElement> elements = getElements("com.rcpcompany.uibindings.uiBindings", InternalConstants.ASSIGNMENT_PARTICIPANT_TAG); assertTrue(m.getParticipants().size() >= 1); assertEquals(elements.size(), m.getParticipants().size()); } }); } public static ShopItem mySI; public static ShopItemGroup mySG; /** * Tests existance of {@link IAssignmentParticipant}. */ @Test public void testExistParticipant() { assertNoLog(new Runnable() { @Override public void run() { final IAssignmentParticipantsManager apm = IManager.Factory.getManager() .getAssignmentParticiantsManager(); assertNotNull(apm); final IAssignmentParticipant p = apm.getParticipant(ShopPackage.Literals.SHOP_ITEM_GROUP, ShopPackage.Literals.SHOP_ITEM); assertTrue(p instanceof ItemToGroupAssignmentParticipant); } }); } /** * Tests execution of assignment. */ @Test public void testGlobalAssignment() { assertNoLog(new Runnable() { @Override public void run() { mySI = ShopFactory.eINSTANCE.createShopItem(); mySI.setName("old"); mySG = ShopFactory.eINSTANCE.createShopItemGroup(); mySG.setName("new"); Command c = MANAGER.assignObject(MANAGER.getEditingDomain(), null, mySG, mySI); assertNotNull(c); assertTrue(c instanceof SetCommand); c = MANAGER.assignObject(MANAGER.getEditingDomain(), null, mySI, mySI); assertEquals(null, c); } }); } /** * {@link IAssignmentParticipant} for {@link ShopItem} to {@link ShopItemGroup}. */ public static class ItemToGroupAssignmentParticipant implements IAssignmentParticipant { @Override public void assign(IAssignmentParticipantContext context) { assertEquals(mySI, context.getSourceObject()); assertEquals(mySG, context.getObject()); assertEquals(IManager.Factory.getManager().getEditingDomain(), context.getEditingDomain()); context.setStructuralFeature(IMOAOPackage.Literals.NAMED_OBJECT__NAME, mySI.getName()); } } }