2018-06-13 15:48:28 +00:00
|
|
|
package test;
|
|
|
|
|
|
|
|
import static org.junit.Assert.*;
|
|
|
|
|
|
|
|
import java.sql.SQLException;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import org.junit.Test;
|
|
|
|
|
|
|
|
import data.block.BlockData;
|
|
|
|
import data.transaction.GenesisTransactionData;
|
|
|
|
import data.transaction.TransactionData;
|
|
|
|
import qora.block.Block;
|
|
|
|
import qora.block.GenesisBlock;
|
|
|
|
import qora.transaction.GenesisTransaction;
|
|
|
|
import qora.transaction.Transaction;
|
|
|
|
import repository.DataException;
|
|
|
|
import repository.Repository;
|
|
|
|
import repository.RepositoryManager;
|
|
|
|
import transform.TransformationException;
|
|
|
|
import transform.transaction.TransactionTransformer;
|
|
|
|
|
|
|
|
public class TransactionTests extends Common {
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testGenesisSerialization() throws TransformationException, DataException {
|
2018-06-13 16:46:51 +00:00
|
|
|
try (final Repository repository = RepositoryManager.getRepository()) {
|
|
|
|
GenesisBlock block = new GenesisBlock(repository);
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-13 16:46:51 +00:00
|
|
|
GenesisTransaction transaction = (GenesisTransaction) block.getTransactions().get(1);
|
|
|
|
assertNotNull(transaction);
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-13 16:46:51 +00:00
|
|
|
GenesisTransactionData genesisTransactionData = (GenesisTransactionData) transaction.getTransactionData();
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-13 16:46:51 +00:00
|
|
|
System.out.println(genesisTransactionData.getTimestamp() + ": " + genesisTransactionData.getRecipient() + " received "
|
|
|
|
+ genesisTransactionData.getAmount().toPlainString());
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-13 16:46:51 +00:00
|
|
|
byte[] bytes = TransactionTransformer.toBytes(genesisTransactionData);
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-13 16:46:51 +00:00
|
|
|
GenesisTransactionData parsedTransactionData = (GenesisTransactionData) TransactionTransformer.fromBytes(bytes);
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-13 16:46:51 +00:00
|
|
|
System.out.println(parsedTransactionData.getTimestamp() + ": " + parsedTransactionData.getRecipient() + " received "
|
|
|
|
+ parsedTransactionData.getAmount().toPlainString());
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-14 08:03:12 +00:00
|
|
|
/*
|
|
|
|
* NOTE: parsedTransactionData.getSignature() will be null as no signature is present in serialized bytes and calculating the signature is performed
|
|
|
|
* by GenesisTransaction, not GenesisTransactionData
|
|
|
|
*/
|
|
|
|
// Not applicable: assertTrue(Arrays.equals(genesisTransactionData.getSignature(), parsedTransactionData.getSignature()));
|
|
|
|
|
|
|
|
GenesisTransaction parsedTransaction = new GenesisTransaction(repository, parsedTransactionData);
|
|
|
|
assertTrue(Arrays.equals(genesisTransactionData.getSignature(), parsedTransaction.getTransactionData().getSignature()));
|
2018-06-13 16:46:51 +00:00
|
|
|
}
|
2018-06-13 15:48:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void testGenericSerialization(TransactionData transactionData) throws TransformationException {
|
|
|
|
assertNotNull(transactionData);
|
|
|
|
|
|
|
|
byte[] bytes = TransactionTransformer.toBytes(transactionData);
|
|
|
|
|
|
|
|
TransactionData parsedTransactionData = TransactionTransformer.fromBytes(bytes);
|
|
|
|
|
|
|
|
assertTrue(Arrays.equals(transactionData.getSignature(), parsedTransactionData.getSignature()));
|
|
|
|
|
|
|
|
assertEquals(TransactionTransformer.getDataLength(transactionData), bytes.length);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testPaymentSerialization() throws TransformationException, DataException {
|
2018-06-13 16:46:51 +00:00
|
|
|
try (final Repository repository = RepositoryManager.getRepository()) {
|
|
|
|
// Block 949 has lots of varied transactions
|
|
|
|
// Blocks 390 & 754 have only payment transactions
|
|
|
|
BlockData blockData = repository.getBlockRepository().fromHeight(754);
|
|
|
|
assertNotNull("Block 754 is required for this test", blockData);
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-13 16:46:51 +00:00
|
|
|
Block block = new Block(repository, blockData);
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-13 16:46:51 +00:00
|
|
|
List<Transaction> transactions = block.getTransactions();
|
|
|
|
assertNotNull(transactions);
|
2018-06-13 15:48:28 +00:00
|
|
|
|
2018-06-13 16:46:51 +00:00
|
|
|
for (Transaction transaction : transactions)
|
|
|
|
testGenericSerialization(transaction.getTransactionData());
|
|
|
|
}
|
2018-06-13 15:48:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testMessageSerialization() throws SQLException, TransformationException {
|
|
|
|
// Message transactions went live block 99000
|
|
|
|
// Some transactions to be found in block 99001/2/5/6
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|