package com.yoghurt.crypto.transactions.client.util.transaction;
import java.util.ArrayList;
import java.util.Map.Entry;
import org.junit.Assert;
import org.junit.Test;
import com.googlecode.gwt.crypto.bouncycastle.util.encoders.Hex;
import com.yoghurt.crypto.transactions.client.util.transaction.TransactionEncodeUtil;
import com.yoghurt.crypto.transactions.client.util.transaction.TransactionParseUtil;
import com.yoghurt.crypto.transactions.shared.domain.RawTransactionContainer;
import com.yoghurt.crypto.transactions.shared.domain.Transaction;
import com.yoghurt.crypto.transactions.shared.domain.TransactionPartType;
public class TransactionEncodeUtilTest {
private static final String TEST_TX = "01000000016d5412cdc802cee86b4f939ed7fc77c158193ce744f1117b5c6b67a4d70c046b010000006c493046022100be69797cf5d784412b1258256eb657c191a04893479dfa2ae5c7f2088c7adbe0022100e6b000bd633b286ed1b9bc7682fe753d9fdad61fbe5da2a6e9444198e33a670f012102f0e17f9afb1dca5ab9058b7021ba9fcbedecf4fac0f1c9e0fd96c4fdc200c1c2ffffffff0245a87edb080000001976a9147d4e6d55e1dffb0df85f509343451d170d14755188ac60e31600000000001976a9143bc576e6960a9d45201ba5087e39224d0a05a07988ac00000000";
@Test
public void testConsistency() {
final Transaction tx = TransactionParseUtil.parseTransactionBytes(Hex.decode(TEST_TX));
final RawTransactionContainer reencoded = TransactionEncodeUtil.encodeTransaction(tx);
final ArrayList<Byte> bytes = new ArrayList<Byte>();
for (final Entry<TransactionPartType, byte[]> part : reencoded) {
for (final byte bite : part.getValue()) {
bytes.add(bite);
}
}
final byte[] primitiveBytes = new byte[bytes.size()];
int i = 0;
for(final byte bite : bytes) {
primitiveBytes[i++] = bite;
}
final byte[] encode = Hex.encode(primitiveBytes);
Assert.assertEquals(TEST_TX, new String(encode));
}
}