package org.exist.xquery.value;
import java.io.FilterInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.exist.xquery.XPathException;
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;
/**
*
* @author Adam Retter <adam@existsolutions.com>
*/
public class BinaryValueFromInputStreamTest {
@Test
public void getInputStream() throws XPathException, IOException {
BinaryValueManager binaryValueManager = new MockBinaryValueManager();
try{
final byte[] testData = "test data".getBytes();
InputStream bais = new FilterInputStream(new ByteArrayInputStream(testData)) {
@Override
public boolean markSupported() {
return false;
}
};
BinaryValue binaryValue = BinaryValueFromInputStream.getInstance(binaryValueManager, new Base64BinaryValueType(), bais);
InputStream is = binaryValue.getInputStream();
int read = -1;
byte buf[] = new byte[1024];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((read = is.read(buf)) > -1) {
baos.write(buf, 0, read);
}
assertArrayEquals(testData, baos.toByteArray());
} finally {
binaryValueManager.runCleanupTasks();
}
}
}