Christian Baltzer
6 years ago
5 changed files with 182 additions and 0 deletions
-
5pom.xml
-
15src/main/java/ugsbo/com/buchhaltung/Auswertung.java
-
67src/main/java/ugsbo/com/buchhaltung/Block.java
-
32src/main/java/ugsbo/com/buchhaltung/Blockchain.java
-
63src/test/java/com/ugsbo/Buchhaltung/Test_Blockchain.java
@ -0,0 +1,15 @@ |
|||
package ugsbo.com.buchhaltung; |
|||
|
|||
public class Auswertung { |
|||
|
|||
public static void main(String[] args) { |
|||
// TODO Auto-generated method stub |
|||
Blockchain Work = new Blockchain(); |
|||
Work.add(50); |
|||
Work.add(-20); |
|||
|
|||
System.out.println(Work.kontostand()); |
|||
System.out.print(Work.toString()); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,67 @@ |
|||
package ugsbo.com.buchhaltung; |
|||
|
|||
import java.security.MessageDigest; |
|||
|
|||
public class Block { |
|||
|
|||
|
|||
int data; |
|||
int kontostand; |
|||
Block vorher; |
|||
|
|||
String ownHash; |
|||
String previousHash; |
|||
|
|||
|
|||
//erste Block |
|||
public Block(int data) { |
|||
this.data = data; |
|||
ownHash = createNewHash(Integer.toString(data)); |
|||
|
|||
kontostand = this.data; |
|||
|
|||
this.vorher = null; |
|||
this.previousHash = null; |
|||
} |
|||
|
|||
//Alle anderen Blöcke |
|||
public Block(int data, Block vorher, String previousHash, int konto) { |
|||
this.data = data; |
|||
ownHash = createNewHash(Integer.toString(data)+previousHash); |
|||
|
|||
kontostand = konto + this.data; |
|||
|
|||
this.vorher = vorher; |
|||
this.previousHash = previousHash; |
|||
} |
|||
|
|||
private String createNewHash(String input) { |
|||
try { |
|||
MessageDigest digest = MessageDigest.getInstance("SHA-256"); |
|||
//Applies sha256 to our input, |
|||
byte[] hash = digest.digest(input.getBytes("UTF-8")); |
|||
StringBuffer hexString = new StringBuffer(); // This will contain hash as hexidecimal |
|||
for (int i = 0; i < hash.length; i++) { |
|||
String hex = Integer.toHexString(0xff & hash[i]); |
|||
if(hex.length() == 1) hexString.append('0'); |
|||
hexString.append(hex); |
|||
} |
|||
return hexString.toString(); |
|||
} |
|||
catch(Exception e) { |
|||
throw new RuntimeException(e); |
|||
} |
|||
} |
|||
|
|||
public int getKontostand() { |
|||
return kontostand; |
|||
} |
|||
|
|||
public Block getVorher() { |
|||
return vorher; |
|||
} |
|||
|
|||
public String getHash() { |
|||
return ownHash; |
|||
} |
|||
} |
@ -0,0 +1,32 @@ |
|||
package ugsbo.com.buchhaltung; |
|||
|
|||
import com.google.gson.*; |
|||
|
|||
public class Blockchain { |
|||
|
|||
Block Workingobjekt; |
|||
|
|||
|
|||
public Blockchain() { |
|||
Workingobjekt = new Block(0); |
|||
} |
|||
|
|||
|
|||
public void add(int eingabe) { |
|||
Block newWorkingobjekt = new Block(eingabe, Workingobjekt, Workingobjekt.getHash(), Workingobjekt.getKontostand()); |
|||
|
|||
Workingobjekt = newWorkingobjekt; |
|||
} |
|||
|
|||
|
|||
public int kontostand() { |
|||
return Workingobjekt.getKontostand(); |
|||
} |
|||
|
|||
public String toString() { |
|||
String JSON = new GsonBuilder().setPrettyPrinting().create().toJson(Workingobjekt); |
|||
return JSON; |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,63 @@ |
|||
package com.ugsbo.Buchhaltung; |
|||
|
|||
import static org.junit.Assert.*; |
|||
import org.junit.Before; |
|||
import org.junit.Test; |
|||
import ugsbo.com.buchhaltung.Blockchain; |
|||
|
|||
public class Test_Blockchain { |
|||
|
|||
public Blockchain Workingobjekt; |
|||
|
|||
@Before |
|||
public void setUp() throws Exception { |
|||
Workingobjekt = new Blockchain(); |
|||
} |
|||
|
|||
@Test |
|||
public void hinzufügen() { |
|||
int eingabe = 500; |
|||
int ergebnis; |
|||
|
|||
Workingobjekt.add(eingabe); |
|||
ergebnis = Workingobjekt.kontostand(); |
|||
|
|||
assertEquals("eingabe und Ergebnis sind gleich", eingabe, ergebnis); |
|||
} |
|||
|
|||
@Test |
|||
public void hinzufügenNegativ() { |
|||
int eingabe = -500; |
|||
int ergebnis; |
|||
|
|||
Workingobjekt.add(eingabe); |
|||
ergebnis = Workingobjekt.kontostand(); |
|||
|
|||
assertEquals("eingabe und Ergebnis sind gleich", eingabe, ergebnis); |
|||
} |
|||
|
|||
@Test |
|||
public void hinzufügenIstNull() { |
|||
int eingabe = 0; |
|||
int ergebnis; |
|||
|
|||
Workingobjekt.add(eingabe); |
|||
ergebnis = Workingobjekt.kontostand(); |
|||
|
|||
assertEquals("eingabe und Ergebnis sind gleich", eingabe, ergebnis); |
|||
} |
|||
|
|||
@Test |
|||
public void hinzufügenMehrAlsEinmal() { |
|||
int eingabe = 100; |
|||
int erwartet = 300; |
|||
int ergebnis; |
|||
|
|||
Workingobjekt.add(eingabe); |
|||
Workingobjekt.add(eingabe); |
|||
Workingobjekt.add(eingabe); |
|||
ergebnis = Workingobjekt.kontostand(); |
|||
|
|||
assertEquals("eingabe und Ergebnis sind gleich", erwartet, ergebnis); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue