package org.exist.xquery.value; import org.easymock.EasyMock; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.isA; import org.exist.xquery.XPathException; import org.junit.Test; import static org.junit.Assert.assertEquals; /** * @author Adam Retter <adam@existsolutions.com> */ public class BinaryValueTest { @Test public void cast_base64_to_base64() throws XPathException { final BinaryValueManager binaryValueManager = new MockBinaryValueManager(); final BinaryValue mockBase64BinaryValue = EasyMock.createMockBuilder(BinaryValue.class) .withConstructor(BinaryValueManager.class, BinaryValueType.class) .withArgs(binaryValueManager, new Base64BinaryValueType()) .createMock(); replay(mockBase64BinaryValue); final AtomicValue result = mockBase64BinaryValue.convertTo(Type.BASE64_BINARY); verify(mockBase64BinaryValue); assertEquals(mockBase64BinaryValue, result); } @Test public void cast_base64_to_hexBinary() throws XPathException { final BinaryValueManager binaryValueManager = new MockBinaryValueManager(); final BinaryValue mockBase64BinaryValue = EasyMock.createMockBuilder(BinaryValue.class) .withConstructor(BinaryValueManager.class, BinaryValueType.class) .withArgs(binaryValueManager, new Base64BinaryValueType()) .addMockedMethod("convertTo", BinaryValueType.class) .createMock(); final BinaryValue mockHexBinaryValue = EasyMock.createMockBuilder(BinaryValue.class) .withConstructor(BinaryValueManager.class, BinaryValueType.class) .withArgs(binaryValueManager, new HexBinaryValueType()) .createMock(); expect(mockBase64BinaryValue.convertTo(isA(HexBinaryValueType.class))).andReturn(mockHexBinaryValue); replay(mockBase64BinaryValue, mockHexBinaryValue); final AtomicValue result = mockBase64BinaryValue.convertTo(Type.HEX_BINARY); verify(mockBase64BinaryValue, mockHexBinaryValue); assertEquals(mockHexBinaryValue, result); } @Test public void cast_hexBinary_to_hexBase64() throws XPathException { final BinaryValueManager binaryValueManager = new MockBinaryValueManager(); final BinaryValue mockHexBinaryValue = EasyMock.createMockBuilder(BinaryValue.class) .withConstructor(BinaryValueManager.class, BinaryValueType.class) .withArgs(binaryValueManager, new HexBinaryValueType()) .addMockedMethod("convertTo", BinaryValueType.class) .createMock(); final BinaryValue mockBase64BinaryValue = EasyMock.createMockBuilder(BinaryValue.class) .withConstructor(BinaryValueManager.class, BinaryValueType.class) .withArgs(binaryValueManager, new Base64BinaryValueType()) .createMock(); expect(mockHexBinaryValue.convertTo(isA(Base64BinaryValueType.class))).andReturn(mockBase64BinaryValue); replay(mockHexBinaryValue, mockBase64BinaryValue); final AtomicValue result = mockHexBinaryValue.convertTo(Type.BASE64_BINARY); verify(mockHexBinaryValue, mockBase64BinaryValue); assertEquals(mockBase64BinaryValue, result); } }