ApplicationStoreTest — test stream provider

This commit is contained in:
Vladimir Krivosheev
2014-09-01 12:04:17 +02:00
parent 2cd3d1bddb
commit b7ca72f78f
@@ -7,13 +7,18 @@ import com.intellij.openapi.components.*;
import com.intellij.openapi.components.impl.stores.*;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.CharsetToolkit;
import com.intellij.testFramework.LightPlatformLangTestCase;
import com.intellij.util.xmlb.XmlSerializerUtil;
import gnu.trove.THashMap;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
public class ApplicationStoreTest extends LightPlatformLangTestCase {
private File testAppConfig;
@@ -53,10 +58,56 @@ public class ApplicationStoreTest extends LightPlatformLangTestCase {
public void testStreamProviderSaveIfSeveralStoragesConfigured() throws Exception {
SeveralStoragesConfigured component = new SeveralStoragesConfigured();
MyStreamProvider streamProvider = new MyStreamProvider();
componentStore.getStateStorageManager().setStreamProvider(streamProvider);
componentStore.initComponent(component, false);
StoreUtil.doSave(componentStore);
}
private static class MyStreamProvider extends StreamProvider {
public final Map<RoamingType, Map<String, String>> data = new THashMap<RoamingType, Map<String, String>>();
@Override
public boolean isEnabled() {
return true;
}
@Override
public void saveContent(@NotNull String fileSpec,
@NotNull byte[] content,
int size,
@NotNull RoamingType roamingType,
boolean async) {
getMap(roamingType).put(fileSpec, new String(content, 0, size, CharsetToolkit.UTF8_CHARSET));
}
private Map<String, String> getMap(@NotNull RoamingType roamingType) {
Map<String, String> map = data.get(roamingType);
if (map == null) {
map = new THashMap<String, String>();
data.put(roamingType, map);
}
return map;
}
@Nullable
@Override
public InputStream loadContent(@NotNull String fileSpec, @NotNull RoamingType roamingType) throws IOException {
String data = getMap(roamingType).get(fileSpec);
return data == null ? null : new ByteArrayInputStream(data.getBytes(CharsetToolkit.UTF8_CHARSET));
}
@Override
public void delete(@NotNull String fileSpec, @NotNull RoamingType roamingType) {
Map<String, String> map = data.get(roamingType);
if (map != null) {
map.remove(fileSpec);
}
}
}
class MyComponentStore extends ComponentStoreImpl implements Disposable {
private final StateStorageManager stateStorageManager;