Bug 376601 - [sfs] Implement additional unit tests
diff --git a/tests/org.eclipse.core.resources.semantic.test/src/org/eclipse/core/resources/semantic/test/TestCacheService.java b/tests/org.eclipse.core.resources.semantic.test/src/org/eclipse/core/resources/semantic/test/TestCacheService.java
index 39c9cc3..ac04743 100644
--- a/tests/org.eclipse.core.resources.semantic.test/src/org/eclipse/core/resources/semantic/test/TestCacheService.java
+++ b/tests/org.eclipse.core.resources.semantic.test/src/org/eclipse/core/resources/semantic/test/TestCacheService.java
@@ -445,6 +445,28 @@
}
/**
+ * @throws Exception
+ */
+ @Test
+ public void testEmptyContentFile() throws Exception {
+ ICacheService service = new FileCacheServiceFactory().getCacheService();
+
+ IPath path = new Path("/test4/file.txt");
+ String content = "test";
+ InputStream input = new ByteArrayInputStream(content.getBytes("UTF-8"));
+
+ writeToCache(service, path, input);
+
+ readFromCache(service, path, content);
+
+ InputStream input2 = new ByteArrayInputStream(new byte[0]);
+
+ writeToCache(service, path, input2);
+
+ readFromCache(service, path, "");
+ }
+
+ /**
* @param service
* @param path
* @throws CoreException
@@ -633,6 +655,9 @@
byte b[] = new byte[content.length() + 2];
int size = is.read(b);
+ if (size == -1 && content.length() == 0) {
+ return;
+ }
Assert.assertEquals(content.length(), size);
for (int i = 0; i < size; i++) {
diff --git a/tests/org.eclipse.core.resources.semantic.test/src/org/eclipse/core/resources/semantic/test/TestsLinkedResources.java b/tests/org.eclipse.core.resources.semantic.test/src/org/eclipse/core/resources/semantic/test/TestsLinkedResources.java
index 6180648..b5118a0 100644
--- a/tests/org.eclipse.core.resources.semantic.test/src/org/eclipse/core/resources/semantic/test/TestsLinkedResources.java
+++ b/tests/org.eclipse.core.resources.semantic.test/src/org/eclipse/core/resources/semantic/test/TestsLinkedResources.java
@@ -17,6 +17,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
+import java.util.Map;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
@@ -39,7 +40,9 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.core.runtime.Status;
+import org.eclipse.team.core.RepositoryProvider;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -293,6 +296,50 @@
}
@Test
+ public void testAddProjectQueryLinkWithProviderToSFS() throws Exception {
+ final IProject project = workspace.getRoot().getProject("LinkedProject");
+
+ if (project.exists()) {
+ throw new IllegalStateException("Project exists");
+ }
+
+ IWorkspaceRunnable myRunnable = new IWorkspaceRunnable() {
+ public void run(IProgressMonitor monitor) throws CoreException {
+ IProject project = workspace.getRoot().getProject("LinkedProject");
+
+ IProjectDescription description = workspace.newProjectDescription("LinkedProject");
+
+ try {
+ URI uri = new URI(ISemanticFileSystem.SCHEME, null, "/LinkedProject", "type=project;create=true;provider="
+ + "org.eclipse.core.resources.semantic.test.provider.MemoryCachingTestContentProvider", null);
+ description.setLocationURI(uri);
+ } catch (URISyntaxException e) {
+ // really not likely, though
+ throw new RuntimeException(e);
+ }
+ project.create(description, monitor);
+ project.open(monitor);
+
+ // for SFS, we map this to the team provider
+ RepositoryProvider.map(project, ISemanticFileSystem.SFS_REPOSITORY_PROVIDER);
+
+ ISemanticProject spr = (ISemanticProject) project.getAdapter(ISemanticProject.class);
+
+ Map<QualifiedName, String> props = spr.getPersistentProperties();
+
+ props.size();
+
+ project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+
+ }
+
+ };
+
+ workspace.run(myRunnable, workspace.getRoot(), IWorkspace.AVOID_UPDATE, null);
+
+ }
+
+ @Test
public void testAddQueryLinkWithProviderToSFS() throws Exception {
final IFolder folder = this.testProject.getFolder("querytest2");