blob: 9eb1696320b11a1d835c1ab24a9f2d13db510844 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2015 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.tasks.tests;
import java.io.File;
import org.apache.commons.lang.StringUtils;
import org.eclipse.mylyn.internal.tasks.core.data.TaskDataFileManager;
import org.eclipse.mylyn.tasks.core.ITask;
import junit.framework.TestCase;
/**
* @author Alexei Trebounskikh
*/
public class TaskDataFileManagerTest extends TestCase {
private class TestTaskDataFileManager extends TaskDataFileManager {
public String getFileName(ITask task, boolean fileExists) {
return super.getFileName(task, name -> fileExists);
}
}
private final TestTaskDataFileManager fileManager = new TestTaskDataFileManager();
public void testShortFileName() {
// <max, exists, not requires encoding == encoded anyway for backwards compatibility
assertEquals("11111%2520", fileManager.getFileName(TaskTestUtil.createMockTask("11111%20"), true));
// <max, does not exist, not requires encoding == not encoded
assertEquals("11111%20", fileManager.getFileName(TaskTestUtil.createMockTask("11111%20"), false));
// <max, does not exist, requires encoding == encoded
assertEquals("11111%2520%2B", fileManager.getFileName(TaskTestUtil.createMockTask("11111%20+"), false));
// <max, exists, requires encoding == encoded
assertEquals("11111%2520%2B", fileManager.getFileName(TaskTestUtil.createMockTask("11111%20+"), true));
}
public void testLongFileNameThatDoesNotRequireEncoding() {
// >max, does not exist, not requires encoding == not encoded + trimmed
String str = StringUtils.repeat("1", 256);
assertEquals(StringUtils.repeat("1", 242) + ".71634944",
fileManager.getFileName(TaskTestUtil.createMockTask(str), false));
// >max, exists, not requires encoding == use as is
assertEquals(str, fileManager.getFileName(TaskTestUtil.createMockTask(str), true));
}
public void testLongFileNameThatRequiresEncoding() {
// >max, does not exist, requires encoding == encoded + trimmed
String str = "+" + StringUtils.repeat("1", 255);
String result = fileManager.getFileName(TaskTestUtil.createMockTask(str), false);
assertEquals("%2B" + StringUtils.repeat("1", 237) + ".3664039548", result);
// >max, exists, requires encoding == encoded + NOT trimmed
result = fileManager.getFileName(TaskTestUtil.createMockTask(str), true);
assertEquals(str.replaceAll("\\+", "%2B"), result);
}
public void testGetSetDataPath() {
final String path = "path";
fileManager.setDataPath(path);
assertEquals(path, fileManager.getDataPath());
}
public void testGetFile() {
final String path = "path";
fileManager.setDataPath(path);
final String taskId = "taskId";
final File result = fileManager.getFile("url", TaskTestUtil.createMockTask(taskId), "kind");
assertTrue(result.getPath().matches("^" + path + "\\S+" + taskId + "\\.\\S+$"));
}
}