/* See LICENSE for licensing and NOTICE for copyright. */
package org.cryptacular.codec;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import org.cryptacular.FailListener;
import org.cryptacular.util.ByteUtil;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
/**
* Unit test for {@link HexDecoder} class.
*
* @author Middleware Services
*/
@Listeners(FailListener.class)
public class HexDecoderTest
{
@DataProvider(name = "hex-data")
public Object[][] getHexData()
{
return
new Object[][] {
new Object[] {
"41626c652077617320492065726520492073617720656c6261",
"Able was I ere I saw elba",
},
new Object[] {
"41626c652 077617320492065726520492073617720656c626\n1",
"Able was I ere I saw elba",
},
new Object[] {
"41626c652 077617320492065726520492073617720656c626\n",
"Able was I ere I saw elb",
},
new Object[] {
"41:62:6c:65:20:77:61:73:20:49:20:65:72:65:20:49:20:73:61:77:20:65:6c:62:61",
"Able was I ere I saw elba",
},
new Object[] {
"9c63b0547798b60d5e04",
ByteUtil.toString(
new byte[] {
(byte) -100,
(byte) 99,
(byte) -80,
(byte) 84,
(byte) 119,
(byte) -104,
(byte) -74,
(byte) 13,
(byte) 94,
(byte) 4,
}),
},
};
}
@Test(dataProvider = "hex-data")
public void testDecode(final String encoded, final String expected)
throws Exception
{
final HexDecoder decoder = new HexDecoder();
final ByteBuffer output = ByteBuffer.allocate(decoder.outputSize(encoded.length()));
decoder.decode(CharBuffer.wrap(encoded), output);
decoder.finalize(output);
output.flip();
assertEquals(ByteUtil.toString(output), expected);
}
}