Files
java-tutorials/java-blockchain/src/test/java/com/baeldung/blockchain/BlockchainUnitTest.java
T

69 lines
2.1 KiB
Java
Raw Normal View History

2019-10-30 22:12:05 +08:00
package com.baeldung.blockchain;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class BlockchainUnitTest {
public static List<Block> blockchain = new ArrayList<Block>();
public static int prefix = 4;
public static String prefixString = new String(new char[prefix]).replace('\0', '0');
@BeforeClass
public static void setUp() {
Block genesisBlock = new Block("The is the Genesis Block.", "0", new Date().getTime());
genesisBlock.mineBlock(prefix);
blockchain.add(genesisBlock);
Block firstBlock = new Block("The is the First Block.", genesisBlock.getHash(), new Date().getTime());
firstBlock.mineBlock(prefix);
blockchain.add(firstBlock);
}
@Test
public void givenBlockchain_whenNewBlockAdded_thenSuccess() {
Block newBlock = new Block("The is a New Block.", blockchain.get(blockchain.size() - 1)
.getHash(), new Date().getTime());
newBlock.mineBlock(prefix);
assertTrue(newBlock.getHash()
.substring(0, prefix)
.equals(prefixString));
blockchain.add(newBlock);
}
@Test
public void givenBlockchain_whenValidated_thenSuccess() {
boolean flag = true;
for (int i = 0; i < blockchain.size(); i++) {
String previousHash = i == 0 ? "0"
: blockchain.get(i - 1)
.getHash();
flag = blockchain.get(i)
.getHash()
.equals(blockchain.get(i)
.calculateBlockHash())
&& previousHash.equals(blockchain.get(i)
.getPreviousHash())
&& blockchain.get(i)
.getHash()
.substring(0, prefix)
.equals(prefixString);
if (!flag)
break;
}
assertTrue(flag);
}
@AfterClass
public static void tearDown() {
blockchain.clear();
}
}