/**
 * 
 */
package anoncard;

import static org.junit.Assert.*;

import mixconfig.tools.dataretention.smartcard.ApduConstants;
import mixconfig.tools.dataretention.smartcard.Helpers;

import org.junit.Test;

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

	/**
	 * Test method for {@link anoncard.LogEntry#getData()}.
	 */
	@Test
	public void testGetData() {
		LogEntry entry;
		byte instruction = 0x12;
		boolean succeeded = true;
		byte[] message_prefix = null;
		byte[] message = null;
		byte[] expected;

		entry = new LogEntry(instruction, message);
		expected = Helpers.concatenate(new byte[] { instruction, (succeeded ? ApduConstants.TRUE : ApduConstants.FALSE) }, message_prefix);
		expected = Helpers.concatenate(expected, message);
		assertArrayEquals(expected, entry.getData());

		message_prefix = Helpers.stringToUtf8Bytes("Hello ");
		message = null;
		succeeded = false;
		entry = new LogEntry(instruction, message_prefix, message, succeeded);
		expected = Helpers.concatenate(new byte[] { instruction, (succeeded ? ApduConstants.TRUE : ApduConstants.FALSE) }, message_prefix);
		expected = Helpers.concatenate(expected, message);
		assertArrayEquals(expected, entry.getData());
		
		message_prefix = null;
		message = Helpers.stringToUtf8Bytes("World!");
		succeeded = true;
		entry = new LogEntry(instruction, message_prefix, message);
		expected = Helpers.concatenate(new byte[] { instruction, (succeeded ? ApduConstants.TRUE : ApduConstants.FALSE) }, message_prefix);
		expected = Helpers.concatenate(expected, message);
		assertArrayEquals(expected, entry.getData());
		
		message_prefix = Helpers.stringToUtf8Bytes("Hello ");
		message = Helpers.stringToUtf8Bytes("World!");
		succeeded = false;
		entry = new LogEntry(instruction, message_prefix, message, succeeded);
		expected = Helpers.concatenate(new byte[] { instruction, (succeeded ? ApduConstants.TRUE : ApduConstants.FALSE) }, message_prefix);
		expected = Helpers.concatenate(expected, message);
		assertArrayEquals(expected, entry.getData());
	}
}
