/*
* $Id$
*
* Copyright 2011 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.formats.utests;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import ome.formats.importer.IObservable;
import ome.formats.importer.ImportConfig;
import ome.formats.importer.ImportEvent;
import ome.formats.importer.util.ErrorContainer;
import ome.formats.importer.util.ErrorHandler;
import ome.formats.importer.util.HtmlMessengerException;
import org.testng.annotations.Test;
/**
* Various configuration workflows
*
* @author Josh Moore, josh at glencoesoftware.com
* @since Beta4.4
*/
@Test
public class ErrorHandlerTest extends TestCase {
class MyErrorHandler extends ErrorHandler {
private final boolean _sendFiles;
private final boolean _sendLog;
private Integer posts = null;
private Integer uploads = null;
public MyErrorHandler(ImportConfig config, boolean sendFiles,
boolean sendLog) {
super(config);
this._sendFiles = sendFiles;
this._sendLog = sendLog;
}
@Override
public void executePost(String sendUrl, Map<String, String> postList)
throws HtmlMessengerException {
List<String> selectedFiles = new ArrayList<String>();
for (int i = 0; i < postList.size(); i++) {
String part = postList.get(i);
if (part.equals("selected_file")) {
selectedFiles.add(""+part);
}
}
posts = selectedFiles.size();
}
@Override
public void uploadFile(ErrorContainer errorContainer) {
uploads = errorContainer.getFiles().length;
}
@Override
protected void onUpdate(IObservable observable, ImportEvent event) {
if (event instanceof ImportEvent.DEBUG_SEND) {
ImportEvent.DEBUG_SEND send = (ImportEvent.DEBUG_SEND) event;
assertEquals(_sendFiles, send.sendFiles);
assertEquals(_sendLog, send.sendLogs);
// Copied from cli ErrorHandler.onUpdate.
sendFiles = send.sendFiles;
sendLogs = send.sendLogs;
sendErrors();
} else if (event instanceof ErrorHandler.UNKNOWN_FORMAT){
// ignore this one.
} else {
fail("Bad event: " + event);
}
}
}
protected ImportConfig cfg(boolean sendFiles, boolean sendLog) {
final ImportConfig config = new ImportConfig();
config.sendLogFile.set(sendLog);
config.sendFiles.set(sendFiles);
return config;
}
protected ImportEvent err() {
return new ErrorHandler.UNKNOWN_FORMAT("/tmp/",
new RuntimeException("test"), null);
}
public void testLogsAndFiles() {
ImportConfig cfg = cfg(true, true);
MyErrorHandler handler = new MyErrorHandler(cfg, true, true);
handler.update(null, err());
handler.update(null, new ImportEvent.DEBUG_SEND(true, true));
assertEquals(new Integer(2), handler.uploads);
assertEquals(new Integer(1), handler.posts);
}
public void testLogsNotFiles() {
ImportConfig cfg = cfg(false, true);
MyErrorHandler handler = new MyErrorHandler(cfg, false, true);
handler.update(null, err());
handler.update(null, new ImportEvent.DEBUG_SEND(false, true));
assertEquals(new Integer(1), handler.uploads);
assertEquals(new Integer(0), handler.posts);
}
public void testFilesNotLogs() {
ImportConfig cfg = cfg(true, false);
MyErrorHandler handler = new MyErrorHandler(cfg, true, false);
handler.update(null, err());
handler.update(null, new ImportEvent.DEBUG_SEND(true, false));
assertEquals(new Integer(1), handler.uploads);
assertEquals(new Integer(1), handler.posts);
}
public void testNeitherFilesNorLogs() {
ImportConfig cfg = cfg(false, false);
MyErrorHandler handler = new MyErrorHandler(cfg, false, false);
handler.update(null, err());
handler.update(null, new ImportEvent.DEBUG_SEND(false, false));
assertEquals(null, handler.uploads);
assertEquals(new Integer(0), handler.posts);
}
}