blob: c48861bf85905482f2953508093edf81390fee51 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2012 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.core.tests.internal.localstore;
import java.io.InputStream;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.filesystem.*;
import org.eclipse.core.internal.localstore.BlobStore;
import org.eclipse.core.internal.utils.UniversalUniqueIdentifier;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
//
public class BlobStoreTest extends LocalStoreTest {
public BlobStoreTest() {
super();
}
public BlobStoreTest(String name) {
super(name);
}
public static Test suite() {
return new TestSuite(BlobStoreTest.class);
}
public void testConstructor() {
/* build scenario */
IFileStore root = createStore();
/* null location */
boolean ok = false;
try {
new BlobStore(null, 0);
} catch (RuntimeException e) {
ok = true;
}
assertTrue("1.1", ok);
/* nonexistent location */
ok = false;
try {
new BlobStore(EFS.getLocalFileSystem().getStore(new Path("../this/path/should/not/be/a/folder")), 128);
} catch (RuntimeException e) {
ok = true;
}
assertTrue("3.1", ok);
/* invalid limit values */
ok = false;
try {
new BlobStore(root, 0);
} catch (RuntimeException e) {
ok = true;
}
assertTrue("4.1", ok);
ok = false;
try {
new BlobStore(root, -1);
} catch (RuntimeException e) {
ok = true;
}
assertTrue("4.2", ok);
ok = false;
try {
new BlobStore(root, 35);
} catch (RuntimeException e) {
ok = true;
}
assertTrue("4.3", ok);
ok = false;
try {
new BlobStore(root, 512);
} catch (RuntimeException e) {
ok = true;
}
assertTrue("4.4", ok);
}
private IFileStore createStore() {
IFileStore root = getTempStore();
try {
root.mkdir(EFS.NONE, null);
} catch (CoreException e1) {
fail("createStore.99", e1);
}
IFileInfo info = root.fetchInfo();
assertTrue("createStore.1", info.exists());
assertTrue("createStore.2", info.isDirectory());
return root;
}
public void testDeleteBlob() {
/* initialize common objects */
IFileStore root = createStore();
BlobStore store = new BlobStore(root, 64);
/* delete blob that does not exist */
UniversalUniqueIdentifier uuid = new UniversalUniqueIdentifier();
assertTrue("2.1", !store.fileFor(uuid).fetchInfo().exists());
store.deleteBlob(uuid);
assertTrue("2.2", !store.fileFor(uuid).fetchInfo().exists());
/* delete existing blob */
IFileStore target = root.getChild("target");
try {
createFile(target, "bla bla bla");
uuid = store.addBlob(target, true);
} catch (CoreException e) {
fail("4.1", e);
}
assertTrue("4.2", store.fileFor(uuid).fetchInfo().exists());
store.deleteBlob(uuid);
assertTrue("4.3", !store.fileFor(uuid).fetchInfo().exists());
}
public void testGetBlob() {
/* initialize common objects */
IFileStore root = createStore();
BlobStore store = new BlobStore(root, 64);
/* null UUID */
boolean ok = false;
try {
store.getBlob(null);
} catch (RuntimeException e) {
ok = true;
} catch (CoreException e) {
fail("2.0", e);
}
assertTrue("2.1", ok);
/* get existing blob */
IFileStore target = root.getChild("target");
UniversalUniqueIdentifier uuid = null;
String content = "nothing important........tnatropmi gnihton";
try {
createFile(target, content);
uuid = store.addBlob(target, true);
} catch (CoreException e) {
fail("3.1", e);
}
InputStream input = null;
try {
input = store.getBlob(uuid);
} catch (CoreException e) {
fail("3.4", e);
}
assertTrue("4.1", compareContent(getContents(content), input));
}
public void testSetBlob() {
/* initialize common objects */
IFileStore root = createStore();
BlobStore store = new BlobStore(root, 64);
/* normal conditions */
IFileStore target = root.getChild("target");
UniversalUniqueIdentifier uuid = null;
String content = "nothing important........tnatropmi gnihton";
try {
createFile(target, content);
uuid = store.addBlob(target, true);
} catch (CoreException e) {
fail("2.1", e);
}
InputStream input = null;
try {
input = store.getBlob(uuid);
} catch (CoreException e) {
fail("2.4", e);
}
assertTrue("2.5", compareContent(getContents(content), input));
}
}