package com.twelvemonkeys.imageio.stream; import org.junit.After; import org.junit.Before; import org.junit.Test; import javax.imageio.ImageIO; import javax.imageio.spi.IIORegistry; import java.awt.image.BufferedImage; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import static org.junit.Assert.*; /** * Base64DataURLImageInputStreamTest * * @author <a href="mailto:harald.kuhr@gmail.com">Harald Kuhr</a> * @author last modified by $Author: haraldk$ * @version $Id: Base64DataURLImageInputStreamTest.java,v 1.0 04.09.13 13:47 haraldk Exp$ */ public class Base64DataURLImageInputStreamTest { static final String DATA = "data:image/png;base64,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"; static final Base64DataURLImageInputStreamSpi provider = new Base64DataURLImageInputStreamSpi(); @Before public void init() { IIORegistry.getDefaultInstance().registerServiceProvider(provider); } @After public void destroy() { IIORegistry.getDefaultInstance().deregisterServiceProvider(provider); } @Test public void testRead() throws IOException, InvocationTargetException, InterruptedException { BufferedImage image = ImageIO.read(ImageIO.createImageInputStream(DATA)); assertNotNull(image); assertEquals(56, image.getWidth()); assertEquals(34, image.getHeight()); } }