package org.concord.otrunk.test2;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import javax.swing.ImageIcon;
import junit.framework.TestCase;
import org.concord.utilities.InstallationResponseCache;
public class CacheTest extends TestCase {
private class Cacher {
Object object;
public void fetchImageReader(String url) throws IOException {
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("png");
ImageReader reader = readers.next();
InputStream source = new URL(url).openStream(); // File or InputStream
ImageInputStream iis = ImageIO.createImageInputStream(source);
reader.setInput(iis,false);
object = reader.read(0);
reader.dispose();
}
public void fetchUrl(String url) throws Exception {
InputStream stream = new URL(url).openStream();
ArrayList<Integer> bytes = new ArrayList<Integer>();
// Mark is apparently not supported by the input stream returned by URL.openStream()
// stream.mark(100);
// byte[] myBytes = new byte[45];
// stream.read(myBytes, 0, 45);
// stream.reset();
int val = stream.read();
while (val != -1) {
bytes.add(val);
val = stream.read();
}
object = bytes;
}
public void fetchImageIcon(String url) throws Exception {
ImageIcon icon = new ImageIcon(new URL(url));
// while (icon.getImageLoadStatus() == MediaTracker.LOADING) {
// Thread.sleep(100);
// }
// JFrame frame = new JFrame();
// JButton button = new JButton(icon);
// frame.getContentPane().add(button);
// frame.pack();
// frame.setVisible(true);
// Thread.sleep(2000);
object = new ImageIcon(url).getImage();
// frame.dispose();
}
public Object getObject() {
return object;
}
}
public void testImageReaderEqual() throws Exception {
InstallationResponseCache.installResponseCache();
InstallationResponseCache.clearCache();
System.err.flush();
System.out.println("Running Image Reader Test");
System.out.flush();
Cacher test1 = new Cacher();
test1.fetchImageReader("http://udl.concord.org/share/models/netlogo/aspenleaftrans.png");
Cacher test2 = new Cacher();
test2.fetchImageReader("http://udl.concord.org/share/models/netlogo/aspenleaftrans.png");
// XXX These should equal each other, but apparently BufferedImage doesn't implement the equal() method well...
assertEquals(false, test1.getObject().equals(test2.getObject()));
}
public void testUrlReaderEqual() throws Exception {
InstallationResponseCache.installResponseCache();
InstallationResponseCache.clearCache();
System.err.flush();
System.out.println("Running Direct Download Test");
System.out.flush();
Cacher test1 = new Cacher();
test1.fetchUrl("http://udl.concord.org/share/models/netlogo/aspenleaftrans.png");
Cacher test2 = new Cacher();
test2.fetchUrl("http://udl.concord.org/share/models/netlogo/aspenleaftrans.png");
assertEquals(true, test1.getObject().equals(test2.getObject()));
}
public void testUrlImageIconEqual() throws Exception {
InstallationResponseCache.installResponseCache();
InstallationResponseCache.clearCache();
System.err.flush();
System.out.println("Running Image Icon Test");
System.out.flush();
Cacher test1 = new Cacher();
test1.fetchImageIcon("http://udl.concord.org/share/models/netlogo/aspenleaftrans.png");
Cacher test2 = new Cacher();
test2.fetchImageIcon("http://udl.concord.org/share/models/netlogo/aspenleaftrans.png");
assertEquals(true, test1.getObject().equals(test2.getObject()));
}
}