blob: 9d47c2b4fa950b6e3fe19e1f290534fafef0704a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Tasktop Technologies and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.resources.tests;
import java.io.ByteArrayInputStream;
import java.util.Date;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.mylyn.context.core.ContextCore;
import org.eclipse.mylyn.context.sdk.util.AbstractResourceContextTest;
import org.eclipse.mylyn.internal.resources.ui.ResourceModifiedDateExclusionStrategy;
/**
* @author Shawn Minto
*/
public class ResourceModificationDateExclusionStrategyTest extends AbstractResourceContextTest {
private ResourceModifiedDateExclusionStrategy exclusionStrategy;
private IFolder folder;
private IFile fileInFolder;
private IFile file;
@SuppressWarnings("deprecation")
@Override
protected void setUp() throws Exception {
super.setUp();
// we need to make sure the files are created and modified before the context is activated
ContextCore.getContextManager().deactivateContext(taskId);
exclusionStrategy = new ResourceModifiedDateExclusionStrategy();
// make sure that the strategy is enabled
exclusionStrategy.init();
exclusionStrategy.setEnabled(true);
assertTrue(exclusionStrategy.isEnabled());
long oldDate = new Date().getTime() - 5000;
// we need to have contents for teh file to be local
StringBuffer fileContents = new StringBuffer("FileContents");
ByteArrayInputStream fileInput = new ByteArrayInputStream(fileContents.toString().getBytes("UTF-8"));
file = project.getProject().getFile("test.txt");
file.create(fileInput, true, null);
assertTrue(file.exists());
file.setLocalTimeStamp(oldDate);
folder = project.getProject().getFolder("testFolder");
folder.create(true, true, null);
folder.setLocalTimeStamp(oldDate);
assertTrue(folder.exists());
// we need to have contents for the file to be local
ByteArrayInputStream fileInFolderInput = new ByteArrayInputStream(fileContents.toString().getBytes("UTF-8"));
fileInFolder = folder.getFile("test.txt");
fileInFolder.create(fileInFolderInput, true, null);
fileInFolder.setLocalTimeStamp(oldDate);
assertTrue(fileInFolder.exists());
assertTrue(file.isLocal(0));
assertTrue(fileInFolder.isLocal(0));
manager.internalActivateContext(context);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
exclusionStrategy.dispose();
file.delete(true, null);
folder.delete(true, null);
fileInFolder.delete(true, null);
ContextCore.getContextManager().deactivateContext(taskId);
}
public void testIsExcludedFolder() {
assertFalse(exclusionStrategy.isExcluded(ResourcesPlugin.getWorkspace().getRoot()));
assertFalse(exclusionStrategy.isExcluded(project.getProject()));
assertFalse(exclusionStrategy.isExcluded(folder));
}
public void testIsExcludedNotEnabled() {
exclusionStrategy.setEnabled(false);
assertFalse(exclusionStrategy.isEnabled());
assertFalse(exclusionStrategy.isExcluded(ResourcesPlugin.getWorkspace().getRoot()));
assertFalse(exclusionStrategy.isExcluded(project.getProject()));
assertFalse(exclusionStrategy.isExcluded(folder));
}
public void testIsExcludedFileNoContextActive() {
ContextCore.getContextManager().deactivateContext(taskId);
assertFalse(ContextCore.getContextManager().isContextActive());
assertTrue(exclusionStrategy.isExcluded(file));
assertTrue(exclusionStrategy.isExcluded(fileInFolder));
}
public void testIsExcludedFileContextActiveNoChange() {
assertTrue(ContextCore.getContextManager().isContextActive());
assertTrue(exclusionStrategy.isExcluded(file));
assertTrue(exclusionStrategy.isExcluded(fileInFolder));
}
public void testIsExcludedFileContextActiveChanged() throws CoreException {
assertTrue(ContextCore.getContextManager().isContextActive());
assertNotNull(exclusionStrategy.getLastActivatedDate());
file.setLocalTimeStamp(new Date().getTime());
assertFalse(exclusionStrategy.isExcluded(file));
assertFalse(exclusionStrategy.isExcluded(folder));
assertTrue(exclusionStrategy.isExcluded(fileInFolder));
}
public void testIsExcludedFileContextActiveChangedDateRounded() throws CoreException {
// some OS's round to the nearest second, so we need to make sure to handle this case
assertTrue(ContextCore.getContextManager().isContextActive());
Date lastActivatedDate = exclusionStrategy.getLastActivatedDate();
assertNotNull(lastActivatedDate);
long time = lastActivatedDate.getTime();
time -= time % 1000d;
file.setLocalTimeStamp(time);
assertFalse(exclusionStrategy.isExcluded(file));
assertFalse(exclusionStrategy.isExcluded(folder));
assertTrue(exclusionStrategy.isExcluded(fileInFolder));
}
public void testIsExcludedFileContextActiveReallyOld() throws CoreException {
// some OS's round to the nearest second, so we need to make sure to handle this case
assertTrue(ContextCore.getContextManager().isContextActive());
Date lastActivatedDate = exclusionStrategy.getLastActivatedDate();
assertNotNull(lastActivatedDate);
long time = lastActivatedDate.getTime();
time -= 1000 * 60 * 10;
file.setLocalTimeStamp(time);
assertFalse(exclusionStrategy.isExcluded(folder));
assertTrue(exclusionStrategy.isExcluded(file));
assertTrue(exclusionStrategy.isExcluded(fileInFolder));
}
public void testIsExcludedFileContextActiveReallyNew() throws CoreException {
// some OS's round to the nearest second, so we need to make sure to handle this case
assertTrue(ContextCore.getContextManager().isContextActive());
Date lastActivatedDate = exclusionStrategy.getLastActivatedDate();
assertNotNull(lastActivatedDate);
long time = lastActivatedDate.getTime();
time += 1000 * 60 * 10;
fileInFolder.setLocalTimeStamp(time);
assertFalse(exclusionStrategy.isExcluded(fileInFolder));
assertFalse(exclusionStrategy.isExcluded(folder));
assertTrue(exclusionStrategy.isExcluded(file));
}
public void testWasModifiedAfterNullDate() {
assertFalse(exclusionStrategy.wasModifiedAfter(null, null));
assertFalse(exclusionStrategy.wasModifiedAfter(file, null));
assertFalse(exclusionStrategy.wasModifiedAfter(folder, null));
}
}