Create tests
This commit is contained in:
parent
b791bef037
commit
098e21c3ec
10
DzieCoin.iml
10
DzieCoin.iml
|
@ -14,5 +14,15 @@
|
||||||
<orderEntry type="library" name="mysql.connector.java" level="project" />
|
<orderEntry type="library" name="mysql.connector.java" level="project" />
|
||||||
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.30" level="project" />
|
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.30" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.github.davidmoten:commons-csv:1.6.002" level="project" />
|
<orderEntry type="library" name="Maven: com.github.davidmoten:commons-csv:1.6.002" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.9.2" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.9.2" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.9.2" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.2" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.9.2" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.9.2" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.9.2" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
12
pom.xml
12
pom.xml
|
@ -25,5 +25,17 @@
|
||||||
<artifactId>commons-csv</artifactId>
|
<artifactId>commons-csv</artifactId>
|
||||||
<version>1.6.002</version>
|
<version>1.6.002</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>RELEASE</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter</artifactId>
|
||||||
|
<version>RELEASE</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
|
@ -21,7 +21,7 @@ public class NFT extends BlockData {
|
||||||
public String getContract() {
|
public String getContract() {
|
||||||
return contract;
|
return contract;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getData() {
|
public String getData() {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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<Transaction> 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<Transaction> 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<Transaction> 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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<Transaction> 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<Transaction> 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<Transaction> 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<Transaction> 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<Transaction> 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<Transaction> 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<Map<String, Object>> rows = db.query("SELECT * FROM test");
|
||||||
|
int numRows = rows.size();
|
||||||
|
|
||||||
|
assertEquals(0, numRows);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void insertAndDelete() {
|
||||||
|
DatabaseConnection db = new DatabaseConnection();
|
||||||
|
|
||||||
|
List<Map<String, Object>> before = db.query("SELECT * FROM test");
|
||||||
|
int numRowsBefore = before.size();
|
||||||
|
|
||||||
|
db.update("INSERT INTO test VALUES (null, 'aaa')");
|
||||||
|
|
||||||
|
List<Map<String, Object>> rowsAfter = db.query("SELECT * FROM test");
|
||||||
|
int numRowsAfter = rowsAfter.size();
|
||||||
|
|
||||||
|
assertEquals(numRowsBefore + 1, numRowsAfter);
|
||||||
|
|
||||||
|
db.update("DELETE FROM test");
|
||||||
|
|
||||||
|
List<Map<String, Object>> rowsDeleted = db.query("SELECT * FROM test");
|
||||||
|
int numRowsDeleted = rowsDeleted.size();
|
||||||
|
|
||||||
|
assertEquals(numRowsAfter - 1, numRowsDeleted);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue