diff --git a/DzieCoin.iml b/DzieCoin.iml
index 23fef75..b3d20bc 100644
--- a/DzieCoin.iml
+++ b/DzieCoin.iml
@@ -14,5 +14,15 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 190571a..5721e49 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,5 +25,17 @@
commons-csv
1.6.002
+
+ junit
+ junit
+ RELEASE
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter
+ RELEASE
+ test
+
\ No newline at end of file
diff --git a/src/main/java/pl/mikorosa/dziecoin/NFT.java b/src/main/java/pl/mikorosa/dziecoin/NFT.java
index 0e161b8..9c0904e 100644
--- a/src/main/java/pl/mikorosa/dziecoin/NFT.java
+++ b/src/main/java/pl/mikorosa/dziecoin/NFT.java
@@ -21,7 +21,7 @@ public class NFT extends BlockData {
public String getContract() {
return contract;
}
-
+
public String getData() {
return data;
}
diff --git a/src/test/java/pl/mikorosa/dziecoin/BlockTest.java b/src/test/java/pl/mikorosa/dziecoin/BlockTest.java
new file mode 100644
index 0000000..c7eb271
--- /dev/null
+++ b/src/test/java/pl/mikorosa/dziecoin/BlockTest.java
@@ -0,0 +1,58 @@
+package pl.mikorosa.dziecoin;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class BlockTest {
+ @Test
+ void mineBlock() {
+ Main.difficulty = 4;
+
+ List transactions = new ArrayList<>();
+ transactions.add(new Transaction("1", "2", 1));
+
+ Block block = new Block("0", 1, transactions);
+ block.mineBlock();
+
+ assertEquals(168149, block.getNonce());
+ assertEquals("0000e4942b486fa4779fadc32a1d0dd483e117aa57bc84f6ff5912f9abefef0e", block.getHash());
+ }
+
+ @Test
+ void alterBlock() {
+ Main.difficulty = 2;
+
+ List transactions = new ArrayList<>();
+ transactions.add(new Transaction("1", "2", 1));
+
+ Block block = new Block("0", 1, transactions);
+ block.mineBlock();
+
+ block.getTransactions().add(new Transaction("2", "1", 1));
+
+ Block.VerifyCodes status = block.verifyBlock();
+
+ assertEquals(Block.VerifyCodes.INVALID_BLOCK_HASH, status);
+ }
+
+ @Test
+ void invalidProofOfWork() {
+ Main.difficulty = 2;
+
+ List transactions = new ArrayList<>();
+ transactions.add(new Transaction("1", "2", 1));
+
+ Block block = new Block("0", 1, transactions);
+ block.mineBlock();
+
+ Main.difficulty = 4;
+
+ Block.VerifyCodes status = block.verifyBlock();
+
+ assertEquals(Block.VerifyCodes.INVALID_POW_SIGNATURE, status);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/pl/mikorosa/dziecoin/BlockchainTest.java b/src/test/java/pl/mikorosa/dziecoin/BlockchainTest.java
new file mode 100644
index 0000000..f719966
--- /dev/null
+++ b/src/test/java/pl/mikorosa/dziecoin/BlockchainTest.java
@@ -0,0 +1,105 @@
+package pl.mikorosa.dziecoin;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class BlockchainTest {
+ @Test
+ void blockchainIntegrity() {
+ Main.difficulty = 2;
+ Blockchain b = new Blockchain("1", false);
+
+ List transactions1 = new ArrayList<>();
+ transactions1.add(new Transaction("1", "2", 1));
+
+ Block block1 = new Block(b.getLatestBlock().getHash(), 2, transactions1);
+ block1.mineBlock();
+
+ try {
+ b.addBlock(block1);
+ } catch(BlockchainIntegrityException e) {
+ e.printStackTrace();
+ fail();
+ }
+
+ List transactions2 = new ArrayList<>();
+ transactions2.add(new Transaction("2", "3", 1));
+
+ Block block2 = new Block(block1.getHash(), 3, transactions2);
+ block2.mineBlock();
+
+ try {
+ b.addBlock(block2);
+ } catch (BlockchainIntegrityException e) {
+ fail();
+ }
+ }
+
+ @Test
+ void blockchainVerify() {
+ Main.difficulty = 2;
+ Blockchain b = new Blockchain("1", false);
+
+ List transactions1 = new ArrayList<>();
+ transactions1.add(new Transaction("1", "2", 1));
+
+ Block block1 = new Block(b.getLatestBlock().getHash(), 2, transactions1);
+ block1.mineBlock();
+
+ try {
+ b.addBlock(block1);
+ } catch(BlockchainIntegrityException e) {
+ e.printStackTrace();
+ fail();
+ }
+
+ List transactions2 = new ArrayList<>();
+ transactions2.add(new Transaction("2", "3", 1));
+
+ Block block2 = new Block(block1.getHash(), 3, transactions2);
+ block2.mineBlock();
+
+ try {
+ b.addBlock(block2);
+ } catch (BlockchainIntegrityException e) {
+ fail();
+ }
+
+ assertTrue(b.validateChain() == Block.VerifyCodes.SUCCESS);
+ }
+
+ @Test
+ void blockchainIntegrityExceptionThrown() {
+ Main.difficulty = 2;
+ Blockchain b = new Blockchain("1", false);
+
+ List transactions1 = new ArrayList<>();
+ transactions1.add(new Transaction("1", "2", 1));
+
+ Block block1 = new Block(b.getLatestBlock().getHash(), 2, transactions1);
+ block1.mineBlock();
+
+ try {
+ b.addBlock(block1);
+ } catch(BlockchainIntegrityException e) {
+ e.printStackTrace();
+ fail();
+ }
+
+ List transactions2 = new ArrayList<>();
+ transactions2.add(new Transaction("2", "3", 1));
+
+ Block block2 = new Block("asdf", 3, transactions2);
+ block2.mineBlock();
+
+ try {
+ b.addBlock(block2);
+ } catch (BlockchainIntegrityException e) {
+ return; // pass
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/pl/mikorosa/dziecoin/CalculateHashTest.java b/src/test/java/pl/mikorosa/dziecoin/CalculateHashTest.java
new file mode 100644
index 0000000..4c1a4ae
--- /dev/null
+++ b/src/test/java/pl/mikorosa/dziecoin/CalculateHashTest.java
@@ -0,0 +1,18 @@
+package pl.mikorosa.dziecoin;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class CalculateHashTest {
+
+ @org.junit.jupiter.api.Test
+ void sha256sum() {
+ String resultingHash = CalculateHash.sha256sum("testing");
+ assertEquals("cf80cd8aed482d5d1527d7dc72fceff84e6326592848447d2dc0b0e87dfc9a90", resultingHash);
+ }
+
+ @org.junit.jupiter.api.Test
+ void md5sum() {
+ String resultingHash = CalculateHash.md5sum("testing");
+ assertEquals("ae2b1fca515949e5d54fb22b8ed95575", resultingHash);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/pl/mikorosa/dziecoin/NFTTest.java b/src/test/java/pl/mikorosa/dziecoin/NFTTest.java
new file mode 100644
index 0000000..067ad75
--- /dev/null
+++ b/src/test/java/pl/mikorosa/dziecoin/NFTTest.java
@@ -0,0 +1,16 @@
+package pl.mikorosa.dziecoin;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class NFTTest {
+ @Test
+ void NFTContractGen() {
+ NFT nft = new NFT("stevejobs", "test");
+
+ String hash = CalculateHash.md5sum("stevejobstest");
+
+ assertEquals(hash, nft.getContract());
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/pl/mikorosa/dziecoin/database/DatabaseConnectionTest.java b/src/test/java/pl/mikorosa/dziecoin/database/DatabaseConnectionTest.java
new file mode 100644
index 0000000..93e229a
--- /dev/null
+++ b/src/test/java/pl/mikorosa/dziecoin/database/DatabaseConnectionTest.java
@@ -0,0 +1,42 @@
+package pl.mikorosa.dziecoin.database;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class DatabaseConnectionTest {
+
+ @Test
+ void select() {
+ DatabaseConnection db = new DatabaseConnection();
+ List