| /******************************************************************************* |
| * Copyright (c) 2004, 2011 Tasktop Technologies 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: |
| * Tasktop Technologies - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.team.tests; |
| |
| import java.util.List; |
| |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.jface.viewers.StructuredSelection; |
| import org.eclipse.mylyn.context.core.ContextCore; |
| import org.eclipse.mylyn.context.core.IInteractionElement; |
| import org.eclipse.mylyn.context.sdk.util.AbstractResourceContextTest; |
| import org.eclipse.mylyn.internal.ide.ui.IdeUiBridgePlugin; |
| import org.eclipse.mylyn.internal.tasks.core.AbstractTask; |
| import org.eclipse.mylyn.internal.tasks.core.LocalTask; |
| import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; |
| import org.eclipse.mylyn.internal.team.ui.ContextActiveChangeSetManager; |
| import org.eclipse.mylyn.internal.team.ui.FocusedTeamUiPlugin; |
| import org.eclipse.mylyn.team.ui.IContextChangeSet; |
| import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; |
| import org.eclipse.team.internal.core.subscribers.ActiveChangeSet; |
| import org.eclipse.team.internal.core.subscribers.ActiveChangeSetManager; |
| import org.eclipse.team.internal.core.subscribers.ChangeSet; |
| |
| /** |
| * @author Mik Kersten |
| */ |
| public class ChangeSetManagerTest extends AbstractResourceContextTest { |
| |
| private ContextActiveChangeSetManager changeSetManager; |
| |
| private ActiveChangeSetManager collector; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| assertNotNull(IdeUiBridgePlugin.getDefault()); |
| changeSetManager = (ContextActiveChangeSetManager) FocusedTeamUiPlugin.getDefault() |
| .getContextChangeSetManagers() |
| .iterator() |
| .next(); |
| collector = CVSUIPlugin.getPlugin().getChangeSetManager(); |
| assertNotNull(changeSetManager); |
| assertNull(TasksUiPlugin.getTaskActivityManager().getActiveTask()); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| } |
| |
| public void testDisabledMode() { |
| ChangeSet[] sets = collector.getSets(); |
| for (ChangeSet set : sets) { |
| collector.remove(set); |
| } |
| |
| assertEquals(0, collector.getSets().length); |
| manager.deactivateContext(taskId); |
| changeSetManager.clearActiveChangeSets(); |
| assertEquals(0, changeSetManager.getActiveChangeSets().size()); |
| |
| changeSetManager.disable(); |
| |
| AbstractTask task1 = new LocalTask("task1", "label"); |
| TasksUiPlugin.getTaskActivityManager().activateTask(task1); |
| assertEquals(0, changeSetManager.getActiveChangeSets().size()); |
| assertEquals(0, collector.getSets().length); |
| |
| TasksUiPlugin.getTaskActivityManager().deactivateTask(task1); |
| changeSetManager.enable(); |
| } |
| |
| public void testSingleContextActivation() { |
| ChangeSet[] sets = collector.getSets(); |
| for (ChangeSet set : sets) { |
| collector.remove(set); |
| } |
| |
| assertEquals(0, collector.getSets().length); |
| manager.deactivateContext(taskId); |
| changeSetManager.clearActiveChangeSets(); |
| assertEquals(0, changeSetManager.getActiveChangeSets().size()); |
| |
| AbstractTask task1 = new LocalTask("task1", "label"); |
| TasksUiPlugin.getTaskActivityManager().activateTask(task1); |
| assertEquals(1, changeSetManager.getActiveChangeSets().size()); |
| assertEquals(1, collector.getSets().length); |
| |
| TasksUiPlugin.getTaskActivityManager().deactivateTask(task1); |
| assertFalse(ContextCore.getContextManager().isContextActive()); |
| assertEquals(0, changeSetManager.getActiveChangeSets().size()); |
| assertEquals(0, collector.getSets().length); // deleted because no |
| // active resources |
| TasksUiPlugin.getTaskActivityManager().deactivateTask(task1); |
| |
| // TODO: test with resource |
| } |
| |
| public void testContentsAfterDecay() throws CoreException { |
| IFile file = project.getProject().getFile(new Path("foo.txt")); |
| file.create(null, true, null); |
| |
| AbstractTask task1 = new LocalTask("task1", "label"); |
| TasksUiPlugin.getTaskActivityManager().activateTask(task1); |
| |
| monitor.selectionChanged(navigator, new StructuredSelection(file)); |
| IInteractionElement fileElement = ContextCore.getContextManager().getElement( |
| structureBridge.getHandleIdentifier(file)); |
| assertTrue(fileElement.getInterest().isInteresting()); |
| |
| List<IContextChangeSet> changeSets = changeSetManager.getActiveChangeSets(); |
| assertEquals(1, changeSets.size()); |
| IContextChangeSet set = changeSets.get(0); |
| IResource[] resources = ((ActiveChangeSet) set).getResources(); |
| // can have .project file in there |
| assertTrue("length: " + resources.length, resources.length <= 2); |
| |
| for (int i = 0; i < 1 / (scaling.getDecay()) * 3; i++) { |
| ContextCore.getContextManager().processInteractionEvent(mockSelection()); |
| } |
| assertTrue("" + fileElement.getInterest().getValue(), fileElement.getInterest().getValue() < 0); |
| assertTrue("length: " + resources.length, resources.length <= 2); |
| |
| TasksUiPlugin.getTaskActivityManager().deactivateTask(task1); |
| } |
| } |