package org.exist.xquery.value;
import org.apache.commons.codec.binary.Hex;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import org.apache.commons.codec.binary.Base64;
import org.exist.xquery.XPathException;
import java.io.IOException;
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
/**
*
* @author Adam Retter <adam@existsolutions.com>
*/
public class BinaryValueFromBinaryStringTest {
@Test
public void getInputStream() throws XPathException, IOException {
final String testData = "test data";
final String base64TestData = Base64.encodeBase64String(testData.getBytes()).trim();
BinaryValue binaryValue = new BinaryValueFromBinaryString(new Base64BinaryValueType(), base64TestData);
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.getBytes(), baos.toByteArray());
}
@Test
public void cast_base64_to_hexBinary() throws XPathException {
final String testData = "testdata";
final String expectedResult = Hex.encodeHexString(testData.getBytes()).trim();
BinaryValue binaryValue = new BinaryValueFromBinaryString(new Base64BinaryValueType(), Base64.encodeBase64String(testData.getBytes()));
final AtomicValue result = binaryValue.convertTo(new HexBinaryValueType());
assertEquals(expectedResult, result.getStringValue());
}
@Test
public void cast_hexBinary_to_base64() throws XPathException {
final String testData = "testdata";
final String expectedResult = Base64.encodeBase64String(testData.getBytes()).trim();
BinaryValue binaryValue = new BinaryValueFromBinaryString(new HexBinaryValueType(), Hex.encodeHexString(testData.getBytes()));
final AtomicValue result = binaryValue.convertTo(new Base64BinaryValueType());
assertEquals(expectedResult, result.getStringValue());
}
}