/**
 * 
 */
package mixconfig.tools.dataretention.smartcard;

import static org.junit.Assert.*;

import org.junit.Test;

/**
 * @author christoph
 * 
 */
public class HelpersTest {

	/**
	 * Test method for
	 * {@link mixconfig.tools.dataretention.smartcard.Helpers#copyOfRange(byte[], int, int)}
	 * .
	 */
	@Test
	public void testCopyOfRange() {
		byte[] data = new byte[] { 0, 1, 2, 3, 4, 5 };

		assertEquals(Helpers.bytesToHexDigits(new byte[] { 0, 1, 2, 3 }), Helpers.bytesToHexDigits(Helpers.copyOfRange(data, 0, 4)));
		assertEquals(Helpers.bytesToHexDigits(new byte[] { 2, 3, 4, 5 }), Helpers.bytesToHexDigits(Helpers.copyOfRange(data, 2, 4)));
		assertEquals(Helpers.bytesToHexDigits(new byte[] { 4, 5 }), Helpers.bytesToHexDigits(Helpers.copyOfRange(data, 4, 4)));
		assertEquals(Helpers.bytesToHexDigits(new byte[] {}), Helpers.bytesToHexDigits(Helpers.copyOfRange(data, 6, 4)));
	}

	/**
	 * Test method for
	 * {@link mixconfig.tools.dataretention.smartcard.Helpers#concatenate(byte[], byte[])}
	 * .
	 */
	@Test
	public void testConcatenate() {
		byte[] head = new byte[] { 0, 1, 2 };
		byte[] tail = new byte[] { 3, 4, 5, 6 };

		assertEquals(Helpers.bytesToHexDigits(new byte[] { 0, 1, 2, 3, 4, 5, 6 }), Helpers.bytesToHexDigits(Helpers.concatenate(head, tail)));
		head = null;
		assertEquals(Helpers.bytesToHexDigits(tail), Helpers.bytesToHexDigits(Helpers.concatenate(head, tail)));
		assertEquals(Helpers.bytesToHexDigits(tail), Helpers.bytesToHexDigits(Helpers.concatenate(tail, head)));
		assertEquals(Helpers.bytesToHexDigits(null), Helpers.bytesToHexDigits(Helpers.concatenate(head, head)));
	}
}
